Test helm-chart and optimize Dockerfile for local builds. #158
This file contains 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: Docker Build Action | |
on: | |
pull_request: | |
branches: | |
- master | |
release: | |
types: | |
- published | |
push: | |
branches: | |
- master | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} | |
PROVISIONER_IMAGE_NAME: ${{ github.repository }}-provisioner | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: false | |
- name: Lint | |
uses: golangci/golangci-lint-action@v6 | |
with: | |
args: --build-tags integration -p bugs -p unused --timeout=10m | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: load modules for dm-raid and dm-integrity | |
run: lsmod && sudo modprobe dm-raid && sudo modprobe dm-integrity && lsmod | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: false | |
- name: Create k8s Kind Cluster | |
uses: helm/[email protected] | |
with: | |
version: v0.24.0 | |
install_only: true | |
- name: Test | |
run: | | |
make test | |
make test-cleanup | |
build-platforms: | |
name: Docker Build Platforms | |
runs-on: ubuntu-latest | |
needs: | |
- lint | |
- test | |
strategy: | |
matrix: | |
os: | |
- linux | |
arch: | |
- amd64 | |
- arm64 | |
- arm/v7d | |
env: | |
DOCKER_REGISTRY_TOKEN: ${{ secrets.DOCKER_REGISTRY_TOKEN }} | |
steps: | |
- name: Log in to the container registry | |
if: ${{ env.DOCKER_REGISTRY_TOKEN != '' }} | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ secrets.DOCKER_REGISTRY_USER }} | |
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} | |
- name: Checkout | |
if: ${{ env.DOCKER_REGISTRY_TOKEN != '' }} | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
if: ${{ env.DOCKER_REGISTRY_TOKEN != '' }} | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: false | |
- name: Make tag | |
if: ${{ env.DOCKER_REGISTRY_TOKEN != '' }} | |
run: | | |
[ "${GITHUB_EVENT_NAME}" == 'pull_request' ] && echo "tag=${GITHUB_HEAD_REF##*/}" >> $GITHUB_ENV || true | |
[ "${GITHUB_EVENT_NAME}" == 'release' ] && echo "tag=${GITHUB_REF##*/}" >> $GITHUB_ENV || true | |
[ "${GITHUB_EVENT_NAME}" == 'push' ] && echo "tag=latest" >> $GITHUB_ENV || true | |
- name: Build | |
run: | | |
make GOOS=${{ matrix.os }} GOARCH=${{ matrix.arch }} | |
- name: Build and push image | |
if: ${{ env.DOCKER_REGISTRY_TOKEN != '' }} | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
push: true | |
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.tag }}-${{ matrix.arch }} | |
file: Dockerfile.plugin | |
platforms: ${{ matrix.os }}/${{ matrix.arch }} | |
- name: Build and push provisioner image | |
if: ${{ env.DOCKER_REGISTRY_TOKEN != '' }} | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
push: true | |
tags: ${{ env.REGISTRY }}/${{ env.PROVISIONER_IMAGE_NAME }}:${{ env.tag }}-${{ matrix.arch }} | |
file: Dockerfile.provisioner | |
platforms: ${{ matrix.os }}/${{ matrix.arch }} | |
build-multiarch-manifest: | |
name: Docker Build Platforms | |
runs-on: ubuntu-latest | |
needs: | |
- build-platforms | |
env: | |
DOCKER_REGISTRY_TOKEN: ${{ secrets.DOCKER_REGISTRY_TOKEN }} | |
steps: | |
- name: Log in to the container registry | |
if: ${{ env.DOCKER_REGISTRY_TOKEN != '' }} | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ secrets.DOCKER_REGISTRY_USER }} | |
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} | |
- name: Make tag | |
if: ${{ env.DOCKER_REGISTRY_TOKEN != '' }} | |
run: | | |
[ "${GITHUB_EVENT_NAME}" == 'pull_request' ] && echo "tag=${GITHUB_HEAD_REF##*/}" >> $GITHUB_ENV || true | |
[ "${GITHUB_EVENT_NAME}" == 'release' ] && echo "tag=${GITHUB_REF##*/}" >> $GITHUB_ENV || true | |
[ "${GITHUB_EVENT_NAME}" == 'push' ] && echo "tag=latest" >> $GITHUB_ENV || true | |
- name: Push multi-platform image | |
if: ${{ env.DOCKER_REGISTRY_TOKEN != '' }} | |
run: | | |
docker manifest create \ | |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.tag }} \ | |
--amend ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.tag }}-amd64 \ | |
--amend ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.tag }}-arm64 \ | |
--amend ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.tag }}-arm/v7d | |
docker manifest ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.tag }} | |
docker manifest create \ | |
${{ env.REGISTRY }}/${{ env.PROVISIONER_IMAGE_NAME }}:${{ env.tag }} \ | |
--amend ${{ env.REGISTRY }}/${{ env.PROVISIONER_IMAGE_NAME }}:${{ env.tag }}-amd64 \ | |
--amend ${{ env.REGISTRY }}/${{ env.PROVISIONER_IMAGE_NAME }}:${{ env.tag }}-arm64 \ | |
--amend ${{ env.REGISTRY }}/${{ env.PROVISIONER_IMAGE_NAME }}:${{ env.tag }}-arm/v7d | |
docker manifest ${{ env.REGISTRY }}/${{ env.PROVISIONER_IMAGE_NAME }}:${{ env.tag }} |