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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3 - name: Log in to the GHCR uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Cache Docker layers uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 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@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.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