From 1af08c5473fd05115ab1e7b74c2098a478fc87aa Mon Sep 17 00:00:00 2001 From: Erik Merkle Date: Tue, 11 Jul 2023 12:31:25 -0500 Subject: [PATCH] add docker build tests --- .github/workflows/docker-build.yaml | 170 ++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 .github/workflows/docker-build.yaml diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml new file mode 100644 index 00000000..4d920cd8 --- /dev/null +++ b/.github/workflows/docker-build.yaml @@ -0,0 +1,170 @@ + +name: Docker Image build tests + +on: [push, pull_request] + +jobs: + docker-build-oss: + name: Build ${{ matrix.cassandra-version }} Cassandra Docker image + runs-on: ubuntu-latest + strategy: + matrix: + include: + - cassandra-version: '3.11' + docker-file: Dockerfile-oss + build-target: oss311 + - cassandra-version: '4.0' + docker-file: Dockerfile-4_0 + build-target: oss40 + - cassandra-version: '4.1' + docker-file: Dockerfile-4_1 + build-target: oss41 + steps: + - name: Check out source code + uses: actions/checkout@v3 + # Setup metadata based on the commit/tag that will be used for tagging the image + # Only build and publish a commit based tag + - name: Setup Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: k8ssandra/cass-management-api + tags: type=sha,prefix=${{ matrix.cassandra-version }}- + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_PASSWORD }} + - name: Build Cassandra ${{ matrix.cassandra-version }} + id: docker_build + uses: docker/build-push-action@v3 + with: + file: ${{ matrix.docker-file }} + context: . + push: false + tags: ${{ steps.meta.outputs.tags }} + platforms: linux/amd64,linux/arm64 + target: ${{ matrix.build-target }} + docker-build-dse-ubuntu: + name: Build DSE Ubuntu Docker images + runs-on: ubuntu-latest + strategy: + matrix: + jdk-version: [jdk8, jdk11] + steps: + - name: Check out source code + uses: actions/checkout@v3 + - name: Setup Maven settings file + run: | + mkdir -p ~/.m2 + cat < ~/.m2/settings.xml + + + + artifactory-snapshots + ${{ secrets.ARTIFACTORY_USERNAME }} + ${{ secrets.ARTIFACTORY_PASSWORD }} + + + artifactory-releases + ${{ secrets.ARTIFACTORY_USERNAME }} + ${{ secrets.ARTIFACTORY_PASSWORD }} + + + + EOF + cp ~/.m2/settings.xml settings.xml + # Setup metadata based on the commit/tag that will be used for tagging the image + # Only build and publish a commit based tag + - name: Setup Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: datastax/dse-mgmtapi-6_8 + tags: type=sha,prefix=dse68-${{ matrix.jdk-version }}- + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_PASSWORD }} + - name: Build DSE 6.8-${{ matrix.jdk-version }} + id: docker_build + uses: docker/build-push-action@v3 + with: + file: dse-68/Dockerfile.${{ matrix.jdk-version }} + context: . + push: false + tags: ${{ steps.meta.outputs.tags }} + platforms: linux/amd64,linux/arm64 + target: dse68 + cache-from: type=inline + cache-to: type=inline + docker-build-dse-ubi: + name: Build DSE UBI Docker image + needs: docker-build-dse-ubuntu + runs-on: ubuntu-latest + steps: + - name: Check out source code + uses: actions/checkout@v3 + - name: Setup Maven settings file + run: | + mkdir -p ~/.m2 + cat < ~/.m2/settings.xml + + + + artifactory-snapshots + ${{ secrets.ARTIFACTORY_USERNAME }} + ${{ secrets.ARTIFACTORY_PASSWORD }} + + + artifactory-releases + ${{ secrets.ARTIFACTORY_USERNAME }} + ${{ secrets.ARTIFACTORY_PASSWORD }} + + + + EOF + cp ~/.m2/settings.xml settings.xml + # Setup metadata based on the commit/tag that will be used for tagging the image + # Only build and publish a commit based tag + - name: Setup Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: datastax/dse-mgmtapi-6_8 + tags: type=sha,prefix=dse68-ubi7- + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_PASSWORD }} + - name: Set outputs + id: vars + run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + - name: Build DSE 6.8-ubi7 + id: docker_build + uses: docker/build-push-action@v3 + with: + file: dse-68/Dockerfile.ubi7 + build-args: VERSION=dse68-jdk8-${{ steps.vars.outputs.sha_short }} + context: . + push: false + tags: ${{ steps.meta.outputs.tags }} + platforms: linux/amd64,linux/arm64 + target: dse68 + cache-from: type=inline + cache-to: type=inline +