summaryrefslogtreecommitdiff
path: root/.github/workflows/docker_build.yml
blob: 1c91ef860b237b84b3908f2eefd05ac96971ea4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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:
    strategy:
      fail-fast: true
      matrix:
        os: [ubuntu-20.04]
    runs-on: ${{ matrix.os }}
    if: github.repository == 'azerothcore/azerothcore-wotlk' && (github.ref == 'refs/heads/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
      BUILDKIT_INLINE_CACHE: 1

    steps:
      - name: Extract branch name
        shell: bash
        run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
        id: extract_branch

      - uses: actions/checkout@v2

      - name: Configure
        run: |
          sudo rm -rf /usr/local/lib/android
          sudo rm -rf /usr/share/dotnet
          sudo rm -rf /opt/ghc
          sudo rm -rf "$AGENT_TOOLSDIRECTORY"
          docker --version
          docker compose --version

    # TODO: make it work
    #   - uses: whoan/docker-build-with-cache-action@v5
    #     with:
    #       image_tag: master
    #       username: ${{ secrets.DOCKERHUB_USERNAME }}
    #       password: ${{ secrets.DOCKERHUB_TOKEN }}
    #       compose_file: docker-compose.yml

      - name: Login to Docker Hub
        if: github.repository == 'azerothcore/azerothcore-wotlk' && steps.extract_branch.outputs.branch == 'master'
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}


      # before cache
      # needed to avoid ccache injected into these images
      - name: Build Dev
        if: github.repository == 'azerothcore/azerothcore-wotlk'
        env:
          #DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }}
          DOCKER_EXTENDS_BIND: abstract-no-bind
          DOCKER_CLIENT_TIMEOUT: 400
          COMPOSE_HTTP_TIMEOUT: 400
        run: |
          export DOCKER_USER_ID=$(id -u)
          export DOCKER_GROUP_ID=$(id -u)
          ./acore.sh docker build

      - name: Deploy Dev
        #env:
        #  DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }}
        if: github.repository == 'azerothcore/azerothcore-wotlk' && steps.extract_branch.outputs.branch == 'master'
        run: |
          docker compose --profile dev --profile local push

      - name: Cache
        uses: actions/cache@v2
        with:
          path: var/docker/ccache
          key: ccache:${{ matrix.os }}:clang:without-modules:${{ github.ref }}:${{ github.sha }}
          restore-keys: |
            ccache:${{ matrix.os }}:clang:without-modules:${{ github.ref }}
            ccache:${{ matrix.os }}:clang:without-modules

      - name: Build Production images
        if: github.repository == 'azerothcore/azerothcore-wotlk'
        env:
          #DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }}
          DOCKER_EXTENDS_BIND: abstract-no-bind
          DOCKER_AC_BUILD_TARGET: build
          DOCKER_CLIENT_TIMEOUT: 220
          COMPOSE_HTTP_TIMEOUT: 220
        run: |
          export DOCKER_USER_ID=$(id -u)
          export DOCKER_GROUP_ID=$(id -u)
          ./acore.sh docker prod:build
          docker compose run --no-deps --name build ac-build echo "image created"
          docker cp build:/azerothcore/var/ccache var/docker/
          echo "ccache exported"

      - name: Deploy Production images
        #env:
        #  DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }}
        if: github.repository == 'azerothcore/azerothcore-wotlk' && steps.extract_branch.outputs.branch == 'master'
        run: |
          docker compose --profile prod push