12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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]
- 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 jobs)
- run: |
- cd client
- yarn --network-timeout 100000
- yarn build
- cp -r build ../server
- - name: Build and Release Electron App
- 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/') }}
- # Job to build each Docker platform separately
- docker_build:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- platform: [linux/amd64, linux/arm64, linux/arm/v7]
- steps:
- - name: Check out Git repository
- uses: actions/checkout@v4
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
- - name: Login to DockerHub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PWD }}
- - name: Build and Push Docker Image for ${{ matrix.platform }}
- uses: docker/build-push-action@v5
- with:
- context: .
- platforms: ${{ matrix.platform }}
- tags: |
- zilliz/attu:${{ github.ref_name }}-${{ matrix.platform }}
- build-args: |
- VERSION=${{ github.ref_name }}
- push: true
- # Job to combine platform-specific tags into one multi-platform tag
- docker_manifest:
- needs: docker_build
- runs-on: ubuntu-latest
- steps:
- - name: Install Docker CLI
- run: sudo apt-get update && sudo apt-get install -y docker.io
- - name: Login to DockerHub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PWD }}
- - name: Create and Push Docker Manifest
- run: |
- docker manifest create zilliz/attu:${{ github.ref_name }} \
- --amend zilliz/attu:${{ github.ref_name }}-linux/amd64 \
- --amend zilliz/attu:${{ github.ref_name }}-linux/arm64 \
- --amend zilliz/attu:${{ github.ref_name }}-linux/arm/v7
- docker manifest push zilliz/attu:${{ github.ref_name }}
|