forked from Apicurio/apicurio-studio
-
Notifications
You must be signed in to change notification settings - Fork 1
165 lines (140 loc) · 6.97 KB
/
release.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
name: Release Workflow
on:
workflow_dispatch:
inputs:
release-version:
description: 'Version being released'
required: true
snapshot-version:
description: 'Next snapshot version'
required: true
branch:
description: 'Branch to release from'
required: true
default: 'master'
jobs:
release:
runs-on: ubuntu-latest
if: github.repository_owner == 'Apicurio'
steps:
- name: Set up Node.js v14
uses: actions/setup-node@v1
with:
node-version: 14
- name: Set up JDK 11
uses: AdoptOpenJDK/install-jdk@v1
with:
version: '11'
architecture: x64
- name: Set up Gren
run: npm install github-release-notes -g
- name: Set up NPM CLI Login
run: npm install -g npm-cli-login
- name: Import GPG Key
uses: crazy-max/ghaction-import-gpg@v1
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Apicurio Studio Code Checkout
run: |
mkdir studio
cd studio
git init
git config --global user.name "apicurio-ci[bot]"
git config --global user.email "[email protected]"
git remote add origin "https://apicurio-ci:${{ secrets.ACCESS_TOKEN }}@github.com/$GITHUB_REPOSITORY.git"
git fetch
git checkout ${{ github.event.inputs.branch }}
git branch --set-upstream-to=origin/${{ github.event.inputs.branch }}
git pull
- name: Update Release Version ${{ github.event.inputs.release-version }} in pom.xml
run: cd studio && mvn versions:set -DnewVersion=${{ github.event.inputs.release-version}} -DgenerateBackupPoms=false -DprocessAllModules=true
- name: Validating Apicurio Studio maven build
run: cd studio && mvn clean install
- name: Update Release Version ${{ github.event.inputs.release-version }} in Package.json
run: |
cd studio/front-end/studio
sed -i "s/version.:.*/version\": \"${{ github.event.inputs.release-version }}\",/g" package.json
sed -i "s/.Final//g" package.json
rm -rf dist*
rm -rf node_modules
- name: Validating Apicurio Studio UI build
run: |
cd studio/front-end/studio
yarn install
echo "**************** Validating Apicurio Studio UI build ****************"
yarn run build
- name: Update Release Version ${{ github.event.inputs.release-version }} in OpenShift template(s)
run: |
cd studio/distro/openshift
sed -i "s/latest-release/${{ github.event.inputs.release-version }}/g" apicurio-template.yml
sed -i "s/latest-release/${{ github.event.inputs.release-version }}/g" apicurio-standalone-template.yml
- name: Preparing Apicurio UI For Release
run: |
cd studio/front-end/studio
rm -rf dist*
rm -rf node_modules
yarn install
yarn run build-editor
- uses: JS-DevTools/npm-publish@v1
with:
token: ${{ secrets.NPM_TOKEN }}
package: studio/front-end/studio/dist-editor/package.json
- name: Signing and Archiving the Quickstart ZIP
run: |
cd studio
mkdir -p releases
cp distro/quickstart/target/apicurio-studio-${{ github.event.inputs.release-version }}-quickstart.zip releases/.
echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --batch --passphrase-fd 0 --armor --detach-sign releases/apicurio-studio-${{ github.event.inputs.release-version }}-quickstart.zip
- name: Restoring 'latest-release' as the ImageStream version in the OpenShift template(s)"
run: |
cd studio/distro/openshift
sed -i "s/${{ github.event.inputs.release-version }}/latest-release/g" apicurio-template.yml
sed -i "s/${{ github.event.inputs.release-version }}/latest-release/g" apicurio-standalone-template.yml
- name: Commit Changes for Release Version ${{ github.event.inputs.release-version }}
run: |
cd studio
git add .
git commit -m "Automated commit for Release Version: ${{ github.event.inputs.release-version }}"
git push
- name: Fetch Latest Commit SHA For Apicurio Studio
run: |
cd studio
echo "latest_commit_sha=$(git log -n 1 --pretty=format:"%H")" >> $GITHUB_ENV
- name: Create GitHub Release
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ github.event.inputs.release-version }}
release_name: ${{ github.event.inputs.release-version }}
commitish: ${{ env.latest_commit_sha }} # explicitly passing the commit hash so that the latest commit is tagged and released
- name: Upload Release Asset-1
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`
asset_path: /home/runner/work/apicurio-studio/apicurio-studio/studio/releases/apicurio-studio-${{ github.event.inputs.release-version }}-quickstart.zip
asset_name: apicurio-studio-${{ github.event.inputs.release-version }}-quickstart.zip
asset_content_type: application/zip
- name: Upload Release Asset-2
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`
asset_path: /home/runner/work/apicurio-studio/apicurio-studio/studio/releases/apicurio-studio-${{ github.event.inputs.release-version }}-quickstart.zip.asc
asset_name: apicurio-studio-${{ github.event.inputs.release-version }}-quickstart.zip.asc
asset_content_type: application/zip
- name: Generate Release Notes
run: cd studio && gren release --token=${{ secrets.GITHUB_TOKEN }} --override --prefix=v
- name: Update Next Snapshot Version ${{ github.event.inputs.snapshot-version }} in pom.xml
run: cd studio && mvn versions:set -DnewVersion=${{ github.event.inputs.snapshot-version }} -DgenerateBackupPoms=false -DprocessAllModules=true
- name: Commit Changes for Next Snapshot Version ${{ github.event.inputs.snapshot-version }}
run: |
cd studio
git add .
git commit -m "Automated commit for Next Snapshot Version: ${{ github.event.inputs.snapshot-version }}"
git push