Add github actions for building configurator #26
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: pull_request | |
jobs: | |
build-linux: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup environment | |
env: | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
run: | | |
# This is the hash of the commit for the PR | |
# when the action is triggered by PR, empty otherwise | |
COMMIT_ID=${{ github.event.pull_request.head.sha }} | |
# This is the hash of the commit when triggered by push | |
# but the hash of refs/pull/<n>/merge, which is different | |
# from the hash of the latest commit in the PR, that's | |
# why we try github.event.pull_request.head.sha first | |
COMMIT_ID=${COMMIT_ID:-${{ github.sha }}} | |
BUILD_SUFFIX=ci-$(date '+%Y%m%d')-$(git rev-parse --short ${COMMIT_ID}) | |
VERSION=$(grep version package.json | sed 's/.*"\([0-9][0-9]*.[0-9]*.[0-9]*\)".*/\1/g') | |
echo "BUILD_SUFFIX=${BUILD_SUFFIX}" >> $GITHUB_ENV | |
echo "BUILD_NAME=inav-configurator-${VERSION}-${BUILD_SUFFIX}" >> $GITHUB_ENV | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
check-latest: true | |
cache: 'npm' | |
- name: Install linux packages | |
run: sudo apt-get update && sudo apt-get install wine devscripts sbuild rpm | |
#- name: Download node.js | |
# run: curl -o /tmp/node.tar.xz https://nodejs.org/dist/v20.10.0/node-v20.10.0-linux-x64.tar.xz && sudo tar --strip-components=1 -xJvf /tmp/node.tar.xz -C /usr/local | |
- name: Install deps | |
uses: nick-fields/retry@v2 | |
with: | |
max_attempts: 3 | |
retry_on: error | |
command: npm install | |
timeout_minutes: 10 | |
- name: Create apps folder | |
run: mkdir -p apps | |
- name: build linux64 release | |
id: build1 | |
uses: nick-fields/retry@v2 | |
with: | |
max_attempts: 3 | |
retry_on: error | |
timeout_minutes: 20 | |
command: sync && node ./node_modules/gulp/bin/gulp.js release --platform=linux64 -LLLL --installer | |
continue-on-error: true | |
- name: build linux64 release 2 | |
id: build2 | |
if: steps.build1.outcome == 'failure' | |
run: node ./node_modules/gulp/bin/gulp.js release --platform=linux64 -LLLL --installer | |
- name: Upload deb | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.BUILD_NAME }} deb | |
path: apps/*.deb | |
- name: Upload rpm | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.BUILD_NAME }} rpm | |
path: apps/*.rpm | |
- name: Upload linux binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.BUILD_NAME }} tar.gz | |
path: apps/*.tar.gz | |
build-mac: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup environment | |
env: | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
run: | | |
# This is the hash of the commit for the PR | |
# when the action is triggered by PR, empty otherwise | |
COMMIT_ID=${{ github.event.pull_request.head.sha }} | |
# This is the hash of the commit when triggered by push | |
# but the hash of refs/pull/<n>/merge, which is different | |
# from the hash of the latest commit in the PR, that's | |
# why we try github.event.pull_request.head.sha first | |
COMMIT_ID=${COMMIT_ID:-${{ github.sha }}} | |
BUILD_SUFFIX=ci-$(date '+%Y%m%d')-$(git rev-parse --short ${COMMIT_ID}) | |
VERSION=$(grep version package.json | sed 's/.*"\([0-9][0-9]*.[0-9]*.[0-9]*\)".*/\1/g') | |
echo "BUILD_SUFFIX=${BUILD_SUFFIX}" >> $GITHUB_ENV | |
echo "BUILD_NAME=inav-configurator-${VERSION}-${BUILD_SUFFIX}" >> $GITHUB_ENV | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
check-latest: true | |
cache: 'npm' | |
- name: Install packages | |
run: brew install nodejs | |
#- name: Download node.js | |
# run: curl -o /tmp/node.pkg https://nodejs.org/dist/v20.10.0/node-v20.10.0.pkg && sudo installer -pkg /tmp/node.pkg -target / | |
- name: Install deps | |
uses: nick-fields/retry@v2 | |
with: | |
max_attempts: 3 | |
retry_on: error | |
command: npm install | |
timeout_minutes: 10 | |
- name: Create apps folder | |
run: mkdir -p apps | |
- name: build macos release | |
run: node ./node_modules/gulp/bin/gulp.js release --platform=osx64 -LLLL | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{env.BUILD_NAME}} MacOSX zip | |
path: apps/*.zip | |
build-win: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install linux utils | |
run: choco install --force -y awk grep sed | |
- name: Setup environment | |
env: | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
run: | | |
# This is the hash of the commit for the PR | |
# when the action is triggered by PR, empty otherwise | |
set COMMIT_ID=${{ github.event.pull_request.head.sha }} | |
# This is the hash of the commit when triggered by push | |
# but the hash of refs/pull/<n>/merge, which is different | |
# from the hash of the latest commit in the PR, that's | |
# why we try github.event.pull_request.head.sha first | |
set COMMIT_ID=${COMMIT_ID:-${{ github.sha }}} | |
set BUILD_SUFFIX=ci-$(date '+%Y%m%d')-$(git rev-parse --short ${COMMIT_ID}) | |
set VERSION=$(grep version package.json | sed 's/.*"\([0-9][0-9]*.[0-9]*.[0-9]*\)".*/\1/g') | |
echo "BUILD_SUFFIX=${BUILD_SUFFIX}" >> $GITHUB_ENV | |
echo "BUILD_NAME=inav-configurator-${VERSION}-${BUILD_SUFFIX}" >> $GITHUB_ENV | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
check-latest: true | |
cache: 'npm' | |
- name: Install deps | |
uses: nick-fields/retry@v2 | |
with: | |
max_attempts: 3 | |
retry_on: error | |
command: npm install | |
timeout_minutes: 10 | |
- name: build win64 release | |
run: node ./node_modules/gulp/bin/gulp.js release --platform=win64 -LLLL --installer | |
- name: Upload msi | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.BUILD_NAME }} win64 msi | |
path: apps/*.msi | |
- name: Upload exe | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.BUILD_NAME }} win64 exe | |
path: apps/*.exe | |
- name: Upload zip | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.BUILD_NAME }} win64 zip | |
path: apps/*.zip | |