Publish QNS Docker Image #8727
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
| # Publish a Docker image for QNS (QUIC Network Simulator) to GitHub Container Registry. | |
| # https://interop.seemann.io/ uses this image to run interop tests. | |
| name: Publish QNS Docker Image | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| # Run at 1 AM each day, so the interop-runner has a current image. | |
| - cron: "0 1 * * *" | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| docker-image: | |
| name: Build and push Docker image | |
| runs-on: ubuntu-24.04 | |
| permissions: | |
| packages: write # Required to push to GitHub Container Registry. | |
| steps: | |
| - uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0 | |
| with: | |
| platforms: arm64 | |
| cache-image: true | |
| - uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 | |
| with: | |
| cache-binary: true | |
| - uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ github.token }} | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0 | |
| id: meta | |
| with: | |
| images: ghcr.io/${{ github.repository }}-qns | |
| tags: | | |
| type=schedule | |
| type=ref,event=branch | |
| type=ref,event=tag | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 | |
| with: | |
| context: . | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| file: qns/Dockerfile | |
| build-args: RUST_VERSION=stable | |
| secrets: github_token=${{ secrets.GITHUB_TOKEN }} | |
| platforms: linux/amd64, linux/arm64 | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=min |