name: Docker Image CI (stable versions) on: push: tags: - "v[0-9]*" - "!v*alpha*" - "!v*beta*" - "!v*rc*" workflow_dispatch: inputs: tag: description: "Tag version to be used for Docker image" required: true default: "latest" jobs: prepare-ui: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 22.19.0 - name: Build UI run: | echo "VITE_APP_VERSION=${GITHUB_REF#refs/tags/}" > ./ui/.env npm --prefix=./ui ci npm --prefix=./ui run build - name: Upload UI build artifacts uses: actions/upload-artifact@v4 with: name: ui-build path: ./ui/dist retention-days: 1 build-and-push: needs: prepare-ui runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: | certimate/certimate registry.cn-shanghai.aliyuncs.com/certimate/certimate tags: | type=ref,event=branch type=ref,event=pr type=semver,pattern=v{{version}} type=semver,pattern=v{{major}}.{{minor}} - name: Log in to DOCKERHUB uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Log in to ALIYUNCS uses: docker/login-action@v3 with: registry: registry.cn-shanghai.aliyuncs.com username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} # - name: Inject tag version of UI # run: | # echo "VITE_APP_VERSION=${GITHUB_REF#refs/tags/}" > ./ui/.env - name: Download UI build artifacts uses: actions/download-artifact@v4 with: name: ui-build path: ./ui/dist - name: Build and push Docker image uses: docker/build-push-action@v6 with: context: . # file: ./Dockerfile file: ./Dockerfile.gh platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true tags: ${{ steps.meta.outputs.tags }}