Browse Source

meta: fix Companion deploy (#4095)

Antoine du Hamel 2 years ago
parent
commit
542b421fee
2 changed files with 93 additions and 24 deletions
  1. 30 24
      .github/workflows/companion-deploy.yml
  2. 63 0
      .github/workflows/release.yml

+ 30 - 24
.github/workflows/companion-deploy.yml

@@ -1,11 +1,34 @@
-name: Companion Deploy
+# N.B.: This won't run on releases because of
+# https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow.
+# However, we have a companion deploy that's part of the release.yml workflow.
+name: Companion Edge Deploy
 
 on:
   push:
-    tags:
-      - '@uppy/companion@*'
+    branches: [ 'main' ]
+    paths:
+      - yarn.lock
+      - 'packages/@uppy/companion/**'
+      - '.github/workflows/companion.yml'
 
 jobs:
+  npm:
+    name: Generate npm tarball
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout sources
+        uses: actions/checkout@v3
+      - name: Set SHA commit in version
+        run: (cd packages/@uppy/companion && node -e 'const pkg=require("./package.json");pkg.version+="+${{ github.sha }}";fs.writeFileSync("package.json",JSON.stringify(pkg, undefined, 2)+"\n")')
+      - name: Create Companion tarball
+        run: corepack yarn workspace @uppy/companion pack --install-if-needed -o /tmp/companion-${{ github.sha }}.tar.gz
+      - name: Upload artifact
+        if: success()
+        uses: actions/upload-artifact@v3
+        with:
+          name: companion-${{ github.sha }}.tar.gz
+          path: /tmp/companion-${{ github.sha }}.tar.gz
+
   docker:
     name: DockerHub
     runs-on: ubuntu-latest
@@ -17,12 +40,12 @@ jobs:
         uses: actions/checkout@v3
       - name: Docker meta
         id: docker_meta
-        uses: crazy-max/ghaction-docker-meta@v1
+        uses: docker/metadata-action@v4
         with:
           images: transloadit/companion
-          tag-sha: true
-          tag-match: |
-            \d{1,3}.\d{1,3}.\d{1,3}
+          tags: |
+            type=edge
+            type=raw,value=latest,enable=false
       - uses: docker/setup-qemu-action@v2
       - uses: docker/setup-buildx-action@v2
       - name: Log in to DockerHub
@@ -39,20 +62,3 @@ jobs:
           file: Dockerfile
           tags: ${{ steps.docker_meta.outputs.tags }}
           labels: ${{ steps.docker_meta.outputs.labels }}
-
-  heroku:
-    name: Heroku
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout sources
-        uses: actions/checkout@v3
-      - name: Alter dockerfile
-        run: |
-          sed -i 's/^EXPOSE 3020$/EXPOSE $PORT/g' Dockerfile
-      - name: Deploy to heroku
-        uses: akhileshns/heroku-deploy@v3.12.12
-        with:
-          heroku_api_key: ${{secrets.HEROKU_API_KEY}}
-          heroku_app_name: companion-demo
-          heroku_email: ${{secrets.HEROKU_EMAIL}}
-          usedocker: true

+ 63 - 0
.github/workflows/release.yml

@@ -7,6 +7,8 @@ jobs:
   release:
     name: Publish releases
     if: ${{ github.event.review.state == 'approved' && github.event.sender.login == github.event.pull_request.assignee.login && github.event.pull_request.head.ref == 'release-candidate' }}
+    outputs:
+      companionWasReleased: ${{ steps.checkIfCompanionWasReleased.outputs.version }}
     runs-on: ubuntu-latest
     steps:
       - name: Checkout sources
@@ -78,6 +80,9 @@ jobs:
         env:
           EDGLY_KEY: ${{secrets.EDGLY_KEY}}
           EDGLY_SECRET: ${{secrets.EDGLY_SECRET}}
+      - name: Check if Companion was released
+        id: checkIfCompanionWasReleased
+        run: git diff --exit-code --quiet HEAD^ -- packages/@uppy/companion/package.json || echo "::set-output name=version::$(jq .version < packages/@uppy/companion/package.json)"
       - name: Remove release-candidate branch
         run: gh api -X DELETE repos/${{ github.repository }}/git/refs/heads/release-candidate || echo "Already deleted"
         env:
@@ -95,3 +100,61 @@ jobs:
         run: gh pr comment ${{ github.event.pull_request.number }} --body "Release job failed, please take action."
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+  # See also companion-deploy.yml
+  docker:
+    name: DockerHub
+    needs: release
+    if: ${{ needs.release.outputs.companionWasReleased }}
+    runs-on: ubuntu-latest
+    env:
+      DOCKER_BUILDKIT: 0
+      COMPOSE_DOCKER_CLI_BUILD: 0
+    steps:
+      - name: Checkout sources
+        uses: actions/checkout@v3
+      - name: Docker meta
+        id: docker_meta
+        uses: docker/metadata-action@v4
+        with:
+          images: transloadit/companion
+          tags: |
+            type=edge
+            type=semver,pattern={{version}},value=${{ needs.release.outputs.companionWasReleased }}
+            # set latest tag for default branch
+            type=raw,value=latest,enable=true
+      - uses: docker/setup-qemu-action@v2
+      - uses: docker/setup-buildx-action@v2
+      - name: Log in to DockerHub
+        uses: docker/login-action@v2
+        with:
+          username: ${{secrets.DOCKER_USERNAME}}
+          password: ${{secrets.DOCKER_PASSWORD}}
+      - name: Build and push
+        uses: docker/build-push-action@v3
+        with:
+          push: true
+          context: .
+          platforms: linux/amd64,linux/arm64
+          file: Dockerfile
+          tags: ${{ steps.docker_meta.outputs.tags }}
+          labels: ${{ steps.docker_meta.outputs.labels }}
+
+  heroku:
+    name: Heroku
+    needs: release
+    if: ${{ needs.release.outputs.companionWasReleased }}
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout sources
+        uses: actions/checkout@v3
+      - name: Alter dockerfile
+        run: |
+          sed -i 's/^EXPOSE 3020$/EXPOSE $PORT/g' Dockerfile
+      - name: Deploy to heroku
+        uses: akhileshns/heroku-deploy@v3.12.12
+        with:
+          heroku_api_key: ${{secrets.HEROKU_API_KEY}}
+          heroku_app_name: companion-demo
+          heroku_email: ${{secrets.HEROKU_EMAIL}}
+          usedocker: true