From 8b2f411d19dc514c591d58c243aedf4363c6d842 Mon Sep 17 00:00:00 2001 From: Mike Delago <32778141+michaeldelago@users.noreply.github.com> Date: Mon, 8 Jan 2024 13:37:05 -0500 Subject: refactor(CI): Squash docker ci into one workflow (#17880) * refactor(CI): Squash docker ci into one workflow * fiddle with variable * use proper dockerfile target --- .github/actions/docker-tag-and-build/action.yml | 6 +- .github/workflows/docker_build.yml | 110 +++++++----------------- 2 files changed, 35 insertions(+), 81 deletions(-) (limited to '.github') diff --git a/.github/actions/docker-tag-and-build/action.yml b/.github/actions/docker-tag-and-build/action.yml index af988bed68..436bf8fd4a 100644 --- a/.github/actions/docker-tag-and-build/action.yml +++ b/.github/actions/docker-tag-and-build/action.yml @@ -13,6 +13,10 @@ inputs: description: version tag to use for docker image required: true type: string + dockerfile: + description: dockerfile to use + required: false + default: apps/docker/Dockerfile runs: using: composite steps: @@ -29,7 +33,7 @@ runs: uses: docker/build-push-action@v5 with: context: ${{ github.workspace }} - file: apps/docker/Dockerfile + file: ${{ inputs.dockerfile }} push: ${{ inputs.push }} tags: ${{ steps.meta.outputs.tags }} target: ${{ inputs.component-name }} diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index ffc3104a7e..0f23f9ad77 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -14,76 +14,19 @@ concurrency: group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) cancel-in-progress: true -jobs: - docker-build-n-deploy-dev: - runs-on: "ubuntu-latest" - if: | - github.repository == 'azerothcore/azerothcore-wotlk' - && !github.event.pull_request.draft - && (github.ref_name == 'master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build') - env: - COMPOSE_DOCKER_CLI_BUILD: 1 - DOCKER_BUILDKIT: 1 +env: + COMPOSE_DOCKER_CLI_BUILD: 1 + DOCKER_BUILDKIT: 1 + RUNNING_ON_PRIMARY_BRANCH: | + ${{ (github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master') && 'true' || 'false' }} - steps: - - name: Free up disk space - run: | - sudo rm -rf /usr/local/lib/android - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - - - uses: actions/checkout@v4 - - - name: Login to Docker Hub - if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Get version - id: version - run: | - output=$(./acore.sh version | grep "AzerothCore Rev. ") - version=${output#"AzerothCore Rev. "} - echo "version=$version" >> $GITHUB_OUTPUT - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: acore/ac-wotlk-dev-server - tags: | - type=raw,value=${{ steps.version.outputs.version }} - type=ref,event=branch - - - name: Build and push - uses: docker/build-push-action@v5 - with: - context: ${{ github.workspace }} - file: apps/docker/Dockerfile.dev-server - push: ${{ github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' }} - tags: ${{ steps.meta.outputs.tags }} - build-args: | - USER_ID=1000 - GROUP_ID=1000 - DOCKER_USER=acore - - # TODO: rename this job - docker-build-n-deploy-prod: +jobs: + build-containers: runs-on: "ubuntu-latest" if: | github.repository == 'azerothcore/azerothcore-wotlk' && !github.event.pull_request.draft && (github.ref_name == 'master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build') - env: - COMPOSE_DOCKER_CLI_BUILD: 1 - DOCKER_BUILDKIT: 1 - steps: - name: Free up disk space run: | @@ -100,14 +43,14 @@ jobs: # If you're wanting containers without mod-eluna, the best solution is to # build them locally (such as with `docker compose build`) - name: Download Eluna - if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' + if: env.RUNNING_ON_PRIMARY_BRANCH == 'true' uses: actions/checkout@v4 with: repository: azerothcore/mod-eluna path: modules/mod-eluna - name: Login to Docker Hub - if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' + if: env.RUNNING_ON_PRIMARY_BRANCH == 'true' uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} @@ -116,8 +59,7 @@ jobs: - name: Get version id: version run: | - output=$(./acore.sh version | grep "AzerothCore Rev. ") - version=${output#"AzerothCore Rev. "} + version="$(jq -r '.version' acore.json)" echo "version=$version" >> $GITHUB_OUTPUT - name: Set up Docker Buildx @@ -128,45 +70,53 @@ jobs: with: component-name: worldserver version: ${{ steps.version.outputs.version }} - push: ${{ github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' }} + push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }} - name: build authserver uses: ./.github/actions/docker-tag-and-build with: component-name: authserver version: ${{ steps.version.outputs.version }} - push: ${{ github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' }} + push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }} - name: build db-import uses: ./.github/actions/docker-tag-and-build with: component-name: db-import version: ${{ steps.version.outputs.version }} - push: ${{ github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' }} + push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }} - name: build client-data uses: ./.github/actions/docker-tag-and-build with: component-name: client-data version: ${{ steps.version.outputs.version }} - push: ${{ github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' }} + push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }} - name: build tools uses: ./.github/actions/docker-tag-and-build with: component-name: tools version: ${{ steps.version.outputs.version }} - push: ${{ github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' }} + push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }} - dispatch-acore-docker: - needs: [ docker-build-n-deploy-prod , docker-build-n-deploy-dev] - runs-on: ubuntu-latest - steps: - - name: Repository Dispatch - if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' + - name: build dev-server + uses: ./.github/actions/docker-tag-and-build + with: + component-name: dev + version: ${{ steps.version.outputs.version }} + push: ${{ env.RUNNING_ON_PRIMARY_BRANCH }} + dockerfile: apps/docker/Dockerfile.dev-server + + - name: Trigger acore-docker CI + if: env.RUNNING_ON_PRIMARY_BRANCH == 'true' uses: peter-evans/repository-dispatch@v2 with: token: ${{ secrets.ACORE_DOCKER_REPO_ACCESS_TOKEN }} repository: azerothcore/acore-docker event-type: azerothcore-new-images - client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}' + client-payload: > + { + "ref": "${{ github.ref }}", + "sha": "${{ github.sha }}" + } -- cgit v1.2.3