name: Publish docker image on: pull_request: types: [opened, synchronize] branches: - "*" jobs: build: runs-on: ubuntu-latest strategy: matrix: include: - dockerfile: Dockerfile.frontend type: pr-frontend name: frontend - dockerfile: Dockerfile.backend type: pr-backend name: backend permissions: contents: read packages: write steps: - uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.PAT_TOKEN }} - name: Determine the branch name id: determine_branch run: | if [ "${{ github.event_name }}" == "pull_request" ]; then echo "branch_name=${{ github.head_ref }}" >> $GITHUB_ENV else echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV fi - name: Replace / with - in branch name id: replace_slash run: | SANITIZED_BRANCH_NAME=$(echo "${{ env.branch_name }}" | tr '/' '-') echo "sanitized_branch_name=${SANITIZED_BRANCH_NAME}" >> $GITHUB_ENV - name: Docker meta id: meta uses: docker/metadata-action@v5 with: tags: | type=raw,enable=true,prefix=${{matrix.type}}-,value=${{ env.sanitized_branch_name }} images: | ghcr.io/tokens-studio/tokens-studio-for-penpot - name: prebuild run: | echo "Building ${{ matrix.name }} image" ./manage.sh build-${{matrix.name}}-bundle mv ./bundles/${{matrix.name}} ./docker/images/bundle-${{matrix.name}}/ - name: Publish Docker images uses: docker/build-push-action@v5 with: context: ./docker/images file: ./docker/images/${{ matrix.dockerfile }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} deploy: runs-on: ubuntu-latest needs: - "build" steps: - uses: actions/checkout@v4 - name: 🍍 Deploy with Gimlet uses: gimlet-io/gimlet-artifact-shipper-action@v0.8.3 env: GIMLET_SERVER: ${{ secrets.GIMLET_SERVER }} GIMLET_TOKEN: ${{ secrets.GIMLET_TOKEN }}