name: release on: push: branches: - main permissions: id-token: write # Required for OIDC contents: write pull-requests: write concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: release: name: Release runs-on: ubuntu-latest env: AWS_REGION: auto S3_BUCKET: ${{ secrets.S3_BUCKET }} S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} outputs: companionWasReleased: ${{ steps.checkIfCompanionWasReleased.outputs.version }} published: ${{ steps.changesets.outputs.published }} steps: - name: Checkout Repo uses: actions/checkout@v6 with: fetch-depth: 2 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: lts/* registry-url: "https://registry.npmjs.org" # Allow yarn to make changes during release - run: corepack yarn config set enableHardenedMode false - run: corepack yarn --mode=update-lockfile - name: Install dependencies run: corepack yarn install --immutable - name: Build run: corepack yarn build - name: "@uppy/angular prepublish" run: corepack yarn workspace @uppy/angular prepublishOnly - name: Create Release Pull Request or Publish id: changesets uses: changesets/action@a45c4d594aa4e2c509dc14a9f2b3b67ba3780d0d with: version: corepack yarn run version publish: corepack yarn run release commit: "[ci] release" title: "[ci] release" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Check if Companion was released id: checkIfCompanionWasReleased if: steps.changesets.outputs.published == 'true' run: | git diff --exit-code --quiet HEAD^ -- packages/@uppy/companion/package.json || echo "version=$(jq -r .version < packages/@uppy/companion/package.json)" >> $GITHUB_OUTPUT - name: Upload `uppy` to CDN if: steps.changesets.outputs.published == 'true' run: node packages/uppy/upload-to-cdn.js uppy env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Upload `@uppy/locales` to CDN if it was released if: steps.changesets.outputs.published == 'true' run: node packages/uppy/upload-to-cdn.js @uppy/locales env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} # See also companion-deploy.yml docker: name: DockerHub needs: release if: ${{ needs.release.outputs.published == 'true' && needs.release.outputs.companionWasReleased }} runs-on: ubuntu-latest env: DOCKER_BUILDKIT: 0 COMPOSE_DOCKER_CLI_BUILD: 0 steps: - name: Checkout sources uses: actions/checkout@v6 - name: Docker meta id: docker_meta uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0 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@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0 - uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f - name: Log in to DockerHub uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 with: username: ${{secrets.DOCKER_USERNAME}} password: ${{secrets.DOCKER_PASSWORD}} - name: Build and push uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: push: true context: . platforms: linux/amd64,linux/arm64 file: Dockerfile tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.docker_meta.outputs.labels }}