From 4d684c6a69a5089a058991752070e5e1db4b7b73 Mon Sep 17 00:00:00 2001 From: shanghaikid Date: Tue, 12 Nov 2024 19:33:52 +0800 Subject: [PATCH] update release action Signed-off-by: shanghaikid --- .github/workflows/electron.yml | 43 ------------------ .github/workflows/release.yml | 82 ++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 43 deletions(-) delete mode 100644 .github/workflows/electron.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/electron.yml b/.github/workflows/electron.yml deleted file mode 100644 index 63bd4033..00000000 --- a/.github/workflows/electron.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Build electron app - -on: - push: - tags: - - "*" - -jobs: - release: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - os: [macos-latest, ubuntu-latest, windows-latest] - - steps: - - name: Check out Git repository - uses: actions/checkout@v4 - - - name: Install Node.js, NPM and Yarn - uses: actions/setup-node@v4 - with: - node-version: 22 - - - name: Build client - run: | - cd client - yarn --network-timeout 100000 - yarn build - cp -r build ../server - - - name: Build/release Electron app - uses: samuelmeuli/action-electron-builder@v1 - with: - package_root: "./server" - build_script_name: "build-electron" - # GitHub token, automatically provided to the action - # (No need to define this secret in the repo settings) - github_token: ${{ secrets.GH_TOKEN }} - - # If the commit is tagged with a version (e.g. "v1.0.0"), - # release the app after building - release: ${{ startsWith(github.ref, 'refs/tags/v') }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..e231d9bd --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,82 @@ +name: Build and Release Electron App and Docker Image + +on: + push: + tags: + - "*" # Triggers on any tag + +jobs: + build_and_release: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest, docker] + include: + - os: docker + platform: linux/amd64,linux/arm64,linux/arm/v7 + + steps: + - name: Check out Git repository + uses: actions/checkout@v4 + + - name: Install Node.js, NPM, and Yarn + uses: actions/setup-node@v4 + with: + node-version: 22 + + - name: Build client (only for non-Docker OS) + if: matrix.os != 'docker' + run: | + cd client + yarn --network-timeout 100000 + yarn build + cp -r build ../server + + - name: Build and Release Electron App + if: matrix.os != 'docker' + uses: samuelmeuli/action-electron-builder@v1 + with: + package_root: "./server" + build_script_name: "build-electron" + github_token: ${{ secrets.GH_TOKEN }} + release: ${{ startsWith(github.ref, 'refs/tags/') }} + + - name: Set up Docker Buildx (only for Docker job) + if: matrix.os == 'docker' + uses: docker/setup-buildx-action@v3 + + - name: Login to DockerHub (only for Docker job) + if: matrix.os == 'docker' + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PWD }} + + - name: Build and Push Docker Image + if: matrix.os == 'docker' + uses: docker/build-push-action@v5 + with: + context: . + platforms: ${{ matrix.platform }} + tags: | + zilliz/attu:${{ github.ref_name }} + cache-from: type=registry,ref=zilliz/attu:cache + cache-to: type=inline + build-args: | + VERSION=${{ github.ref_name }} + push: true + + release_draft: + needs: build_and_release + runs-on: ubuntu-latest + if: ${{ startsWith(github.ref, 'refs/tags/') }} + steps: + - name: Create GitHub Release Draft + uses: actions/create-release@v1 + with: + tag_name: ${{ github.ref_name }} + release_name: "Release ${{ github.ref_name }}" + draft: true + prerelease: false + token: ${{ secrets.GH_TOKEN }}