A lexicon-driven AppView for ATProto.
Something went wrong. Try again.
YAML
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889name: Build and Publish Docker Image
on: release: types: [published]
env: GHCR_IMAGE: ghcr.io/${{ github.repository }} ATCR_IMAGE: atcr.io/${{ secrets.ATCR_NAMESPACE }}/happyview
jobs: happyview: permissions: contents: read packages: write id-token: write strategy: fail-fast: false matrix: include: - platform: linux/amd64 runs-on: depot-ubuntu-24.04 - platform: linux/arm64 runs-on: depot-ubuntu-24.04-arm runs-on: ${{ matrix.runs-on }}
steps: - name: Checkout repository uses: actions/checkout@v4
- name: Set up Docker Buildx uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to ATCR uses: docker/login-action@v3 with: registry: atcr.io username: ${{ secrets.ATCR_USERNAME }} password: ${{ secrets.ATCR_PASSWORD }}
- name: Extract metadata (tags, labels) id: meta uses: docker/metadata-action@v5 with: images: | ${{ env.GHCR_IMAGE }} ${{ env.ATCR_IMAGE }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=sha
- name: Build and push by digest id: build uses: docker/build-push-action@v5 with: context: . platforms: ${{ matrix.platform }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha,scope=build-${{ matrix.platform }} cache-to: type=gha,scope=build-${{ matrix.platform }},mode=max outputs: type=image,"name=${{ env.GHCR_IMAGE }},${{ env.ATCR_IMAGE }}",push-by-digest=true,name-canonical=true,push=true
- name: Create GHCR manifest run: | GHCR_TAGS=$(jq -cr '.tags | map(select(startswith("ghcr.io"))) | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") docker buildx imagetools create --append $GHCR_TAGS \ ${{ env.GHCR_IMAGE }}@${{ steps.build.outputs.digest }} 2>/dev/null || \ docker buildx imagetools create $GHCR_TAGS \ ${{ env.GHCR_IMAGE }}@${{ steps.build.outputs.digest }}
- name: Create ATCR manifest run: | ATCR_TAGS=$(jq -cr '.tags | map(select(startswith("atcr.io"))) | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") if [ -n "$ATCR_TAGS" ]; then docker buildx imagetools create --append $ATCR_TAGS \ ${{ env.ATCR_IMAGE }}@${{ steps.build.outputs.digest }} 2>/dev/null || \ docker buildx imagetools create $ATCR_TAGS \ ${{ env.ATCR_IMAGE }}@${{ steps.build.outputs.digest }} fi