From e3170d4f613387ed0aa51d8d645e19e18cc9529a Mon Sep 17 00:00:00 2001 From: Scavanger Date: Wed, 24 Apr 2024 11:23:41 -0300 Subject: [PATCH 1/2] 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 From 0450c093a553d96e9fa77c812d9542d45af7e171 Mon Sep 17 00:00:00 2001 From: Scavanger Date: Wed, 24 Apr 2024 15:25:11 -0300 Subject: [PATCH 2/2] Fixes --- .github/workflows/ci.yml | 102 ++++++++++++++++++++++----------------- package.json | 3 +- 2 files changed, 59 insertions(+), 46 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1d8b79416..0604722db 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,9 +1,12 @@ name: Build Configurator -on: workflow_dispatch +# Don't enable CI on push, just on PR. If you +# are working on the main repo and want to trigger +# a CI build submit a draft PR. +on: pull_request jobs: build-linux: - runs-on: unbuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup environment @@ -22,14 +25,14 @@ jobs: 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 + 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 + run: sudo apt-get update && sudo apt-get -y install dpkg fakeroot rpm build-essential libudev-dev - name: Install deps uses: nick-fields/retry@v2 with: @@ -37,23 +40,23 @@ jobs: retry_on: error command: npm install timeout_minutes: 10 - - name: build linux + - name: Build Linux run: npm run make - - name: Upload deb + - name: Upload Linux deb uses: actions/upload-artifact@v3 with: - name: ${{ env.BUILD_NAME }} Linux deb - path: ./out/make/deb/linux/x64/*.deb - - name: Upload rpm + name: ${{ env.BUILD_NAME }}_DEB + path: ./out/make/deb/x64/*.deb + - name: Upload Linux rpm uses: actions/upload-artifact@v3 with: - name: ${{ env.BUILD_NAME }} Linux rpm - path: ./out/make/rpm/linux/x64/*.rpm + name: ${{ env.BUILD_NAME }}_RPM + path: ./out/make/rpm/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 + name: ${{ env.BUILD_NAME }}_ZIP + path: ./out/make/zip/linux/x64/*.zip build-mac: runs-on: macos-latest steps: @@ -73,14 +76,16 @@ jobs: 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 + echo "BUILD_NAMEx64=inav-configurator_darwin_x64_${VERSION}_${BUILD_SUFFIX}" >> $GITHUB_ENV + echo "BUILD_NAMEarm64=inav-configurator_darwin_arm64_${VERSION}_${BUILD_SUFFIX}" >> $GITHUB_ENV - uses: actions/setup-node@v4 with: - node-version: 21 + node-version: 20 check-latest: true cache: 'npm' - - name: Install packages - run: brew install nodejs + # Workaround due to a bug in node-gyp: https://github.com/electron/rebuild/issues/1116 + - name: Install Setuptools + run: pip install setuptools - name: Install deps uses: nick-fields/retry@v2 with: @@ -88,18 +93,30 @@ jobs: retry_on: error command: npm install timeout_minutes: 10 - - name: build macos - run: npm run make - - name: Upload MacOS zip + - name: Build MacOS x64 + run: npm run make -- --arch="x64" + - name: Build MacOS arm64 + run: npm run make -- --arch="arm64" + - name: Upload MacOS x64 zip uses: actions/upload-artifact@v4 with: - name: ${{env.BUILD_NAME}} MacOSX zip + name: ${{env.BUILD_NAMEx64}}_ZIP path: ./out/make/zip/darwin/x64/*.zip - - name: Upload MacOS dmg + - name: Upload MacOS x64 dmg uses: actions/upload-artifact@v4 with: - name: ${{env.BUILD_NAME}} MacOSX dmg - path: ./out/make/dmg/darwin/x64/*.dmg + name: ${{env.BUILD_NAMEx64}}_DMG + path: ./out/make/*x64*.dmg + - name: Upload MacOS arm64 zip + uses: actions/upload-artifact@v4 + with: + name: ${{env.BUILD_NAMEarm64}}_ZIP + path: ./out/make/zip/darwin/arm64/*.zip + - name: Upload MacOS arm64 dmg + uses: actions/upload-artifact@v4 + with: + name: ${{env.BUILD_NAMEarm64}}_DMG + path: ./out/make/*arm64*.dmg build-windows: runs-on: windows-latest steps: @@ -122,8 +139,8 @@ jobs: 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 + echo "BUILD_NAMEx64=inav-configurator_win32_x64_${VERSION}_${BUILD_SUFFIX}" >> $GITHUB_ENV + echo "BUILD_NAMEia32=inav-configurator_win32_ia32_${VERSION}_${BUILD_SUFFIX}" >> $GITHUB_ENV shell: bash - uses: actions/setup-node@v4 with: @@ -131,7 +148,7 @@ jobs: cache: 'npm' - uses: engineerd/configurator@v0.0.10 with: - name: "Wix3.1.4" + name: "Wix Toolset 3.1.4" url: "https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314-binaries.zip" pathInArchive: "/" - name: Install deps @@ -141,33 +158,28 @@ jobs: 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: 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: ${{env.BUILD_NAMEx64}}_ZIP + path: ./out/make/zip/win32/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: ${{env.BUILD_NAMEx64}}_MSI + path: ./out/make/wix/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: ${{env.BUILD_NAMEia32}}_ZIP + path: ./out/make/zip/win32/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 + name: ${{env.BUILD_NAMEia32}}_MSI + path: ./out/make/wix/ia32/*.msi + \ No newline at end of file diff --git a/package.json b/package.json index 184321407..e93272b98 100755 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "@electron-forge/maker-zip": "^7.2.0", "@electron-forge/maker-dmg": "^7.2.0", "@electron-forge/maker-wix": "^7.2.0", - "electron": "28.1.4" + "electron": "28.1.4", + "node-gyp": "^10.1.0" } }