Modify GH Action for caching

pull/289/head
Rizky Maulana Nugraha 2021-01-27 19:50:49 +07:00
rodzic dd0613f56e
commit 3773f1f25a
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: F08C600969AC1656
1 zmienionych plików z 191 dodań i 18 usunięć

Wyświetl plik

@ -1,29 +1,49 @@
name: build-latest
on:
workflow_dispatch:
inputs:
distro:
description: Base image distro
required: true
default: debian
imageVersion:
description: Base distro image version/release
required: true
default: bullseye
imageVariant:
description: Base image variant
required: true
default: slim
# workflow_dispatch:
# inputs:
# distro:
# description: Base image distro
# required: true
# default: debian
# imageVersion:
# description: Base distro image version/release
# required: true
# default: bullseye
# imageVariant:
# description: Base image variant
# required: true
# default: slim
push:
pull_request:
jobs:
build-base:
build-image:
runs-on: ubuntu-latest
env:
latest-ref: refs/heads/develop
strategy:
matrix:
postgresMajorVersion:
- 13
postgresMinorRelease:
- 1
include:
- distro: debian
imageVersion: bullseye
imageVariant: slim
steps:
- uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Get build cache
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: buildx-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}-${{ github.sha }}
restore-keys: |
buildx-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}-
- name: Login to DockerHub
uses: docker/login-action@v1
with:
@ -31,10 +51,163 @@ jobs:
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Build base image
id: docker_build
id: docker_build_base
uses: docker/build-push-action@v2
with:
context: base_build
file: Dockerfile
push: true
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:${{ github.event.inputs.distro }}-${{ github.event.inputs.imageVersion }}-${{ github.event.inputs.imageVariant }}
push: false
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:base-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}
build-args: |
DISTRO=${{ matrix.distro }}
IMAGE_VERSION=${{ matrix.imageVersion }}
IMAGE_VARIANT=${{ matrix.imageVariant }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
- name: Build prod image
id: docker_build_prod
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile
push: false
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:${{ matrix.postgresMajorVersion }}.${{ matrix.postgresMinorRelease }}
build-args: |
DISTRO=${{ matrix.distro }}
IMAGE_VERSION=${{ matrix.imageVersion }}
IMAGE_VARIANT=${{ matrix.imageVariant }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
run-scenario-tests:
runs-on: ubuntu-latest
needs: [ build-image ]
strategy:
matrix:
postgresMajorVersion:
- 13
postgresMinorRelease:
- 1
scenario:
- datadir_init
- streaming_replication
- collations
- extensions
- logical_replication
include:
- distro: debian
imageVersion: bullseye
imageVariant: slim
steps:
- uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Get build cache
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: buildx-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}-${{ github.sha }}
restore-keys: |
buildx-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}-
- name: Build base image for testing
id: docker_build_base
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile
push: false
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:manual-build
build-args: |
DISTRO=${{ matrix.distro }}
IMAGE_VERSION=${{ matrix.imageVersion }}
IMAGE_VARIANT=${{ matrix.imageVariant }}
cache-from: type=local,src=/tmp/.buildx-cache
- name: Build image for testing
id: docker_build_testing_image
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile.test
push: false
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:manual-build
load: true
- name: Run scenario test
run: |
pushd scenario_tests/${{ matrix.scenario }}
./test.sh
popd
deploy-image:
# Identical to the build-image step, but now push to registry
runs-on: ubuntu-latest
env:
latest-ref: refs/heads/develop
strategy:
matrix:
postgresMajorVersion:
- 13
postgresMinorRelease:
- 1
include:
- distro: debian
imageVersion: bullseye
imageVariant: slim
needs: [ build-image, run-scenario-tests ]
steps:
- uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Get build cache
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: buildx-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}-${{ github.sha }}
restore-keys: |
buildx-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}-
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Build base image
id: docker_build_base
uses: docker/build-push-action@v2
with:
context: base_build
file: Dockerfile
push: ${{ github.ref == env.latest-ref }}
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:base-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}
build-args: |
DISTRO=${{ matrix.distro }}
IMAGE_VERSION=${{ matrix.imageVersion }}
IMAGE_VARIANT=${{ matrix.imageVariant }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
- name: Build prod image
id: docker_build_prod
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile
push: ${{ github.ref == env.latest-ref }}
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:${{ matrix.postgresMajorVersion }}.${{ matrix.postgresMinorRelease }}
build-args: |
DISTRO=${{ matrix.distro }}
IMAGE_VERSION=${{ matrix.imageVersion }}
IMAGE_VARIANT=${{ matrix.imageVariant }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache