-
-
Notifications
You must be signed in to change notification settings - Fork 150
Publish release on arduino download servers #570
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
fa409dd
5cb8106
a95078d
fcb58d6
624a03d
7869e9b
9ed31d4
e993b15
319fa27
abd5d62
0024261
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -148,7 +148,7 @@ jobs: | |
env: | ||
# vars used by installbuilder | ||
INSTALLBUILDER_PATH: "/opt/installbuilder-20.9.0/bin/builder" | ||
INSTALLER_VARS: "project.outputDirectory=$PWD project.version=${GITHUB_REF##*/} workspace=$PWD realname=Arduino_Create_Bridge" | ||
# INSTALLER_VARS: "project.outputDirectory=$PWD project.version=${GITHUB_REF##*/} workspace=$PWD realname=Arduino_Create_Bridge" | ||
# vars passed to installbuilder to install https certs automatically | ||
CERT_INSTALL: "ask_certificates_install=CI" # win(edge),mac(safari) | ||
NO_CERT_INSTALL: "ask_certificates_install=CS" # linux | ||
|
@@ -186,6 +186,16 @@ jobs: | |
|
||
steps: | ||
|
||
# workaround to strip bugfix number from semver (only to make 1.1 release) I will change this in the future | ||
- name: Set version env vars | ||
# VERSION will be available only in the next step | ||
run: | | ||
echo "VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV | ||
|
||
- name: Set installer env vars | ||
run: | | ||
echo INSTALLER_VARS="project.outputDirectory=$PWD project.version=${VERSION%.*} workspace=$PWD realname=Arduino_Create_Bridge" >> $GITHUB_ENV | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
with: | ||
|
@@ -225,22 +235,22 @@ jobs: | |
# installbuilder reads the env vars with certs paths and use it to sign the installer. | ||
- name: Launch Bitrock installbuilder-20 with CERT_INSTALL && CHOICE_CERT_INSTALL | ||
run: | | ||
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${{ env.INSTALLER_VARS }} ${{ env.CERT_INSTALL }} | ||
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}} | ||
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${{ env.INSTALLER_VARS }} ${{ env.CHOICE_CERT_INSTALL }} | ||
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}} | ||
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}} | ||
rm -r ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-C* | ||
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${INSTALLER_VARS} ${{ env.CERT_INSTALL }} | ||
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}} | ||
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${INSTALLER_VARS} ${{ env.CHOICE_CERT_INSTALL }} | ||
cp -vr ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CC${{matrix.installer-extension}} ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-chrome${{matrix.installer-extension}} | ||
mv -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CC${{matrix.installer-extension}} ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-firefox${{matrix.installer-extension}} | ||
rm -r ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-C* | ||
if: matrix.operating-system == 'windows-latest' || matrix.operating-system == 'macos-latest' | ||
|
||
# linux | ||
- name: Launch Bitrock installbuilder-20 with NO_CERT_INSTALL | ||
run: | | ||
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${{ env.INSTALLER_VARS }} ${{ env.NO_CERT_INSTALL }} | ||
cp -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CS.run ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-chrome.run | ||
mv -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CS.run ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-firefox.run | ||
cp -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CS.tar.gz ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-chrome.tar.gz | ||
mv -v ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-CS.tar.gz ArduinoCreateAgent-${GITHUB_REF##*/}-${{ matrix.install-builder-name }}-installer-firefox.tar.gz | ||
${{ env.INSTALLBUILDER_PATH }} build installer.xml ${{ matrix.install-builder-name }} --verbose --license /tmp/license.xml --setvars ${INSTALLER_VARS} ${{ env.NO_CERT_INSTALL }} | ||
cp -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CS.run ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-chrome.run | ||
mv -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CS.run ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-firefox.run | ||
cp -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CS.tar.gz ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-chrome.tar.gz | ||
mv -v ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-CS.tar.gz ArduinoCreateAgent-${VERSION%.*}-${{ matrix.install-builder-name }}-installer-firefox.tar.gz | ||
if: matrix.operating-system == 'ubuntu-latest' | ||
|
||
- name: Upload artifacts | ||
|
@@ -267,9 +277,15 @@ jobs: | |
name: ArduinoCreateAgent-osx | ||
path: ArduinoCreateAgent-osx | ||
|
||
# workaround to strip bugfix number from semver (only to make 1.1 release) I will change this in the future | ||
- name: Set version env vars | ||
# VERSION will be available only in the next step | ||
run: | | ||
echo "VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV | ||
|
||
Comment on lines
+280
to
+285
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unfortunately the trick of using |
||
# zip artifacts do not mantain executable permission | ||
- name: Make executable | ||
run: chmod -v +x ArduinoCreateAgent-osx/ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.app/Contents/MacOS/* | ||
run: chmod -v +x ArduinoCreateAgent-osx/ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.app/Contents/MacOS/* | ||
|
||
- name: Import Code-Signing Certificates | ||
env: | ||
|
@@ -292,15 +308,15 @@ jobs: | |
# gon does not allow env variables in config file (https://github.com/mitchellh/gon/issues/20) | ||
run: | | ||
cat > gon.config_installer.hcl <<EOF | ||
source = ["ArduinoCreateAgent-osx/ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.app"] | ||
source = ["ArduinoCreateAgent-osx/ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.app"] | ||
bundle_id = "cc.arduino.arduino-agent-installer" | ||
|
||
sign { | ||
application_identity = "Developer ID Application: ARDUINO SA (7KT7ZWMCJT)" | ||
} | ||
|
||
dmg { | ||
output_path = "ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.dmg" | ||
output_path = "ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.dmg" | ||
volume_name = "ArduinoCreateAgent" | ||
} | ||
EOF | ||
|
@@ -310,13 +326,13 @@ jobs: | |
AC_USERNAME: ${{ secrets.AC_USERNAME }} | ||
AC_PASSWORD: ${{ secrets.AC_PASSWORD }} | ||
run: | | ||
echo "gon will notarize executable in ArduinoCreateAgent-osx/ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.app" | ||
echo "gon will notarize executable in ArduinoCreateAgent-osx/ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.app" | ||
gon -log-level=debug -log-json gon.config_installer.hcl | ||
timeout-minutes: 30 | ||
|
||
# tar dmg file to keep executable permission | ||
- name: Tar files to keep permissions | ||
run: tar -cvf ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.tar ArduinoCreateAgent-${GITHUB_REF##*/}-osx-installer-${{ matrix.browser }}.dmg | ||
run: tar -cvf ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.tar ArduinoCreateAgent-${VERSION%.*}-osx-installer-${{ matrix.browser }}.dmg | ||
|
||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v2 | ||
|
@@ -328,19 +344,32 @@ jobs: | |
create-release: | ||
runs-on: ubuntu-latest | ||
needs: code-sign-mac-installers | ||
env: | ||
PLUGIN_TARGET: "/CreateBridgeStable/" | ||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
|
||
steps: | ||
|
||
- name: Download artifact | ||
uses: actions/download-artifact@v2 # download all the artifacts | ||
|
||
- name: Identify Prerelease | ||
# This is a workaround while waiting for create-release action to implement auto pre-release based on tag | ||
id: prerelease | ||
run: | | ||
wget -q -P /tmp https://github.com/fsaintjacques/semver-tool/archive/3.1.0.zip | ||
unzip -p /tmp/3.1.0.zip semver-tool-3.1.0/src/semver >/tmp/semver && chmod +x /tmp/semver | ||
if [[ $(/tmp/semver get prerel ${GITHUB_REF/refs\/tags\//}) ]]; then echo "::set-output name=IS_PRE::true"; fi | ||
|
||
Comment on lines
+357
to
+364
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. just like in the arduino-cli this step is useful to check if a release is actually a prerelease based on the tag ( |
||
# mandatory step because upload-release-action does not support multiple folders | ||
- name: prepare artifacts for the release | ||
run: | | ||
mkdir release | ||
chmod -v +x ArduinoCreateAgent-linux-x64/*.run | ||
mv -v ArduinoCreateAgent-linux-x64/* release/ | ||
cat ArduinoCreateAgent-osx/*.tar | tar -xvf - -i -C release/ | ||
rm -v release/._ArduinoCreateAgent*.dmg | ||
mv -v ArduinoCreateAgent-windows/* release/ | ||
|
||
- name: Create Github Release | ||
|
@@ -350,9 +379,9 @@ jobs: | |
with: | ||
tag_name: ${{ github.ref }} | ||
release_name: ${{ github.ref }} | ||
body: "THIS IS A TEST RELEASE" | ||
body: "" | ||
draft: false | ||
prerelease: true # see later how to handle this (maybe just a check on "-dev" will be sufficient) | ||
prerelease: ${{ steps.prerelease.outputs.IS_PRE }} | ||
|
||
- name: Upload release files on Github | ||
uses: svenstaro/upload-release-action@v2 | ||
|
@@ -361,3 +390,7 @@ jobs: | |
tag: ${{ github.ref }} | ||
file_glob: true # If set to true, the file argument can be a glob pattern | ||
file: release/* | ||
|
||
- name: Upload release files on Arduino downloads servers | ||
run: aws s3 sync release/ s3://${{ secrets.DOWNLOADS_BUCKET }}${{ env.PLUGIN_TARGET }} --include "*" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The files are uploaded to |
||
if: steps.prerelease.outputs.IS_PRE != 'true' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The purpose of this workaround is to consider only
major.minor
in the string used in the name of the installer. Without this and by using onlyGITHUB_REF##*/
the result will be something like1.1.251
instead of the desired1.1
The
>> $GITHUB_ENV
trick is used because in not possible to use an env variable defined insideenv
inside the same environment