From 4b5f2e23cad94517bc45447fe98556d186f95103 Mon Sep 17 00:00:00 2001 From: Chris Lovering Date: Fri, 16 Aug 2024 17:59:01 +0100 Subject: [PATCH] Update CI to support mono repo --- .../{build.yaml => build-deploy.yaml} | 23 ++++++------ .github/workflows/lint.yaml | 4 +-- .github/workflows/main.yaml | 36 ++++++++++++------- 3 files changed, 37 insertions(+), 26 deletions(-) rename .github/workflows/{build.yaml => build-deploy.yaml} (58%) diff --git a/.github/workflows/build.yaml b/.github/workflows/build-deploy.yaml similarity index 58% rename from .github/workflows/build.yaml rename to .github/workflows/build-deploy.yaml index 23db7e0..fc03821 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build-deploy.yaml @@ -5,10 +5,10 @@ on: description: "A short-form SHA tag for the commit that triggered this flow" required: true type: string - lower-repo: - description: "The repository name in lowercase" - required: true - type: string + project: + description: "The project to build and push" + required: true + type: string jobs: build: @@ -16,7 +16,6 @@ jobs: runs-on: ubuntu-latest steps: - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -31,12 +30,14 @@ jobs: # Repository. The container will be tagged as "latest" # and with the short SHA of the commit. - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: - push: ${{ github.ref == github.event.repository.default_branch }} - cache-from: type=registry,ref=ghcr.io/${{ inputs.lower-repo }}:latest + context: thallium-${{ inputs.project }} + push: ${{ github.ref == 'refs/heads/main' }} + cache-from: type=registry,ref=ghcr.io/owl-corp/thallium-${{ inputs.project }}:latest cache-to: type=inline tags: | - ghcr.io/${{ inputs.lower-repo }}:latest - ghcr.io/${{ inputs.lower-repo }}:${{ inputs.sha-tag }} - build-args: git_sha=${{ github.sha }} + ghcr.io/owl-corp/thallium-${{ inputs.project }}:latest + ghcr.io/owl-corp/thallium-${{ inputs.project }}:${{ inputs.sha-tag }} + build-args: | + git_sha=${{ github.sha }} diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 2a4ea23..c6a2ff5 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -19,8 +19,8 @@ jobs: run: | poetry export --output temp-requirements.txt -vvv - if ! cmp -s "requirements.txt" "temp-requirements.txt"; then - echo "::error file=requirements.txt,title=Requirements out of date!::Run 'poetry export --output requirements.txt'" + if ! cmp -s "thallium-backend/requirements.txt" "temp-requirements.txt"; then + echo "::error file=requirements.txt,title=Requirements out of date!::Run 'make lock'" exit 1 fi diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index c109acd..6360033 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -11,36 +11,46 @@ concurrency: cancel-in-progress: true jobs: + changes: + runs-on: ubuntu-latest + outputs: + backend: ${{ steps.changes.outputs.backend }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: changes + with: + filters: | + automation: &automation + - '.github/workflows/**' + - 'deployments/**' + backend: + - *automation + - 'thallium-backend/**' + generate-inputs: runs-on: ubuntu-latest defaults: run: shell: bash - outputs: sha-tag: ${{ steps.sha-tag.outputs.sha-tag }} lower-repo: ${{ steps.lower-repo.outputs.lower-repo }} - steps: - name: Create SHA Container Tag id: sha-tag run: | tag=$(cut -c 1-7 <<< $GITHUB_SHA) echo "sha-tag=$tag" >> $GITHUB_OUTPUT - # docker/build-push-action doesn't allow capital letters in the URL - - name: Get repo in lowercase - id: lower-repo - run: | - echo "lower-repo=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT lint: uses: ./.github/workflows/lint.yaml - build: - uses: ./.github/workflows/build.yaml - needs: - - lint - - generate-inputs + build-backend: + if: ${{ needs.changes.outputs.backend == 'true' }} + needs: [changes, generate-inputs, lint] + uses: ./.github/workflows/build-deploy.yaml with: sha-tag: ${{ needs.generate-inputs.outputs.sha-tag }} - lower-repo: ${{ needs.generate-inputs.outputs.lower-repo }} + project: backend + secrets: inherit