Release: Nightly #79
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: 'Release: Nightly' | |
| on: | |
| schedule: | |
| - cron: '0 0 * * *' | |
| workflow_dispatch: | |
| inputs: | |
| dry_run: | |
| description: 'Run a dry-run of the release process; no branches, npm packages or GitHub releases will be created.' | |
| required: true | |
| type: 'boolean' | |
| default: true | |
| force_skip_tests: | |
| description: 'Select to skip the "Run Tests" step in testing. Prod releases should run tests' | |
| required: false | |
| type: 'boolean' | |
| default: true | |
| ref: | |
| description: 'The branch, tag, or SHA to release from.' | |
| required: false | |
| type: 'string' | |
| default: 'main' | |
| environment: | |
| description: 'Environment' | |
| required: false | |
| type: 'choice' | |
| options: | |
| - 'prod' | |
| - 'dev' | |
| default: 'prod' | |
| jobs: | |
| release: | |
| environment: "${{ github.event.inputs.environment || 'prod' }}" | |
| runs-on: 'ubuntu-latest' | |
| permissions: | |
| contents: 'write' | |
| packages: 'write' | |
| issues: 'write' | |
| pull-requests: 'write' | |
| steps: | |
| - name: 'Checkout' | |
| uses: 'actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8' | |
| with: | |
| fetch-depth: 0 | |
| - name: 'Checkout Release Code' | |
| uses: 'actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8' | |
| with: | |
| ref: '${{ github.event.inputs.ref }}' | |
| path: 'release' | |
| fetch-depth: 0 | |
| - name: 'Setup Node.js' | |
| uses: 'actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020' # ratchet:actions/setup-node@v4 | |
| with: | |
| node-version-file: './release/.nvmrc' | |
| cache: 'npm' | |
| - name: 'Install Dependencies' | |
| working-directory: './release' | |
| run: 'npm ci' | |
| - name: 'Print Inputs' | |
| shell: 'bash' | |
| env: | |
| JSON_INPUTS: '${{ toJSON(github.event.inputs) }}' | |
| run: 'echo "$JSON_INPUTS"' | |
| - name: 'Calculate Release Variables' | |
| id: 'vars' | |
| uses: './.github/actions/calculate-vars' | |
| with: | |
| dry_run: '${{ github.event.inputs.dry_run }}' | |
| - name: 'Print Calculated vars' | |
| shell: 'bash' | |
| env: | |
| JSON_VARS: '${{ toJSON(steps.vars.outputs) }}' | |
| run: 'echo "$JSON_VARS"' | |
| - name: 'Run Tests' | |
| if: "${{ github.event_name == 'schedule' || github.event.inputs.force_skip_tests == 'false' }}" | |
| uses: './.github/actions/run-tests' | |
| with: | |
| gemini_api_key: '${{ secrets.GEMINI_API_KEY }}' | |
| working-directory: './release' | |
| - name: 'Get Nightly Version' | |
| id: 'nightly_version' | |
| working-directory: './release' | |
| env: | |
| GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}' | |
| run: | | |
| # Calculate the version using the centralized script | |
| VERSION_JSON=$(node scripts/get-release-version.js --type=nightly) | |
| # Extract values for logging and outputs | |
| RELEASE_TAG=$(echo "${VERSION_JSON}" | jq -r .releaseTag) | |
| RELEASE_VERSION=$(echo "${VERSION_JSON}" | jq -r .releaseVersion) | |
| NPM_TAG=$(echo "${VERSION_JSON}" | jq -r .npmTag) | |
| PREVIOUS_TAG=$(echo "${VERSION_JSON}" | jq -r .previousReleaseTag) | |
| # Print calculated values for logging | |
| echo "Calculated Release Tag: ${RELEASE_TAG}" | |
| echo "Calculated Release Version: ${RELEASE_VERSION}" | |
| echo "Calculated Previous Tag: ${PREVIOUS_TAG}" | |
| # Set outputs for subsequent steps | |
| echo "RELEASE_TAG=${RELEASE_TAG}" >> "${GITHUB_OUTPUT}" | |
| echo "RELEASE_VERSION=${RELEASE_VERSION}" >> "${GITHUB_OUTPUT}" | |
| echo "NPM_TAG=${NPM_TAG}" >> "${GITHUB_OUTPUT}" | |
| echo "PREVIOUS_TAG=${PREVIOUS_TAG}" >> "${GITHUB_OUTPUT}" | |
| - name: 'Publish Release' | |
| if: true | |
| uses: './.github/actions/publish-release' | |
| with: | |
| release-version: '${{ steps.nightly_version.outputs.RELEASE_VERSION }}' | |
| release-tag: '${{ steps.nightly_version.outputs.RELEASE_TAG }}' | |
| npm-tag: '${{ steps.nightly_version.outputs.NPM_TAG }}' | |
| wombat-token-core: '${{ secrets.WOMBAT_TOKEN_CORE }}' | |
| wombat-token-cli: '${{ secrets.WOMBAT_TOKEN_CLI }}' | |
| wombat-token-a2a-server: '${{ secrets.WOMBAT_TOKEN_A2A_SERVER }}' | |
| github-token: '${{ secrets.GITHUB_TOKEN }}' | |
| dry-run: '${{ steps.vars.outputs.is_dry_run }}' | |
| previous-tag: '${{ steps.nightly_version.outputs.PREVIOUS_TAG }}' | |
| working-directory: './release' | |
| skip-branch-cleanup: true | |
| force-skip-tests: "${{ github.event_name != 'schedule' && github.event.inputs.force_skip_tests == 'true' }}" | |
| gemini_api_key: '${{ secrets.GEMINI_API_KEY }}' | |
| npm-registry-publish-url: '${{ vars.NPM_REGISTRY_PUBLISH_URL }}' | |
| npm-registry-url: '${{ vars.NPM_REGISTRY_URL }}' | |
| npm-registry-scope: '${{ vars.NPM_REGISTRY_SCOPE }}' | |
| cli-package-name: '${{ vars.CLI_PACKAGE_NAME }}' | |
| core-package-name: '${{ vars.CORE_PACKAGE_NAME }}' | |
| a2a-package-name: '${{ vars.A2A_PACKAGE_NAME }}' | |
| - name: 'Create and Merge Pull Request' | |
| if: "github.event.inputs.environment != 'dev'" | |
| uses: './.github/actions/create-pull-request' | |
| with: | |
| branch-name: 'release/${{ steps.nightly_version.outputs.RELEASE_TAG }}' | |
| pr-title: 'chore/release: bump version to ${{ steps.nightly_version.outputs.RELEASE_VERSION }}' | |
| pr-body: 'Automated version bump for nightly release.' | |
| github-token: '${{ secrets.GEMINI_CLI_ROBOT_GITHUB_PAT }}' | |
| dry-run: '${{ steps.vars.outputs.is_dry_run }}' | |
| working-directory: './release' | |
| - name: 'Create Issue on Failure' | |
| if: "${{ failure() && github.event.inputs.environment != 'dev' && (github.event_name == 'schedule' || github.event.inputs.dry_run != 'true') }}" | |
| env: | |
| GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' | |
| RELEASE_TAG: '${{ steps.nightly_version.outputs.RELEASE_TAG }}' | |
| DETAILS_URL: '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}' | |
| run: | | |
| gh issue create \ | |
| --title "Nightly Release Failed for ${RELEASE_TAG} on $(date +'%Y-%m-%d')" \ | |
| --body "The nightly-release workflow failed. See the full run for details: ${DETAILS_URL}" \ | |
| --label 'kind/bug,release-failure,priority/p0' |