From e3170d4f613387ed0aa51d8d645e19e18cc9529a Mon Sep 17 00:00:00 2001 From: Scavanger Date: Wed, 24 Apr 2024 11:23:41 -0300 Subject: [PATCH] GH action --- .github/workflows/ci.yml | 173 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..1d8b79416 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,173 @@ +name: Build Configurator +on: workflow_dispatch + +jobs: + build-linux: + runs-on: unbuntu-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//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 "ACTIONS_STEP_DEBUG=true" >> $GITHUB_ENV + echo "BUILD_SUFFIX=${BUILD_SUFFIX}" >> $GITHUB_ENV + echo "BUILD_NAME=INAV-configurator_linux_x64_${VERSION}_${BUILD_SUFFIX}" >> $GITHUB_ENV + - uses: actions/setup-node@v4 + with: + node-version: 20 + check-latest: true + cache: 'npm' + - name: Install dependencies + run: sudo apt update && sudo apt -y install dpkg fakeroot rpmbuild build-essential libudev-dev + - name: Install deps + uses: nick-fields/retry@v2 + with: + max_attempts: 3 + retry_on: error + command: npm install + timeout_minutes: 10 + - name: build linux + run: npm run make + - name: Upload deb + uses: actions/upload-artifact@v3 + with: + name: ${{ env.BUILD_NAME }} Linux deb + path: ./out/make/deb/linux/x64/*.deb + - name: Upload rpm + uses: actions/upload-artifact@v3 + with: + name: ${{ env.BUILD_NAME }} Linux rpm + path: ./out/make/rpm/linux/x64/*.rpm + - name: Upload Linux zip + uses: actions/upload-artifact@v3 + with: + name: ${{ env.BUILD_NAME }} Linux zip + path: ./out/make/zip/linux/x64/*.rpm + 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//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_darwin_x64_${VERSION}_${BUILD_SUFFIX}" >> $GITHUB_ENV + - uses: actions/setup-node@v4 + with: + node-version: 21 + check-latest: true + cache: 'npm' + - name: Install packages + run: brew install nodejs + - name: Install deps + uses: nick-fields/retry@v2 + with: + max_attempts: 3 + retry_on: error + command: npm install + timeout_minutes: 10 + - name: build macos + run: npm run make + - name: Upload MacOS zip + uses: actions/upload-artifact@v4 + with: + name: ${{env.BUILD_NAME}} MacOSX zip + path: ./out/make/zip/darwin/x64/*.zip + - name: Upload MacOS dmg + uses: actions/upload-artifact@v4 + with: + name: ${{env.BUILD_NAME}} MacOSX dmg + path: ./out/make/dmg/darwin/x64/*.dmg + build-windows: + 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 + 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//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 "ACTIONS_STEP_DEBUG=true" >> $GITHUB_ENV + echo "BUILD_SUFFIX=${BUILD_SUFFIX}" >> $GITHUB_ENV + echo "BUILD_NAMEx64=INAV-configurator_win32_x64_${VERSION}_${BUILD_SUFFIX}" >> $GITHUB_ENV + echo "BUILD_NAMEis32=INAV-configurator_win32_ia32_${VERSION}_${BUILD_SUFFIX}" >> $GITHUB_ENV + shell: bash + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'npm' + - uses: engineerd/configurator@v0.0.10 + with: + name: "Wix3.1.4" + url: "https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314-binaries.zip" + pathInArchive: "/" + - name: Install deps + uses: nick-fields/retry@v2 + with: + max_attempts: 3 + retry_on: error + command: npm install + timeout_minutes: 10 + - name: build win32 x64 + run: npm run make -- -- arch="x64" + - name: build win32 ia32 + run: npm run make -- -- arch="ia32" + - name: Upload Windows x64 zip + uses: actions/upload-artifact@v4 + with: + name: ${{env.BUILD_NAMEx64}} Windows x64 zip + path: ./out/make/zip/windows/x64/*.zip + - name: Upload Windows x64 msi + uses: actions/upload-artifact@v4 + with: + name: ${{env.BUILD_NAMEx64}} Windows x64 msi + path: ./out/make/wix/windows/x64/*.msi + - name: Upload Windows ia32 zip + uses: actions/upload-artifact@v4 + with: + name: ${{env.BUILD_NAMEia32}} Windows ia32 zip + path: ./out/make/zip/windows/ia32/*.zip + - name: Upload Windows ia32 msi + uses: actions/upload-artifact@v4 + with: + name: ${{env.BUILD_NAMEia32}} Windows ia32 msi + path: ./out/make/wix/windows/ia32/*.msi + + + + + + \ No newline at end of file