name: CD - Docker - GHCR (Gitpod) on: workflow_dispatch: push: branches: - main paths: - 'docker/gitpod/*' jobs: build-and-push-image: runs-on: ubuntu-22.04 permissions: contents: read packages: write strategy: fail-fast: false matrix: images: - gitpod steps: - name: Checkout code uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3 - name: Log in to the GHCR uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Cache Docker layers uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ matrix.images }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx-${{ matrix.images }}- - name: Build and push Docker image uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 with: context: ./docker/${{ matrix.images }} push: true tags: | ghcr.io/freecodecamp/${{ matrix.images }}:${{ github.sha }} ghcr.io/freecodecamp/${{ matrix.images }}:latest cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max - name: Move cache run: | rm -rf /tmp/.buildx-cache mv /tmp/.buildx-cache-new /tmp/.buildx-cache