fix(deployments): misc fixes for the native build server deployment f… #2611
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: 🦋 Changesets Release | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - "docs/**" | |
| - "**.md" | |
| - ".github/CODEOWNERS" | |
| - ".github/ISSUE_TEMPLATE/**" | |
| workflow_dispatch: | |
| inputs: | |
| ref: | |
| description: "The ref (branch, tag, or SHA) to checkout and release from" | |
| required: true | |
| type: string | |
| tag: | |
| description: "The npm dist-tag for the prerelease (e.g., 'v4-prerelease')" | |
| required: true | |
| type: string | |
| default: "v4-prerelease" | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| release: | |
| name: 🦋 Changesets Release | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| packages: write | |
| pull-requests: write | |
| id-token: write | |
| if: github.repository == 'triggerdotdev/trigger.dev' && github.event_name != 'workflow_dispatch' | |
| outputs: | |
| published: ${{ steps.changesets.outputs.published }} | |
| published_packages: ${{ steps.changesets.outputs.publishedPackages }} | |
| published_package_version: ${{ steps.get_version.outputs.package_version }} | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10.23.0 | |
| - name: Setup node | |
| uses: buildjet/setup-node@v4 | |
| with: | |
| node-version: 20.19.0 | |
| cache: "pnpm" | |
| - name: Download deps | |
| run: pnpm install --frozen-lockfile | |
| - name: Generate Prisma Client | |
| run: pnpm run generate | |
| - name: Build | |
| run: pnpm run build --filter "@trigger.dev/*" --filter "trigger.dev" | |
| - name: Type check | |
| run: pnpm run typecheck --filter "@trigger.dev/*" --filter "trigger.dev" | |
| # This action has two responsibilities. The first time the workflow runs | |
| # (initial push to the `main` branch) it will create a new branch and | |
| # then open a PR with the related changes for the new version. After the | |
| # PR is merged, the workflow will run again and this action will build + | |
| # publish to npm. | |
| - name: Publish | |
| if: ${{ !env.ACT }} | |
| id: changesets | |
| uses: changesets/action@v1 | |
| with: | |
| version: pnpm run changeset:version | |
| commit: "chore: release packages" | |
| title: "chore: release packages" | |
| publish: pnpm run changeset:release | |
| createGithubReleases: true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Get package version | |
| if: steps.changesets.outputs.published == 'true' | |
| id: get_version | |
| run: | | |
| package_version=$(echo '${{ steps.changesets.outputs.publishedPackages }}' | jq -r '.[0].version') | |
| echo "package_version=${package_version}" >> "$GITHUB_OUTPUT" | |
| # this triggers the publish workflow for the docker images | |
| - name: Create and push docker tag | |
| if: steps.changesets.outputs.published == 'true' | |
| run: | | |
| set -e | |
| git tag "v.docker.${{ steps.get_version.outputs.package_version }}" | |
| git push origin "v.docker.${{ steps.get_version.outputs.package_version }}" | |
| - name: Update PR title with version | |
| if: steps.changesets.outputs.published != 'true' | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| PR_NUMBER=$(gh pr list --head changeset-release/main --json number --jq '.[0].number') | |
| if [ -n "$PR_NUMBER" ]; then | |
| git fetch origin changeset-release/main | |
| # we arbitrarily reference the version of the cli package here; it is the same for all package releases | |
| VERSION=$(git show origin/changeset-release/main:packages/cli-v3/package.json | jq -r '.version') | |
| gh pr edit "$PR_NUMBER" --title "chore: release v$VERSION" | |
| fi | |
| update-lockfile: | |
| name: Update lockfile on release PR | |
| runs-on: ubuntu-latest | |
| needs: release | |
| if: needs.release.outputs.published != 'true' | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout release branch | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: changeset-release/main | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10.23.0 | |
| - name: Setup node | |
| uses: buildjet/setup-node@v4 | |
| with: | |
| node-version: 20.19.0 | |
| # npm v11.5.1 or newer is required for OIDC support | |
| # https://github.blog/changelog/2025-07-31-npm-trusted-publishing-with-oidc-is-generally-available/#whats-new | |
| - name: Setup npm 11.x for OIDC | |
| run: npm install -g npm@11.6.4 | |
| - name: Install and update lockfile | |
| run: pnpm install --no-frozen-lockfile | |
| - name: Commit and push lockfile | |
| run: | | |
| set -e | |
| if git diff --quiet pnpm-lock.yaml; then | |
| echo "No lockfile changes" | |
| else | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git add pnpm-lock.yaml | |
| git commit -m "chore: update lockfile for release" | |
| git push origin changeset-release/main | |
| fi | |
| prerelease: | |
| name: 🚀 Prerelease | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| id-token: write | |
| if: github.repository == 'triggerdotdev/trigger.dev' && github.event_name == 'workflow_dispatch' | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event.inputs.ref }} | |
| - name: Validate ref is on main | |
| run: | | |
| if ! git merge-base --is-ancestor ${{ github.event.inputs.ref }} origin/main; then | |
| echo "Error: ref must be an ancestor of main (i.e., already merged)" | |
| exit 1 | |
| fi | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 10.23.0 | |
| - name: Setup node | |
| uses: buildjet/setup-node@v4 | |
| with: | |
| node-version: 20.19.0 | |
| cache: "pnpm" | |
| # npm v11.5.1 or newer is required for OIDC support | |
| # https://github.blog/changelog/2025-07-31-npm-trusted-publishing-with-oidc-is-generally-available/#whats-new | |
| - name: Setup npm 11.x for OIDC | |
| run: npm install -g npm@11.6.4 | |
| - name: Download deps | |
| run: pnpm install --frozen-lockfile | |
| - name: Generate Prisma Client | |
| run: pnpm run generate | |
| - name: Snapshot version | |
| run: pnpm exec changeset version --snapshot ${{ github.event.inputs.tag }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Clean | |
| run: pnpm run clean --filter "@trigger.dev/*" --filter "trigger.dev" | |
| - name: Build | |
| run: pnpm run build --filter "@trigger.dev/*" --filter "trigger.dev" | |
| - name: Publish prerelease | |
| run: pnpm exec changeset publish --no-git-tag --snapshot --tag ${{ github.event.inputs.tag }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |