feat: support broadcasting more ports to local network #97
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build Docker Images | |
| on: | |
| workflow_dispatch: | |
| push: | |
| tags: | |
| - "v*" | |
| env: | |
| REGISTRY: ghcr.io | |
| ORGANIZATION: anyshake | |
| PACKAGE: observer | |
| jobs: | |
| build_docker_image: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| packages: write | |
| contents: read | |
| strategy: | |
| matrix: | |
| platform: | |
| - linux/386 | |
| - linux/amd64 | |
| - linux/arm/v6 | |
| - linux/arm/v7 | |
| - linux/arm64 | |
| - linux/ppc64le | |
| - linux/riscv64 | |
| - linux/s390x | |
| fail-fast: true | |
| steps: | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "latest" | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - name: Build web | |
| working-directory: web/src | |
| run: | | |
| npm install | |
| npm run build | |
| - name: Docker prepare | |
| run: | | |
| platform=${{ matrix.platform }} | |
| echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV | |
| echo "BUILD_PLATFORMS=${{ strategy.job-total }}" >> $GITHUB_ENV | |
| - name: Docker meta | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.REGISTRY }}/${{ env.ORGANIZATION }}/${{ env.PACKAGE }} | |
| - name: Setup QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| with: | |
| version: latest | |
| driver-opts: "image=moby/buildkit:v0.10.5" | |
| - name: Login to registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build and push by digest | |
| id: build | |
| uses: docker/build-push-action@v6 | |
| with: | |
| provenance: false | |
| context: . | |
| platforms: ${{ matrix.platform }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| outputs: type=image,name=${{ env.REGISTRY }}/${{ env.ORGANIZATION }}/${{ env.PACKAGE }},push-by-digest=true,name-canonical=true,push=true | |
| - name: Export digest | |
| run: | | |
| mkdir -p /tmp/digests | |
| digest="${{ steps.build.outputs.digest }}" | |
| touch "/tmp/digests/${digest#sha256:}" | |
| - name: Upload digest | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: digests-${{ env.PLATFORM_PAIR }} | |
| path: /tmp/digests/* | |
| if-no-files-found: error | |
| retention-days: 1 | |
| merge_docker_digests: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| packages: write | |
| contents: read | |
| needs: | |
| - build_docker_image | |
| steps: | |
| - name: Download digests | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: /tmp/digests | |
| pattern: digests-* | |
| merge-multiple: true | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to Registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Detect version tag | |
| run: | | |
| TAG="${GITHUB_REF_NAME}" | |
| echo "IMAGE_TAG=$TAG" >> $GITHUB_ENV | |
| LATEST=false | |
| if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then | |
| LATEST=true | |
| fi | |
| echo "LATEST=$LATEST" >> $GITHUB_ENV | |
| - name: Create manifest list and push | |
| working-directory: /tmp/digests | |
| run: | | |
| DIGESTS="" | |
| for f in *; do | |
| DIGESTS="$DIGESTS ${{ env.REGISTRY }}/${{ env.ORGANIZATION }}/${{ env.PACKAGE }}@sha256:$f" | |
| done | |
| echo "Merging digests: $DIGESTS" | |
| docker buildx imagetools create \ | |
| --tag ${{ env.REGISTRY }}/${{ env.ORGANIZATION }}/${{ env.PACKAGE }}:${IMAGE_TAG} \ | |
| $DIGESTS | |
| if [[ "${LATEST}" == "true" ]]; then | |
| echo "Also tagging as latest" | |
| docker buildx imagetools create \ | |
| --tag ${{ env.REGISTRY }}/${{ env.ORGANIZATION }}/${{ env.PACKAGE }}:latest \ | |
| ${{ env.REGISTRY }}/${{ env.ORGANIZATION }}/${{ env.PACKAGE }}:${IMAGE_TAG} | |
| fi | |
| - name: Inspect final manifest | |
| run: | | |
| docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.ORGANIZATION }}/${{ env.PACKAGE }}:${IMAGE_TAG} |