fix(Core): Build (#17989) #250
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 | |
on: | |
push: | |
branches: | |
- 'master' | |
pull_request: | |
types: | |
- labeled | |
- opened | |
- synchronize | |
- reopened | |
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 | |
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: | |
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: | | |
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 | |
# The containers created in this workflow are used by | |
# acore-docker, which has a dependency on mod-eluna. | |
# | |
# 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' | |
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' | |
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: build worldserver | |
uses: ./.github/actions/docker-tag-and-build | |
with: | |
component-name: worldserver | |
version: ${{ steps.version.outputs.version }} | |
push: ${{ github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' }} | |
- 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' }} | |
- 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' }} | |
- 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' }} | |
- 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' }} | |
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' | |
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 }}"}' |