name: Docker Builders on: push: branches: - '**' workflow_dispatch: env: BRANCH_NAME: ${{ github.ref_name }} BASE_BUILDER_TAG: ${{ vars.DOCKER_IMAGE }}/linuxbasebuilder CPP_BUILDER_TAG: ${{ vars.DOCKER_IMAGE }}/linuxcppbuilder BIGFOOT_BUILDER_TAG: ${{ vars.DOCKER_IMAGE }}/linuxbigfootbuilder BIGFOOT_COVERAGE_BUILDER_TAG: ${{ vars.DOCKER_IMAGE }}/linuxbigfootcoveragebuilder jobs: build-base-builder: runs-on: ubuntu-latest timeout-minutes: 360 steps: - name: Set ENV run: | echo "BRANCH_NAME_LOWER=$(echo $GITHUB_REF_NAME | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV echo "BRANCH_NAME=$(echo $GITHUB_REF_NAME)" >> $GITHUB_ENV - name: Checkout uses: actions/checkout@v6 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to the Container registry uses: docker/login-action@v3 with: registry: ${{ vars.DOCKER_REGISTRY }} username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Build and push base builder uses: docker/build-push-action@v5 with: context: ./Linux/BaseBuilder push: true tags: ${{ env.BASE_BUILDER_TAG }}:${{ env.BRANCH_NAME_LOWER }} build-cpp-builder: runs-on: ubuntu-latest timeout-minutes: 360 needs: build-base-builder steps: - name: Set ENV run: | echo "BRANCH_NAME_LOWER=$(echo $GITHUB_REF_NAME | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV echo "BRANCH_NAME=$(echo $GITHUB_REF_NAME)" >> $GITHUB_ENV - name: Checkout uses: actions/checkout@v6 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to the Container registry uses: docker/login-action@v3 with: registry: ${{ vars.DOCKER_REGISTRY }} username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Build and push cpp builder uses: docker/build-push-action@v5 with: context: ./Linux/CPPBuilder push: true tags: ${{ env.CPP_BUILDER_TAG }}:${{ env.BRANCH_NAME_LOWER }} build-args: | BASE_BUILDER=${{ env.BASE_BUILDER_TAG }}:${{ env.BRANCH_NAME_LOWER }} CONAN_PROFILE_BRANCH=${{ env.BRANCH_NAME }} build-bigfoot-builder: runs-on: ubuntu-latest timeout-minutes: 360 needs: build-cpp-builder steps: - name: Set ENV run: | echo "BRANCH_NAME_LOWER=$(echo $GITHUB_REF_NAME | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV echo "BRANCH_NAME=$(echo $GITHUB_REF_NAME)" >> $GITHUB_ENV - name: Checkout uses: actions/checkout@v6 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to the Container registry uses: docker/login-action@v3 with: registry: ${{ vars.DOCKER_REGISTRY }} username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Build and push cpp builder uses: docker/build-push-action@v5 with: context: ./Linux/BigfootBuilder push: true tags: ${{ env.BIGFOOT_BUILDER_TAG }}:${{ env.BRANCH_NAME_LOWER }} build-args: | BASE_BUILDER=${{ env.CPP_BUILDER_TAG }}:${{ env.BRANCH_NAME_LOWER }} CONAN_RELEASE_PROFILE=clang CONAN_RELWITHDEBINFO_PROFILE=clangd CONAN_DEBUG_PROFILE=clangd PACKAGES_CHANNEL=${{ env.BRANCH_NAME_LOWER }} - name: Push built packages run: | docker run --rm \ -e CONAN_LOGIN_USERNAME=${{ secrets.ARTIFACTORY_USER }} \ -e CONAN_PASSWORD=${{ secrets.ARTIFACTORY_PASSWORD }} \ ${{ env.BIGFOOT_BUILDER_TAG }}:${{ env.BRANCH_NAME_LOWER }} \ conan upload '*' --remote=bigfootpackages --force --confirm build-bigfootcoverage-builder: runs-on: ubuntu-latest timeout-minutes: 360 needs: build-cpp-builder steps: - name: Set ENV run: | echo "BRANCH_NAME_LOWER=$(echo $GITHUB_REF_NAME | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV echo "BRANCH_NAME=$(echo $GITHUB_REF_NAME)" >> $GITHUB_ENV - name: Checkout uses: actions/checkout@v6 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to the Container registry uses: docker/login-action@v3 with: registry: ${{ vars.DOCKER_REGISTRY }} username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Build and push cpp builder uses: docker/build-push-action@v5 with: context: ./Linux/BigfootBuilder push: true tags: ${{ env.BIGFOOT_COVERAGE_BUILDER_TAG }}:${{ env.BRANCH_NAME_LOWER }} build-args: | BASE_BUILDER=${{ env.CPP_BUILDER_TAG }}:${{ env.BRANCH_NAME_LOWER }} CONAN_RELEASE_PROFILE=gcc_coverage CONAN_RELWITHDEBINFO_PROFILE=gcc_coverage CONAN_DEBUG_PROFILE=gcc_coverage PACKAGES_CHANNEL=${{ env.BRANCH_NAME_LOWER }}