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 }}