diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml new file mode 100644 index 0000000000..d6eddabf9a --- /dev/null +++ b/.github/actions/docker-build/action.yaml @@ -0,0 +1,79 @@ +name: "Build and push Docker image" +description: "Reusable action to build and push a Docker image" + +inputs: + project: + description: "Nx project name" + required: true + image_url: + description: "Docker image URL" + required: true + registry: + description: "Docker registry" + default: "ghcr.io" + cache_key: + description: "Unique cache key name" + required: true + +runs: + using: composite + defaults: + run: + working-directory: ./bciers + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Docker metadata + id: meta + uses: docker/metadata-action@v3 + with: + images: ${{ inputs.image_url }} + tags: | + type=sha,format=long,prefix= + latest + type=ref,event=pr + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Install dependencies + run: | + corepack enable + yarn install --immutable + cd ../bciers && yarn install --immutable + - uses: actions/setup-node@v3 + - name: Derive appropriate SHAs for base and head for `nx affected` commands + uses: nrwl/nx-set-shas@v4 + with: + # This will need to be updated when giraffe-develop merges with develop + main-branch-name: "develop" + - name: Cache Docker layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-${{ inputs.cache_key }}${{ github.sha }} + restore-keys: | + ${{ runner.os }}-${{ inputs.cache_key }} + - name: Build images + env: + INPUT_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + INPUT_PUSH: true + INPUT_TAGS: ${{ steps.meta.outputs.tags }} + INPUT_LABELS: ${{ steps.meta.output.labels }} + INPUT_CACHE_FROM: type=local,src=/tmp/.buildx-cache + INPUT_CACHE_TO: type=local,dest=/tmp/.buildx-cache-new + run: | + npx nx container ${{ inputs.project }} --skip-nx-cache + # Temp fix + # https://github.com/docker/build-push-action/issues/252 + # https://github.com/moby/buildkit/issues/1896 + - name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b229365223..cfd772b6a7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -59,6 +59,22 @@ jobs: rm -rf /tmp/.buildx-cache mv /tmp/.buildx-cache-new /tmp/.buildx-cache + nx-docker-build-registration1: + uses: ./.github/actions/docker-build + with: + project: registration1 + image_url: ghcr.io/bcgov/cas-reg1-frontend + registry: ghcr.io + cache_key: buildx-bciers-registration1 + + nx-docker-build-reporting: + uses: ./.github/actions/docker-build + with: + project: reporting + image_url: ghcr.io/bcgov/cas-rep-frontend + registry: ghcr.io + cache_key: buildx-bciers-reporting + # nx-docker-build-registration: # runs-on: ubuntu-latest # defaults: @@ -122,129 +138,3 @@ jobs: # run: | # rm -rf /tmp/.buildx-cache # mv /tmp/.buildx-cache-new /tmp/.buildx-cache - - nx-docker-build-registration1: - runs-on: ubuntu-latest - defaults: - run: - working-directory: ./bciers - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Docker metadata - id: meta - uses: docker/metadata-action@v3 - with: - images: ghcr.io/bcgov/cas-reg1-frontend - tags: | - type=sha,format=long,prefix= - latest - type=ref,event=pr - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Install dependencies - run: | - corepack enable - yarn install --immutable - cd ../bciers && yarn install --immutable - - uses: actions/setup-node@v3 - - name: Derive appropriate SHAs for base and head for `nx affected` commands - uses: nrwl/nx-set-shas@v4 - with: - # This will need to be updated when giraffe-develop merges with develop - main-branch-name: "develop" - - name: Cache Docker layers - uses: actions/cache@v3 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-bciers-registration1${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx-bciers-registration1 - - name: Build images - env: - INPUT_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - INPUT_PUSH: true - INPUT_TAGS: ${{ steps.meta.outputs.tags }} - INPUT_LABELS: ${{ steps.meta.output.labels }} - INPUT_CACHE_FROM: type=local,src=/tmp/.buildx-cache - INPUT_CACHE_TO: type=local,dest=/tmp/.buildx-cache-new - run: | - npx nx container registration1 --skip-nx-cache - # Temp fix - # https://github.com/docker/build-push-action/issues/252 - # https://github.com/moby/buildkit/issues/1896 - - name: Move cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache - - nx-docker-build-reporting: - runs-on: ubuntu-latest - defaults: - run: - working-directory: ./bciers - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: Docker metadata - id: meta - uses: docker/metadata-action@v3 - with: - images: ghcr.io/bcgov/cas-rep-frontend - tags: | - type=sha,format=long,prefix= - latest - type=ref,event=pr - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Install dependencies - run: | - corepack enable - yarn install --immutable - cd ../bciers && yarn install --immutable - - uses: actions/setup-node@v3 - - name: Derive appropriate SHAs for base and head for `nx affected` commands - uses: nrwl/nx-set-shas@v4 - with: - # This will need to be updated when giraffe-develop merges with develop - main-branch-name: "develop" - - name: Cache Docker layers - uses: actions/cache@v3 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-bciers-reporting${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx-bciers-reporting - - name: Build images - env: - INPUT_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - INPUT_PUSH: true - INPUT_TAGS: ${{ steps.meta.outputs.tags }} - INPUT_LABELS: ${{ steps.meta.output.labels }} - INPUT_CACHE_FROM: type=local,src=/tmp/.buildx-cache - INPUT_CACHE_TO: type=local,dest=/tmp/.buildx-cache-new - run: | - npx nx container reporting --skip-nx-cache - # Temp fix - # https://github.com/docker/build-push-action/issues/252 - # https://github.com/moby/buildkit/issues/1896 - - name: Move cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache