name: Publish docker image on: push: branches: [ token-studio-develop ] jobs: build: runs-on: ubuntu-latest strategy: matrix: include: - dockerfile: Dockerfile.backend type: backend - dockerfile: Dockerfile.frontend type: frontend 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.GHCR_TOKEN }} - name: Docker meta id: meta uses: docker/metadata-action@v5 with: tags: | type=sha,format=long,prefix=${{matrix.type}}- images: | ghcr.io/tokens-studio/tokens-studio-for-penpot - name: prebuild run: | echo "Building ${{ matrix.type }} image" ./manage.sh build-${{matrix.type}}-bundle mv ./bundles/${{matrix.type}} ./docker/images/bundle-${{matrix.type}}/ - 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 }} with: ENV: "prod" APP: "penpot" DEPLOY: "true" smoke: runs-on: ubuntu-latest needs: - "deploy" steps: - name: Check if URL can be accessed run: | URL="https://penpot.tokens.studio" STATUS=$(curl -o /dev/null -s -w "%{http_code}\n" $URL) if [ $STATUS -ne 200 ]; then echo "Error: Unable to access $URL. HTTP Status: $STATUS" exit 1 else echo "Success: $URL is accessible. HTTP Status: $STATUS" fi