/
githubmirror
/
next.js
Обзор
Документация
Войти
/
githubmirror
/
next.js
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
canary
.github/workflows/trigger_release.yml
133 строки
4 KB
Sebastian "Sebbie" Silbermann
[cd] Allow forcing a release without new commits (#95136)
25 июн 2026, 08:25
Не верифицирован
25 июн 2026, 08:25
1d09001
Код
Авторство
О чём код?
on: schedule: # run every day at 23:15 - cron: '15 23 * * *' workflow_dispatch: inputs: releaseType: description: stable, canary, beta, preview, or release candidate? required: true type: choice options: - canary - stable - release-candidate - beta - preview semverType: description: semver type? type: choice options: - patch - minor - major force: description: create a new release even if there are no new commits default: false type: boolean name: Trigger Release env: NAPI_CLI_VERSION: 2.18.4 TURBO_VERSION: 2.9.4 NODE_LTS_VERSION: 20 jobs: start: if: github.repository_owner == 'vercel' runs-on: ubuntu-latest env: NEXT_TELEMETRY_DISABLED: 1 steps: - name: Setup node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ env.NODE_LTS_VERSION }} check-latest: true package-manager-cache: false - name: Create GitHub App token id: release-app-token uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 with: client-id: ${{ vars.RELEASE_GITHUB_APP_CLIENT_ID }} private-key: ${{ secrets.RELEASE_GITHUB_APP_PRIVATE_KEY }} owner: ${{ github.repository_owner }} repositories: next.js permission-contents: write # Even though this permission may seem optional, it's required for # creating refs on branches that have diverged a lot from the default # branch. This is not documented but was confirmed by GitHub support. permission-workflows: write - name: Get GitHub App user ID id: release-app-user run: | user_id="$(gh api "/users/${{ steps.release-app-token.outputs.app-slug }}[bot]" --jq .id)" echo "user-id=$user_id" >> "$GITHUB_OUTPUT" env: GH_TOKEN: ${{ steps.release-app-token.outputs.token }} - name: Clone Next.js repository # We expect to find the latest tag on this branch in the last 1000 commits. run: git clone https://github.com/vercel/next.js.git --depth=1000 --single-branch --branch ${GITHUB_REF_NAME:-canary} . - name: Check token run: gh auth status # This sometimes fails for unknown reasons. # Ignoring failures for now to check if a failure truly implies a failed publish. continue-on-error: true env: GH_TOKEN: ${{ steps.release-app-token.outputs.token }} - name: Get commit of the latest tag run: | latest_tag="$(git describe --tags --abbrev=0)" echo "LATEST_TAG_COMMIT=$(git rev-list -n 1 "$latest_tag")" >> $GITHUB_ENV - name: Get latest commit run: echo "LATEST_COMMIT=$(git rev-parse HEAD)" >> $GITHUB_ENV - name: Check if new commits since last tag if: ${{ github.event.inputs.releaseType != 'stable' && inputs.force != true }} run: | if [ "$LATEST_TAG_COMMIT" = "$LATEST_COMMIT" ]; then echo "No new commits. Exiting..." exit 1 fi # https://github.com/actions/virtual-environments/issues/1187 - name: tune linux network run: sudo ethtool -K eth0 tx off rx off - name: Setup corepack run: | npm i -g corepack@0.31 corepack enable pnpm --version - id: get-store-path run: echo STORE_PATH=$(pnpm store path) >> $GITHUB_OUTPUT - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 timeout-minutes: 5 id: cache-pnpm-store with: path: ${{ steps.get-store-path.outputs.STORE_PATH }} key: pnpm-store-root-v1-${{ hashFiles('pnpm-lock.yaml') }} # Do not use restore-keys since it leads to indefinite growth of the cache. - run: pnpm install - run: node ./scripts/start-release.js --release-type "${INPUT_RELEASETYPE}" --semver-type "${INPUT_SEMVERTYPE}" env: RELEASE_GITHUB_TOKEN: ${{ steps.release-app-token.outputs.token }} RELEASE_GITHUB_APP_SLUG: ${{ steps.release-app-token.outputs.app-slug }} RELEASE_GITHUB_APP_USER_ID: ${{ steps.release-app-user.outputs.user-id }} INPUT_RELEASETYPE: ${{ github.event.inputs.releaseType || 'canary' }} INPUT_SEMVERTYPE: ${{ github.event.inputs.semverType }}