name: 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@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3 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@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5 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