Skip to content

Commit 27b9a17

Browse files
authored
Merge pull request #13696 from owncloud/chore/OCISDEV-736/add-web-release-jobs-to-gh-actions
chore: [OCISDEV-736] add web release jobs to gh actions
2 parents ef45c30 + 45f17e1 commit 27b9a17

3 files changed

Lines changed: 199 additions & 0 deletions

File tree

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Release Docker
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- stable-*
8+
tags:
9+
- 'v*'
10+
11+
permissions:
12+
contents: read
13+
14+
jobs:
15+
docker:
16+
name: Build and push Docker image
17+
runs-on: ubuntu-latest
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
21+
22+
- name: Setup pnpm
23+
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
24+
with:
25+
version: 10.29.2
26+
27+
- name: Setup Node.js
28+
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
29+
with:
30+
node-version: 24.15.0
31+
cache: pnpm
32+
33+
- name: Install dependencies
34+
run: pnpm install
35+
36+
- name: Build
37+
run: make dist
38+
env:
39+
NO_INSTALL: "true"
40+
41+
- name: Login to Docker Hub
42+
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
43+
with:
44+
username: ${{ secrets.DOCKER_USERNAME }}
45+
password: ${{ secrets.DOCKER_PASSWORD }}
46+
47+
- name: Docker metadata
48+
id: meta
49+
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
50+
with:
51+
images: owncloud/web
52+
tags: |
53+
type=semver,pattern={{version}}
54+
type=semver,pattern={{major}}.{{minor}}
55+
type=semver,pattern={{major}}
56+
type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/v') }}
57+
type=ref,event=branch
58+
59+
- name: Build and push Docker image
60+
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
61+
with:
62+
context: .
63+
file: docker/Dockerfile
64+
push: true
65+
tags: ${{ steps.meta.outputs.tags }}
66+
labels: ${{ steps.meta.outputs.labels }}

.github/workflows/release-npm.yml

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
name: Release NPM
2+
3+
on:
4+
push:
5+
tags:
6+
- 'babel-preset-v*'
7+
- 'design-system-v*'
8+
- 'eslint-config-v*'
9+
- 'extension-sdk-v*'
10+
- 'prettier-config-v*'
11+
- 'tsconfig-v*'
12+
- 'web-client-v*'
13+
- 'web-pkg-v*'
14+
- 'web-test-helpers-v*'
15+
16+
jobs:
17+
release-npm:
18+
name: Publish NPM package
19+
runs-on: ubuntu-latest
20+
permissions:
21+
contents: read
22+
id-token: write
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
26+
27+
- name: Setup pnpm
28+
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
29+
with:
30+
version: 10.29.2
31+
32+
- name: Setup Node.js
33+
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
34+
with:
35+
node-version: 24.15.0
36+
registry-url: 'https://registry.npmjs.org'
37+
cache: pnpm
38+
39+
- name: Install dependencies
40+
run: pnpm install
41+
42+
- name: Determine package
43+
id: package
44+
run: |
45+
TAG="${{ github.ref_name }}"
46+
PACKAGES="babel-preset design-system eslint-config extension-sdk prettier-config tsconfig web-client web-pkg web-test-helpers"
47+
for pkg in $PACKAGES; do
48+
if [[ "$TAG" == "${pkg}-v"* ]]; then
49+
echo "name=$pkg" >> "$GITHUB_OUTPUT"
50+
echo "version=${TAG#${pkg}-v}" >> "$GITHUB_OUTPUT"
51+
break
52+
fi
53+
done
54+
55+
- name: Verify package version
56+
run: |
57+
PKG="${{ steps.package.outputs.name }}"
58+
VERSION="${{ steps.package.outputs.version }}"
59+
ACTUAL_VERSION=$(jq -r '.version' < "packages/${PKG}/package.json")
60+
echo "Build ${PKG} ${VERSION} package.json: ${ACTUAL_VERSION}"
61+
if [ "${ACTUAL_VERSION}" != "${VERSION}" ]; then
62+
echo "git tag does not match version in packages/${PKG}/package.json"
63+
exit 1
64+
fi
65+
66+
- name: Build tokens
67+
run: pnpm build:tokens
68+
69+
- name: Build package
70+
run: |
71+
PKG="${{ steps.package.outputs.name }}"
72+
case "$PKG" in
73+
design-system|web-client|web-pkg|web-test-helpers)
74+
pnpm --filter "@ownclouders/${PKG}" vite build
75+
;;
76+
esac
77+
78+
- name: Publish to NPM
79+
run: |
80+
pnpm publish \
81+
--no-git-checks --filter "@ownclouders/${{ steps.package.outputs.name }}" \
82+
--access public --tag latest

.github/workflows/release-web.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Release Web
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
release-web:
13+
name: Publish GitHub release
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: write
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
20+
with:
21+
fetch-depth: 1
22+
23+
- name: Setup pnpm
24+
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
25+
with:
26+
version: 10.29.2
27+
28+
- name: Setup Node.js
29+
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
30+
with:
31+
node-version: 24.15.0
32+
cache: pnpm
33+
34+
- name: Install dependencies
35+
run: pnpm install
36+
37+
- name: Build release
38+
run: make dist
39+
env:
40+
NO_INSTALL: 'true'
41+
42+
- name: Get release version
43+
id: version
44+
run: echo "version=$(echo '${{ github.ref_name }}' | sed 's/^v//' | cut -d- -f1)" >> "$GITHUB_OUTPUT"
45+
46+
- name: Generate release changelog
47+
uses: actionhippie/calens@244f3e5c328b842a740113859b87bbebf697f63b # v1.13.1
48+
with:
49+
version: ${{ steps.version.outputs.version }}
50+
target: dist/CHANGELOG.md
51+
template: changelog/CHANGELOG-Release.tmpl

0 commit comments

Comments
 (0)