Skip to content

correct repo

correct repo #17

Workflow file for this run

name: Docker
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
on:
workflow_dispatch:
push:
branches: [ "master" ]
# Publish semver tags as releases.
tags: [ 'v*.*.*' ]
pull_request:
branches: [ "master" ]
env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
strategy:
matrix:
platform: [ arm64 ]
runs-on: warpdev-ubuntu-latest-arm64-4x
permissions:
contents: read
packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write
env:
AWS_ACCESS_KEY_ID: ${{ secrets.CI_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_AWS_SECRET_ACCESS_KEY }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Install the cosign tool except on PR
# https://github.com/sigstore/cosign-installer
#- name: Install cosign
# if: github.event_name != 'pull_request'
# uses: sigstore/cosign-installer@v3.1.2
# with:
# cosign-release: 'v2.2.0'
# Workaround: https://github.com/docker/build-push-action/issues/461
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v2
with:
version: 'v0.10.4'
driver-opts: network=host
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: false
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log into Docker Hub for increased limits
if: false
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: false
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}-${{ matrix.platform }}
provenance: false
labels: ${{ steps.meta.outputs.labels }}
# Currently using S3 in EU as BuildJet is in the EU and going to the U.S. may be slow
cache-from: type=gha,url=http://127.0.0.1:49160/
cache-to: type=gha,url=http://127.0.0.1:49160/
build-args: |
BUILD_PARALLEL_LEVEL=4
platforms: linux/${{ matrix.platform }}
target: pg
- name: Build and push slim Docker image
id: build-and-push-slim
uses: docker/build-push-action@v4
with:
context: .
push: false
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-slim:${{ github.sha }}-${{ matrix.platform }}
provenance: false
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,url=http://127.0.0.1:49160/
cache-to: type=gha,url=http://127.0.0.1:49160/
build-args: |
BUILD_PARALLEL_LEVEL=4
platforms: linux/${{ matrix.platform }}
target: pg-slim
- name: Build and push dev Docker image
id: build-and-push-dev
uses: docker/build-push-action@v4
with:
context: .
push: false
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-dev:${{ github.sha }}-${{ matrix.platform }}
provenance: false
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,url=http://127.0.0.1:49160/
cache-to: type=gha,url=http://127.0.0.1:49160/
build-args: |
BUILD_PARALLEL_LEVEL=4
platforms: linux/${{ matrix.platform }}
target: builder
# # Sign the resulting Docker image digest except on PRs.
# # This will only write to the public Rekor transparency log when the Docker
# # repository is public to avoid leaking data. If you would like to publish
# # transparency data even for private images, pass --force to cosign below.
# # https://github.com/sigstore/cosign
# - name: Sign the published Docker image
# if: ${{ github.event_name != 'pull_request' }}
# env:
# COSIGN_EXPERIMENTAL: "true"
# # This step uses the identity token to provision an ephemeral certificate
# # against the sigstore community Fulcio instance.
# run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign {}@${{ steps.build-and-push.outputs.digest }}
manifest:
strategy:
matrix:
flavor: [ "", "-slim", "-dev" ]
if: github.event_name != 'pull_request' && github.repository == 'omnigres/omnigres'
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}${{ matrix.flavor }}
- name: Create and push manifest images (rev)
uses: Noelware/docker-manifest-action@master # or use a pinned version in the Releases tab
with:
inputs:
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}${{ matrix.flavor }}:${{ github.sha }}
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}${{ matrix.flavor }}:${{ github.sha }}-amd64,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}${{ matrix.flavor }}:${{ github.sha }}-arm64
push: true
- name: Create and push manifest images (latest)
uses: Noelware/docker-manifest-action@master # or use a pinned version in the Releases tab
with:
inputs: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}${{ matrix.flavor }}:latest
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}${{ matrix.flavor }}:${{ github.sha }}-amd64,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}${{ matrix.flavor }}:${{ github.sha }}-arm64
push: true