add support for multi arch #6
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-dbs | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| paths-ignore: [ "*.md" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| paths-ignore: [ "*.md" ] | |
| workflow_dispatch: # Allows you to run this workflow manually from the Actions tab | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| BUILDKIT_PROGRESS: "plain" # Full logs for CI build. | |
| REGISTRY_SRC: ${{ vars.REGISTRY_SRC || 'quay.io' }} # For BASE_NAMESPACE of images: where to pull base images from, docker.io or other source registry URL. | |
| REGISTRY_DST: ${{ vars.REGISTRY_DST || 'quay.io' }} # For tags of built images: where to push images to, docker.io or other destination registry URL. | |
| # DOCKER_REGISTRY_USERNAME and DOCKER_REGISTRY_PASSWORD is required for docker image push, they should be set in CI secrets. | |
| DOCKER_REGISTRY_USERNAME: ${{ vars.DOCKER_REGISTRY_USERNAME }} | |
| DOCKER_REGISTRY_PASSWORD: ${{ secrets.DOCKER_REGISTRY_PASSWORD }} | |
| # used to sync image to mirror registry | |
| DOCKER_MIRROR_REGISTRY_USERNAME: ${{ vars.DOCKER_MIRROR_REGISTRY_USERNAME }} | |
| DOCKER_MIRROR_REGISTRY_PASSWORD: ${{ secrets.DOCKER_MIRROR_REGISTRY_PASSWORD }} | |
| CI_PROJECT_NAME: ${{ vars.CI_PROJECT_NAME || 'LabNow/lab-foundation' }} | |
| jobs: | |
| ## Postgres | |
| job-postgres: | |
| name: 'postgres-17' | |
| strategy: | |
| matrix: | |
| include: [{arch: amd64, runner: ubuntu-latest}, {arch: arm64, runner: ubuntu-24.04-arm}] | |
| runs-on: ${{ matrix.runner }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - run: | | |
| source ./tool.sh | |
| PUSH='false' TAG_VER='false' IMG_PREFIX_DST='' build_image postgres-17 latest docker_atom/Dockerfile --build-arg "BASE_IMG=postgres:17" | |
| docker images | |
| IMG_PREFIX_SRC='' build_image postgres-17 latest docker_base/Dockerfile --build-arg "BASE_IMG=postgres-17" --build-arg "PYTHON_VERSION=3.12" --build-context postgres-17=docker-image://postgres-17:latest | |
| ## Sync all images in this build (listed by "names") to mirror registry. | |
| sync_images: | |
| needs: ["job-postgres"] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - env: | |
| AUTH_FILE_CONTENT: ${{ secrets.AUTH_FILE_CONTENT }} | |
| DOCKER_MIRROR_REGISTRY: ${{ vars.DOCKER_MIRROR_REGISTRY }} | |
| run: | | |
| source ./tool.sh | |
| printf '%s' "$AUTH_FILE_CONTENT" > .github/workflows/auth.json && ls -alh ./.github/workflows | |
| printenv | grep -v 'PATH' > /tmp/docker.env && echo "REGISTRY_URL=${REGISTRY_DST}" >> /tmp/docker.env | |
| docker run --rm --env-file /tmp/docker.env -v $(pwd):/tmp -w /tmp ${IMG_PREFIX_DST:-labnow}/docker-kit \ | |
| python /opt/utils/image-syncer/run_jobs.py --auth-file=/tmp/.github/workflows/auth.json |