From e2c157a5dff9f878bf3e15fd9f0fba6060863f4c Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sat, 9 Jan 2021 13:55:17 -0600 Subject: [PATCH 01/10] ci: Switched build to docker/build-push-action@v2 --- .github/workflows/main.yml | 63 ++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3e17d475662..16ce894273e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,6 +10,7 @@ on: - adopt13 - adopt14 - adopt15 + - test/* tags: - "[0-9]+.[0-9]+.[0-9]+" - "[0-9]+.[0-9]+.[0-9]+-openj9" @@ -21,7 +22,7 @@ on: jobs: test: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 @@ -32,20 +33,62 @@ jobs: build: needs: - test - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - - name: Build and push Docker images - uses: docker/build-push-action@v1.1.0 + - name: Prepare + id: prep + run: | + DOCKER_IMAGE=itzg/minecraft-server + VERSION=edge + if [[ $GITHUB_REF == refs/tags/* ]]; then + VERSION=${GITHUB_REF#refs/tags/} + fi + if [[ $GITHUB_REF == refs/heads/* ]]; then + VERSION=${GITHUB_REF#refs/heads/} + if [[ $VERSION == master ]]; then + VERSION=latest + fi + fi + TAGS="${DOCKER_IMAGE}:${VERSION//\//-}" + echo ::set-output name=tags::${TAGS} + echo ::set-output name=cache_from::${TAGS} + echo ::set-output name=version::${VERSION//\//-} + echo ::set-output name=cache_version::${VERSION//\//-} + + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx-${{ steps.prep.outputs.cache_version }}- + + - name: Login to DockerHub + uses: docker/login-action@v1 with: - repository: itzg/minecraft-server username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASSWORD }} - tag_with_ref: true - tag_with_sha: false - cache_froms: itzg/minecraft-server:latest - add_git_labels: true - labels: org.opencontainers.image.url=https://github.com/itzg/docker-minecraft-server,org.opencontainers.image.documentation=https://github.com/itzg/docker-minecraft-server + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile push: true + tags: ${{ steps.prep.outputs.tags }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache + labels: | + org.opencontainers.image.documentation=https://github.com/itzg/docker-minecraft-server + org.opencontainers.image.version=${{ steps.prep.outputs.version }} + org.opencontainers.image.revision=${{ github.sha }} + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} From 2f915f422b9fae38b9d18fd2a2830609a87a53d6 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sat, 9 Jan 2021 14:09:33 -0600 Subject: [PATCH 02/10] ci: Added source repo label --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 16ce894273e..a1565f04ebe 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -88,6 +88,7 @@ jobs: labels: | org.opencontainers.image.documentation=https://github.com/itzg/docker-minecraft-server org.opencontainers.image.version=${{ steps.prep.outputs.version }} + org.opencontainers.image.source=https://github.com/itzg/docker-minecraft-server org.opencontainers.image.revision=${{ github.sha }} - name: Image digest From 56f96686c6d7debf24573310cee58315219f385b Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Thu, 2 Dec 2021 20:26:18 -0600 Subject: [PATCH 03/10] build: Switched to gha cache --- .github/workflows/build-multiarch.yml | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build-multiarch.yml b/.github/workflows/build-multiarch.yml index 08c6072a9ff..f50eb29627a 100644 --- a/.github/workflows/build-multiarch.yml +++ b/.github/workflows/build-multiarch.yml @@ -43,14 +43,6 @@ jobs: - name: Setup Docker Buildx uses: docker/setup-buildx-action@v1 - - name: Cache Docker layers - uses: actions/cache@v2.1.7 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - name: Set up QEMU uses: docker/setup-qemu-action@v1.2.0 @@ -70,17 +62,9 @@ jobs: tags: ${{ steps.meta.outputs.tags }} # ensure latest base image is used pull: true - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache-new + cache-from: type=gha + cache-to: type=gha,mode=max labels: ${{ steps.meta.outputs.labels }} - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} - - - # Temp fix - # https://github.com/docker/build-push-action/issues/252 - # https://github.com/moby/buildkit/issues/1896 - name: Move cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache \ No newline at end of file From 792852ced80e5b86357f782e9b6d1e5429efbf42 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Thu, 2 Dec 2021 20:32:33 -0600 Subject: [PATCH 04/10] Trigger another build --- .github/workflows/build-multiarch.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-multiarch.yml b/.github/workflows/build-multiarch.yml index f50eb29627a..aab01f9ab2f 100644 --- a/.github/workflows/build-multiarch.yml +++ b/.github/workflows/build-multiarch.yml @@ -21,7 +21,7 @@ on: - "examples/**" jobs: - docker-buildx: + build: if: github.repository == 'itzg/docker-minecraft-server' runs-on: ubuntu-20.04 steps: From 26bc3990527daaecbb1eb1886699a10aa73e948d Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Thu, 2 Dec 2021 20:45:33 -0600 Subject: [PATCH 05/10] Updated test scripts --- .github/workflows/pr.yml | 14 ++++++++++++++ tests/docker-compose.test.yml | 20 -------------------- tests/docker-compose.yml | 14 ++++++++++++++ tests/test.sh | 17 +++++++++++------ 4 files changed, 39 insertions(+), 26 deletions(-) delete mode 100644 tests/docker-compose.test.yml create mode 100644 tests/docker-compose.yml diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 0bcd9c96f16..e31d7467062 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -11,6 +11,20 @@ jobs: steps: - uses: actions/checkout@v2.4.0 + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Build + uses: docker/build-push-action@v2.7.0 + with: + context: . + platforms: linux/amd64 + tags: itzg/minecraft-server:test-${{ github.repository_owner }}-${{ github.run_id }} + cache-from: type=gha + cache-to: type=gha,mode=max + - name: Run tests run: | tests/test.sh + env: + IMAGE_TO_TEST: itzg/minecraft-server:test-${{ github.repository_owner }}-${{ github.run_id }} diff --git a/tests/docker-compose.test.yml b/tests/docker-compose.test.yml deleted file mode 100644 index bc6fc7752fe..00000000000 --- a/tests/docker-compose.test.yml +++ /dev/null @@ -1,20 +0,0 @@ -version: "3.8" - -services: - sut: - depends_on: - - mc - image: itzg/mc-monitor:0.6.0 - command: status --host mc --retry-interval 1s --retry-limit 120 - mc: - restart: "no" - build: - context: .. - args: - TARGETOS: linux - TARGETARCH: amd64 - cache_from: - - itzg/minecraft-server:latest - environment: - EULA: "TRUE" - diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml new file mode 100644 index 00000000000..3bae8a30327 --- /dev/null +++ b/tests/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.8" + +services: + sut: + depends_on: + - mc + image: itzg/mc-monitor:0.10.3 + command: status --host mc --retry-interval 1s --timeout 1s --retry-limit 240 + mc: + restart: "no" + image: ${IMAGE_TO_TEST:-itzg/minecraft-server} + environment: + EULA: "TRUE" + diff --git a/tests/test.sh b/tests/test.sh index 376aed99cf8..aaf1e3dfab4 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -1,17 +1,22 @@ #!/bin/bash -cd $(dirname $0) +cd "$(dirname "$0")" || exit 1 failed=false -args="-f docker-compose.test.yml" -docker-compose $args run sut || failed=true + +down() { + docker-compose down -v +} + +docker-compose run sut || failed=true echo " Result: failed=$failed" -$failed && docker-compose $args logs mc -docker-compose $args down -v - if $failed; then + docker-compose logs mc + down exit 1 +else + down fi From f8a921a3c0ba1f1f8fb62d1920e220a6ab031401 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Thu, 2 Dec 2021 20:50:14 -0600 Subject: [PATCH 06/10] Built image needs to be loaded into daemon --- .github/workflows/pr.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e31d7467062..c619ca4398f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -4,6 +4,9 @@ on: pull_request: branches: [ master ] +env: + IMAGE_TO_TEST: itzg/minecraft-server:test-${{ github.repository_owner }}-${{ github.run_id }} + jobs: test: runs-on: ubuntu-latest @@ -19,12 +22,11 @@ jobs: with: context: . platforms: linux/amd64 - tags: itzg/minecraft-server:test-${{ github.repository_owner }}-${{ github.run_id }} + tags: ${{ env.IMAGE_TO_TEST }} + load: true cache-from: type=gha cache-to: type=gha,mode=max - name: Run tests run: | tests/test.sh - env: - IMAGE_TO_TEST: itzg/minecraft-server:test-${{ github.repository_owner }}-${{ github.run_id }} From 38319dc361c90bc872c2b63f41b33526479cd0c0 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sat, 4 Dec 2021 17:21:34 -0600 Subject: [PATCH 07/10] Upgraded mc-monitor to get pinger retry fix --- .github/workflows/main.yml | 41 ++++++++++++++++++++--------------- .github/workflows/pr.yml | 16 ++++++++++++++ tests/docker-compose.test.yml | 14 ++++-------- tests/test.sh | 4 ++-- 4 files changed, 45 insertions(+), 30 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0f43c66db77..eb2f607b41b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,6 +15,9 @@ on: - "[0-9]+.[0-9]+.[0-9]+-openj9-nightly" - "[0-9]+.[0-9]+.[0-9]+-adopt11" +env: + IMAGE_TO_TEST: itzg/minecraft-server:test-${{ github.repository_owner }}-${{ github.run_id }} + jobs: test: runs-on: ubuntu-20.04 @@ -54,20 +57,30 @@ jobs: - name: Setup Docker Buildx uses: docker/setup-buildx-action@v1 - - name: Cache Docker layers - uses: actions/cache@v2.1.7 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASSWORD }} + - name: Build for test + uses: docker/build-push-action@v2.7.0 + with: + context: . + platforms: linux/amd64 + tags: ${{ env.IMAGE_TO_TEST }} + # ensure latest base image is used + pull: true + load: true + push: false + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Run tests + run: | + tests/test.sh + + - name: Build and push id: docker_build uses: docker/build-push-action@v2.7.0 @@ -80,8 +93,8 @@ jobs: push: true # tags determined by prep step tags: ${{ steps.prep.outputs.tags }} - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache-new + cache-from: type=gha + cache-to: type=gha,mode=max labels: | org.opencontainers.image.documentation=https://github.com/itzg/docker-minecraft-server org.opencontainers.image.version=${{ steps.prep.outputs.version }} @@ -90,11 +103,3 @@ jobs: - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} - - - # Temp fix - # https://github.com/docker/build-push-action/issues/252 - # https://github.com/moby/buildkit/issues/1896 - name: Move cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 0bcd9c96f16..c619ca4398f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -4,6 +4,9 @@ on: pull_request: branches: [ master ] +env: + IMAGE_TO_TEST: itzg/minecraft-server:test-${{ github.repository_owner }}-${{ github.run_id }} + jobs: test: runs-on: ubuntu-latest @@ -11,6 +14,19 @@ jobs: steps: - uses: actions/checkout@v2.4.0 + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Build + uses: docker/build-push-action@v2.7.0 + with: + context: . + platforms: linux/amd64 + tags: ${{ env.IMAGE_TO_TEST }} + load: true + cache-from: type=gha + cache-to: type=gha,mode=max + - name: Run tests run: | tests/test.sh diff --git a/tests/docker-compose.test.yml b/tests/docker-compose.test.yml index bc6fc7752fe..1638b74b2c3 100644 --- a/tests/docker-compose.test.yml +++ b/tests/docker-compose.test.yml @@ -1,20 +1,14 @@ version: "3.8" services: - sut: + monitor: depends_on: - mc - image: itzg/mc-monitor:0.6.0 - command: status --host mc --retry-interval 1s --retry-limit 120 + image: itzg/mc-monitor:${MC_MONITOR_VERSION:-0.10.4} + command: --debug status --host mc --retry-interval 1s --retry-limit 240 mc: restart: "no" - build: - context: .. - args: - TARGETOS: linux - TARGETARCH: amd64 - cache_from: - - itzg/minecraft-server:latest + image: ${IMAGE_TO_TEST:-itzg/minecraft-server} environment: EULA: "TRUE" diff --git a/tests/test.sh b/tests/test.sh index 376aed99cf8..aed9e90179f 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -1,10 +1,10 @@ #!/bin/bash -cd $(dirname $0) +cd "$(dirname "$0")" failed=false args="-f docker-compose.test.yml" -docker-compose $args run sut || failed=true +docker-compose $args run monitor || failed=true echo " Result: failed=$failed" From 6911bbe46fc141001297647545c484bf56e08735 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sat, 4 Dec 2021 18:06:59 -0600 Subject: [PATCH 08/10] Upgraded mc-monitor to get pinger retry fix --- tests/docker-compose.yml | 4 ++-- tests/test.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml index 3bae8a30327..63b75fc07fb 100644 --- a/tests/docker-compose.yml +++ b/tests/docker-compose.yml @@ -1,10 +1,10 @@ version: "3.8" services: - sut: + monitor: depends_on: - mc - image: itzg/mc-monitor:0.10.3 + image: itzg/mc-monitor:${MC_MONITOR_VERSION:-0.10.4} command: status --host mc --retry-interval 1s --timeout 1s --retry-limit 240 mc: restart: "no" diff --git a/tests/test.sh b/tests/test.sh index aaf1e3dfab4..9db35dec185 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -8,7 +8,7 @@ down() { docker-compose down -v } -docker-compose run sut || failed=true +docker-compose run monitor || failed=true echo " Result: failed=$failed" From 7d5bab924f91eb46a07f07a27223e30cdedade44 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sat, 4 Dec 2021 18:11:53 -0600 Subject: [PATCH 09/10] Added test step to build multiarch --- .github/workflows/build-multiarch.yml | 20 ++++++++++++++++++++ .github/workflows/main.yml | 1 - 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-multiarch.yml b/.github/workflows/build-multiarch.yml index aab01f9ab2f..8fff4ff92ee 100644 --- a/.github/workflows/build-multiarch.yml +++ b/.github/workflows/build-multiarch.yml @@ -20,6 +20,9 @@ on: - "docs/**" - "examples/**" +env: + IMAGE_TO_TEST: itzg/minecraft-server:test-${{ github.repository_owner }}-${{ github.run_id }} + jobs: build: if: github.repository == 'itzg/docker-minecraft-server' @@ -52,6 +55,23 @@ jobs: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASSWORD }} + - name: Build for test + uses: docker/build-push-action@v2.7.0 + with: + context: . + platforms: linux/amd64 + tags: ${{ env.IMAGE_TO_TEST }} + # ensure latest base image is used + pull: true + load: true + push: false + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Run tests + run: | + tests/test.sh + - name: Build and push id: docker_build uses: docker/build-push-action@v2.7.0 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index eb2f607b41b..238c325aa77 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -80,7 +80,6 @@ jobs: run: | tests/test.sh - - name: Build and push id: docker_build uses: docker/build-push-action@v2.7.0 From 1bd0b27711e537fde1c08a5a3e51a8e1e0186e06 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sat, 4 Dec 2021 18:18:04 -0600 Subject: [PATCH 10/10] Only test during release on master --- .github/workflows/build-multiarch.yml | 3 +++ .github/workflows/main.yml | 2 ++ 2 files changed, 5 insertions(+) diff --git a/.github/workflows/build-multiarch.yml b/.github/workflows/build-multiarch.yml index 8fff4ff92ee..251e026d260 100644 --- a/.github/workflows/build-multiarch.yml +++ b/.github/workflows/build-multiarch.yml @@ -57,6 +57,7 @@ jobs: - name: Build for test uses: docker/build-push-action@v2.7.0 + if: github.ref_name == 'master' with: context: . platforms: linux/amd64 @@ -69,6 +70,8 @@ jobs: cache-to: type=gha,mode=max - name: Run tests + # It is assumed that image variants are merged from master and tested there + if: github.ref_name == 'master' run: | tests/test.sh diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 238c325aa77..14c1cafd360 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -65,6 +65,7 @@ jobs: - name: Build for test uses: docker/build-push-action@v2.7.0 + if: github.ref_name == 'master' with: context: . platforms: linux/amd64 @@ -77,6 +78,7 @@ jobs: cache-to: type=gha,mode=max - name: Run tests + if: github.ref_name == 'master' run: | tests/test.sh