Skip to content

Commit 1e420e1

Browse files
authored
Publish release on arduino download servers (#570)
* add workaround step to check semver and trigger prerelease * add "release on download servers" step * rm useless _ArduinoCreateAgent*.dmg mac file * use version (maj.min) instead of (maj.min.bugf) * finalize workflow (s3 download path will be overwritten)
1 parent c5e43ba commit 1e420e1

File tree

1 file changed

+52
-19
lines changed

1 file changed

+52
-19
lines changed

.github/workflows/release.yml

+52-19
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ jobs:
148148
env:
149149
# vars used by installbuilder
150150
INSTALLBUILDER_PATH: "/opt/installbuilder-20.9.0/bin/builder"
151-
INSTALLER_VARS: "project.outputDirectory=$PWD project.version=${GITHUB_REF##*/} workspace=$PWD realname=Arduino_Create_Bridge"
151+
# INSTALLER_VARS: "project.outputDirectory=$PWD project.version=${GITHUB_REF##*/} workspace=$PWD realname=Arduino_Create_Bridge"
152152
# vars passed to installbuilder to install https certs automatically
153153
CERT_INSTALL: "ask_certificates_install=CI" # win(edge),mac(safari)
154154
NO_CERT_INSTALL: "ask_certificates_install=CS" # linux
@@ -186,6 +186,16 @@ jobs:
186186

187187
steps:
188188

189+
# workaround to strip bugfix number from semver (only to make 1.1 release) I will change this in the future
190+
- name: Set version env vars
191+
# VERSION will be available only in the next step
192+
run: |
193+
echo "VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
194+
195+
- name: Set installer env vars
196+
run: |
197+
echo INSTALLER_VARS="project.outputDirectory=$PWD project.version=${VERSION%.*} workspace=$PWD realname=Arduino_Create_Bridge" >> $GITHUB_ENV
198+
189199
- name: Checkout
190200
uses: actions/checkout@v2
191201
with:
@@ -225,22 +235,22 @@ jobs:
225235
# installbuilder reads the env vars with certs paths and use it to sign the installer.
226236
- name: Launch Bitrock installbuilder-20 with CERT_INSTALL && CHOICE_CERT_INSTALL
227237
run: |
228-
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${{ env.INSTALLER_VARS }} ${{ env.CERT_INSTALL }}
229-
mv -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CI${{matrix.installer-extension}} ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-${{matrix.browser}}${{matrix.installer-extension}}
230-
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${{ env.INSTALLER_VARS }} ${{ env.CHOICE_CERT_INSTALL }}
231-
cp -vr ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CC${{matrix.installer-extension}} ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-chrome${{matrix.installer-extension}}
232-
mv -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CC${{matrix.installer-extension}} ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-firefox${{matrix.installer-extension}}
233-
rm -r ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-C*
238+
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${INSTALLER_VARS} ${{ env.CERT_INSTALL }}
239+
mv -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CI${{matrix.installer-extension}} ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-${{matrix.browser}}${{matrix.installer-extension}}
240+
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${INSTALLER_VARS} ${{ env.CHOICE_CERT_INSTALL }}
241+
cp -vr ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CC${{matrix.installer-extension}} ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-chrome${{matrix.installer-extension}}
242+
mv -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CC${{matrix.installer-extension}} ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-firefox${{matrix.installer-extension}}
243+
rm -r ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-C*
234244
if: matrix.operating-system == 'windows-latest' || matrix.operating-system == 'macos-latest'
235245

236246
# linux
237247
- name: Launch Bitrock installbuilder-20 with NO_CERT_INSTALL
238248
run: |
239-
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${{ env.INSTALLER_VARS }} ${{ env.NO_CERT_INSTALL }}
240-
cp -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CS.run ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-chrome.run
241-
mv -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CS.run ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-firefox.run
242-
cp -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CS.tar.gz ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-chrome.tar.gz
243-
mv -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CS.tar.gz ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-firefox.tar.gz
249+
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${INSTALLER_VARS} ${{ env.NO_CERT_INSTALL }}
250+
cp -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CS.run ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-chrome.run
251+
mv -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CS.run ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-firefox.run
252+
cp -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CS.tar.gz ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-chrome.tar.gz
253+
mv -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CS.tar.gz ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-firefox.tar.gz
244254
if: matrix.operating-system == 'ubuntu-latest'
245255

246256
- name: Upload artifacts
@@ -267,9 +277,15 @@ jobs:
267277
name: ArduinoCreateAgent-osx
268278
path: ArduinoCreateAgent-osx
269279

280+
# workaround to strip bugfix number from semver (only to make 1.1 release) I will change this in the future
281+
- name: Set version env vars
282+
# VERSION will be available only in the next step
283+
run: |
284+
echo "VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
285+
270286
# zip artifacts do not mantain executable permission
271287
- name: Make executable
272-
run: chmod -v +x ArduinoCreateAgent-osx/ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.app/Contents/MacOS/*
288+
run: chmod -v +x ArduinoCreateAgent-osx/ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.app/Contents/MacOS/*
273289

274290
- name: Import Code-Signing Certificates
275291
env:
@@ -292,15 +308,15 @@ jobs:
292308
# gon does not allow env variables in config file (https://github.com/mitchellh/gon/issues/20)
293309
run: |
294310
cat > gon.config_installer.hcl <<EOF
295-
source = ["ArduinoCreateAgent-osx/ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.app"]
311+
source = ["ArduinoCreateAgent-osx/ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.app"]
296312
bundle_id = "cc.arduino.arduino-agent-installer"
297313
298314
sign {
299315
application_identity = "Developer ID Application: ARDUINO SA (7KT7ZWMCJT)"
300316
}
301317
302318
dmg {
303-
output_path = "ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.dmg"
319+
output_path = "ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.dmg"
304320
volume_name = "ArduinoCreateAgent"
305321
}
306322
EOF
@@ -310,13 +326,13 @@ jobs:
310326
AC_USERNAME: ${{ secrets.AC_USERNAME }}
311327
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
312328
run: |
313-
echo "gon will notarize executable in ArduinoCreateAgent-osx/ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.app"
329+
echo "gon will notarize executable in ArduinoCreateAgent-osx/ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.app"
314330
gon -log-level=debug -log-json gon.config_installer.hcl
315331
timeout-minutes: 30
316332

317333
# tar dmg file to keep executable permission
318334
- name: Tar files to keep permissions
319-
run: tar -cvf ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.tar ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.dmg
335+
run: tar -cvf ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.tar ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.dmg
320336

321337
- name: Upload artifacts
322338
uses: actions/upload-artifact@v2
@@ -328,19 +344,32 @@ jobs:
328344
create-release:
329345
runs-on: ubuntu-latest
330346
needs: code-sign-mac-installers
347+
env:
348+
PLUGIN_TARGET: "/CreateBridgeStable/"
349+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
350+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
331351

332352
steps:
333353

334354
- name: Download artifact
335355
uses: actions/download-artifact@v2 # download all the artifacts
336356

357+
- name: Identify Prerelease
358+
# This is a workaround while waiting for create-release action to implement auto pre-release based on tag
359+
id: prerelease
360+
run: |
361+
wget -q -P /tmp https://github.com/fsaintjacques/semver-tool/archive/3.1.0.zip
362+
unzip -p /tmp/3.1.0.zip semver-tool-3.1.0/src/semver >/tmp/semver && chmod +x /tmp/semver
363+
if [[ $(/tmp/semver get prerel ${GITHUB_REF/refs\/tags\//}) ]]; then echo "::set-output name=IS_PRE::true"; fi
364+
337365
# mandatory step because upload-release-action does not support multiple folders
338366
- name: prepare artifacts for the release
339367
run: |
340368
mkdir release
341369
chmod -v +x ArduinoCreateAgent-linux-x64/*.run
342370
mv -v ArduinoCreateAgent-linux-x64/* release/
343371
cat ArduinoCreateAgent-osx/*.tar | tar -xvf - -i -C release/
372+
rm -v release/._ArduinoCreateAgent*.dmg
344373
mv -v ArduinoCreateAgent-windows/* release/
345374
346375
- name: Create Github Release
@@ -350,9 +379,9 @@ jobs:
350379
with:
351380
tag_name: ${{ github.ref }}
352381
release_name: ${{ github.ref }}
353-
body: "THIS IS A TEST RELEASE"
382+
body: ""
354383
draft: false
355-
prerelease: true # see later how to handle this (maybe just a check on "-dev" will be sufficient)
384+
prerelease: ${{ steps.prerelease.outputs.IS_PRE }}
356385

357386
- name: Upload release files on Github
358387
uses: svenstaro/upload-release-action@v2
@@ -361,3 +390,7 @@ jobs:
361390
tag: ${{ github.ref }}
362391
file_glob: true # If set to true, the file argument can be a glob pattern
363392
file: release/*
393+
394+
- name: Upload release files on Arduino downloads servers
395+
run: aws s3 sync release/ s3://${{ secrets.DOWNLOADS_BUCKET }}${{ env.PLUGIN_TARGET }} --include "*"
396+
if: steps.prerelease.outputs.IS_PRE != 'true'

0 commit comments

Comments
 (0)