summaryrefslogtreecommitdiffstats
path: root/.github/workflows/dockerhub.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/dockerhub.yml')
-rw-r--r--.github/workflows/dockerhub.yml111
1 files changed, 111 insertions, 0 deletions
diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml
new file mode 100644
index 0000000..738c9c0
--- /dev/null
+++ b/.github/workflows/dockerhub.yml
@@ -0,0 +1,111 @@
+name: Dockerhub Dev
+
+on:
+ push:
+ branches-ignore:
+ - coverity_scan
+ workflow_dispatch:
+
+env:
+ CI: 1
+ GH_ACTIONS: 1
+ DEBIAN_FRONTEND: noninteractive
+ APT_OPTS: "-y --no-install-recommends"
+ DOCKER_REPOSITORY: freeradius-dev
+ BRANCH: v3.2.x
+
+jobs:
+ #
+ # Run docker target for each given OS and ARCH. This will
+ # build the Docker images.
+ #
+ build_docker_images:
+ runs-on: ubuntu-22.04
+ if: github.repository_owner == 'FreeRADIUS'
+
+ strategy:
+ matrix:
+ env:
+ - { OS: "ubuntu", ARCH: "linux/amd64", NAME: "amd64" }
+ - { OS: "ubuntu", ARCH: "linux/arm/v7", NAME: "armv7" }
+ - { OS: "ubuntu", ARCH: "linux/arm64/v8", NAME: "arm64v8" }
+ - { OS: "alpine", ARCH: "linux/amd64", NAME: "amd64" }
+ - { OS: "alpine", ARCH: "linux/arm/v6", NAME: "armv6" }
+ - { OS: "alpine", ARCH: "linux/arm/v7", NAME: "armv7" }
+ - { OS: "alpine", ARCH: "linux/arm64/v8", NAME: "arm64v8" }
+
+ fail-fast: false
+
+ name: "${{ matrix.env.OS }}-${{ matrix.env.ARCH }}"
+
+ steps:
+
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 1
+
+ - name: Regenerate Dockerfiles
+ run: |
+ rm scripts/docker/dists/*/Dockerfile || true
+ make docker.regen
+
+ - name: Install qemu
+ run: |
+ sudo apt-get update
+ sudo apt-get install ${APT_OPTS} qemu-user-static
+
+ - name: Build docker image
+ run: |
+ make docker-${{ matrix.env.OS }} \
+ DOCKER_TAG="$DOCKER_REPOSITORY" \
+ DOCKER_BUILD_ARGS="--no-cache --platform ${{ matrix.env.ARCH }}" \
+ DOCKER_VERSION="${{ matrix.env.NAME }}-$BRANCH"
+
+ - name: Docker login
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
+
+ - name: Push arch image to Docker registry
+ shell: bash
+ run: |
+ make docker-push-${{ matrix.env.OS }} \
+ DOCKER_TAG="$DOCKER_REPOSITORY" \
+ DOCKER_VERSION="${{ matrix.env.NAME }}-$BRANCH"
+
+
+ manifest:
+ runs-on: ubuntu-22.04
+ needs: build_docker_images
+ if: github.repository_owner == 'FreeRADIUS'
+
+ strategy:
+ matrix:
+ env:
+ - { OS: "ubuntu", ARCHS: "amd64 armv7 arm64v8", SUFFIX: "" }
+ - { OS: "alpine", ARCHS: "amd64 armv6 armv7 arm64v8", SUFFIX: "-alpine" }
+
+ fail-fast: false
+
+ name: "manifest-${{ matrix.env.OS }}"
+
+ steps:
+
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 1
+
+ - name: Docker login
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
+
+ - name: Create manifests
+ shell: bash
+ run: |
+ make docker-ci-manifest \
+ DOCKER_TAG="$DOCKER_REPOSITORY" \
+ DOCKER_VERSION="$BRANCH${{ matrix.env.SUFFIX }}" \
+ DOCKER_ARCHS="${{ matrix.env.ARCHS }}"