forked from riprasad/apicurio-studio
-
Notifications
You must be signed in to change notification settings - Fork 0
198 lines (196 loc) · 10.9 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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
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: Login to DockerHub Registry
run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
- name: Login to Quay.io Registry
run: echo ${{ secrets.QUAY_PASSWORD }} | docker login quay.io -u ${{ secrets.QUAY_USERNAME }} --password-stdin
- name: Apicurio Studio Code Checkout
run: |
mkdir studio
cd studio
git init
git config --global user.name "apicurio-ci"
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: Apicurio Website Code Checkout
run: |
mkdir website
cd website
git init
git config --global user.name "apicurio-ci"
git config --global user.email "[email protected]"
git remote add origin "https://apicurio-ci:${{ secrets.ACCESS_TOKEN }}@github.com/Apicurio/apicurio.github.io.git"
git fetch
git checkout master
git branch --set-upstream-to=origin/master
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: 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: 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: Building Docker Images
run: |
cd studio
docker build -t="apicurio/apicurio-studio-api" -t="apicurio/apicurio-studio-api:latest-release" -t="apicurio/apicurio-studio-api:${{ github.event.inputs.release-version }}" -t="quay.io/apicurio/apicurio-studio-api" -t="quay.io/apicurio/apicurio-studio-api:latest-release" -t="quay.io/apicurio/apicurio-studio-api:${{ github.event.inputs.release-version }}" --rm platforms/thorntail/api/
docker build -t="apicurio/apicurio-studio-ws" -t="apicurio/apicurio-studio-ws:latest-release" -t="apicurio/apicurio-studio-ws:${{ github.event.inputs.release-version }}" -t="quay.io/apicurio/apicurio-studio-ws" -t="quay.io/apicurio/apicurio-studio-ws:latest-release" -t="quay.io/apicurio/apicurio-studio-ws:${{ github.event.inputs.release-version }}" --rm platforms/thorntail/ws/
docker build -t="apicurio/apicurio-studio-ui" -t="apicurio/apicurio-studio-ui:latest-release" -t="apicurio/apicurio-studio-ui:${{ github.event.inputs.release-version }}" -t="quay.io/apicurio/apicurio-studio-ws" -t="quay.io/apicurio/apicurio-studio-ui:latest-release" -t="quay.io/apicurio/apicurio-studio-ui:${{ github.event.inputs.release-version }}" --rm platforms/thorntail/ui/
- 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: 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 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
- name: Push The Tagged Docker Images
run: |
cd studio
docker push apicurio/apicurio-studio-api:latest
docker push apicurio/apicurio-studio-ws:latest
docker push apicurio/apicurio-studio-ui:latest
docker push apicurio/apicurio-studio-api:latest-release
docker push apicurio/apicurio-studio-ws:latest-release
docker push apicurio/apicurio-studio-ui:latest-release
docker push apicurio/apicurio-studio-api:${{ github.event.inputs.release-version }}
docker push apicurio/apicurio-studio-ws:${{ github.event.inputs.release-version }}
docker push apicurio/apicurio-studio-ui:${{ github.event.inputs.release-version }}
docker push quay.io/apicurio/apicurio-studio-api:latest
docker push quay.io/apicurio/apicurio-studio-ws:latest
docker push quay.io/apicurio/apicurio-studio-ui:latest
docker push quay.io/apicurio/apicurio-studio-api:latest-release
docker push quay.io/apicurio/apicurio-studio-ws:latest-release
docker push quay.io/apicurio/apicurio-studio-ui:latest-release
docker push quay.io/apicurio/apicurio-studio-api:${{ github.event.inputs.release-version }}
docker push quay.io/apicurio/apicurio-studio-ws:${{ github.event.inputs.release-version }}
docker push quay.io/apicurio/apicurio-studio-ui:${{ github.event.inputs.release-version }}
- name: Updating Project Website for Release ${{ github.event.inputs.release-version }}
run: |
cd website
echo "********** Downloading Latest Release JSON File **********"
cd _data/studio
rm latestRelease.json
touch latestRelease.json && curl https://api.github.com/repos/apicurio/apicurio-studio/releases/latest > latestRelease.json
- name: Commit Project Website Changes
run: |
cd website
git add .
git commit -m "Automated Update For Apicurio Studio Release Version: ${{ github.event.inputs.release-version}}"
git push