From 6b81bc3f40629c38e1131eea572007a1c220b323 Mon Sep 17 00:00:00 2001 From: Rafael Araujo Lehmkuhl Date: Fri, 11 Oct 2024 17:21:19 -0300 Subject: [PATCH] ci: Inject version number and publish versioning metadata artifacts The `latest.yml` files are now generated, pointing to the artifact binaries, with the metadata needed for the `electron-updater` system to work. --- .github/workflows/ci.yml | 77 +++++++++++++++++++++++++++++++--------- package.json | 7 +++- 2 files changed, 66 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53659d116..03628d7f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,20 +66,28 @@ jobs: matrix: include: - os: macos-13 - suffix: macos + suffix: mac + arch: x64 extension: dmg + latestMetadataName: latest-mac.yml - os: ubuntu-latest suffix: linux + arch: x86_64 extension: AppImage + latestMetadataName: latest-linux.yml - os: ubuntu-24-arm suffix: linux-arm + arch: arm64 extension: AppImage + latestMetadataName: latest-linux-arm64.yml - os: windows-latest - suffix: windows + suffix: win + arch: x64 extension: exe + latestMetadataName: latest.yml steps: - name: Checkout @@ -99,6 +107,14 @@ jobs: with: bun-version: latest + - name: Set version as environment variable (Windows) + if: matrix.os == 'windows-latest' + run: echo "VERSION=$(git describe --tags --abbrev=0 | sed 's/^v//')" >> $env:GITHUB_ENV + + - name: Set version as environment variable (others) + if: matrix.os != 'windows-latest' + run: echo "VERSION=$(git describe --tags --abbrev=0 | sed 's/^v//')" >> $GITHUB_ENV + - name: Bun build run: | bun install --frozen-lockfile @@ -107,36 +123,63 @@ jobs: - name: Bun deploy (arm) if: matrix.os == 'ubuntu-24-arm' run: | - SNAPCRAFT_BUILD_ENVIRONMENT="host" bun deploy:electron + SNAPCRAFT_BUILD_ENVIRONMENT="host" bun run deploy:electron - name: Bun deploy (others) if: matrix.os != 'ubuntu-24-arm' run: | - bun deploy:electron + bun run deploy:electron - - name: Build artifact name - if: "!startsWith(github.ref, 'refs/tags/') && success()" - run: | - mv dist/Cockpit*.${{ matrix.extension }} dist/Cockpit-${{ matrix.suffix }}-$(git describe --tags).${{ matrix.extension }} + - name: Upload binary artifact + uses: actions/upload-artifact@v3 + with: + name: Cockpit-${{ matrix.suffix }}-${{ matrix.arch }}-${{ env.VERSION }}.${{ matrix.extension }} + path: dist/Cockpit*.${{ matrix.extension }} + if-no-files-found: error - - name: Build tag name - if: startsWith(github.ref, 'refs/tags/') && success() - run: | - mv dist/Cockpit*.${{ matrix.extension }} dist/Cockpit-${{ matrix.suffix }}-$(git describe --tags --abbrev=0).${{ matrix.extension }} + - name: Upload diff artifact (mac-only) + if: matrix.os == 'macos-13' + uses: actions/upload-artifact@v3 + with: + name: Cockpit-${{ matrix.suffix }}-${{ matrix.arch }}-${{ env.VERSION }}.zip + path: dist/Cockpit*.zip + if-no-files-found: error - - name: Upload Artifact + - name: Upload latest metadata artifact uses: actions/upload-artifact@v3 with: - name: cockpit-${{ matrix.suffix }} - path: dist/Cockpit-${{ matrix.suffix }}-*.${{ matrix.extension }} + name: ${{ matrix.latestMetadataName }} + path: dist/latest*.yml if-no-files-found: error - - name: Upload Release + - name: Upload binary release + uses: svenstaro/upload-release-action@v2 + if: startsWith(github.ref, 'refs/tags/') && success() + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: dist/Cockpit-${{ matrix.suffix }}-${{ matrix.arch }}-${{ env.VERSION }}.${{ matrix.extension }} + tag: ${{ github.ref }} + overwrite: true + prerelease: true + file_glob: true + + - name: Upload diff release (mac-only) + uses: svenstaro/upload-release-action@v2 + if: startsWith(github.ref, 'refs/tags/') && success() && matrix.os == 'macos-13' + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: dist/Cockpit-${{ matrix.suffix }}-${{ matrix.arch }}-${{ env.VERSION }}.zip + tag: ${{ github.ref }} + overwrite: true + prerelease: true + file_glob: true + + - name: Upload latest metadata release uses: svenstaro/upload-release-action@v2 if: startsWith(github.ref, 'refs/tags/') && success() with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: dist/Cockpit-${{ matrix.suffix }}-*.${{ matrix.extension }} + file: dist/${{ matrix.latestMetadataName }} tag: ${{ github.ref }} overwrite: true prerelease: true diff --git a/package.json b/package.json index 80a934f83..3cba670d4 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build:serve": "bun run build && bun run serve", "coverage": "vitest --coverage", "deploy:electron:dir": "electron-builder --dir", - "deploy:electron": "electron-builder --publish=never", + "deploy:electron": "electron-builder --publish=never -c.extraMetadata.version=$(git describe --tags --abbrev=0 | sed 's/^v//')", "deploy:flatpak": "electron-builder --x64 --linux flatpak", "dev": "vite --host", "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --ignore-path .gitignore --max-warnings=0", @@ -119,6 +119,11 @@ ], "appId": "org.bluerobotics.cockpit", "productName": "Cockpit", + "publish": { + "provider": "github", + "owner": "bluerobotics" + }, + "artifactName": "${productName}-${os}-${arch}-${version}.${ext}", "mac": { "category": "public.app-category.utilities", "icon": "public/pwa-512x512.png"