Download .github/workflows/release-nightly.yml from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 7.23 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/.github/workflows/release-nightly.yml
- Command line
-
hf download hf://SaylorTwift/gemini-cli/.github/workflows/release-nightly.yml
-
curl -L -o release-nightly.yml https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/.github/workflows/release-nightly.yml
7.23 kB
| 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: | |
| build-mac: | |
| if: "github.repository == 'google-gemini/gemini-cli'" | |
| uses: './.github/workflows/build-unsigned-mac-binaries.yml' | |
| with: | |
| ref: '${{ github.event.inputs.ref }}' | |
| release: | |
| if: "github.repository == 'google-gemini/gemini-cli'" | |
| needs: ['build-mac'] | |
| environment: "${{ github.event_name == 'schedule' && 'internal' || 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: | |
| persist-credentials: false | |
| fetch-depth: 0 | |
| - name: 'Checkout Release Code' | |
| uses: 'actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8' | |
| with: | |
| persist-credentials: false | |
| 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: 'Download macOS Binaries' | |
| uses: './.github/actions/download-mac-binaries' | |
| with: | |
| path: 'release/dist' | |
| - 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 }}' | |
| github-release-token: '${{ secrets.GEMINI_CLI_ROBOT_GITHUB_PAT }}' | |
| 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 || 'https://wombat-dressing-room.appspot.com' }}" | |
| npm-registry-url: "${{ vars.NPM_REGISTRY_URL || 'https://wombat-dressing-room.appspot.com' }}" | |
| npm-registry-scope: "${{ vars.NPM_REGISTRY_SCOPE || '@google' }}" | |
| cli-package-name: "${{ vars.CLI_PACKAGE_NAME || '@google/gemini-cli' }}" | |
| core-package-name: "${{ vars.CORE_PACKAGE_NAME || '@google/gemini-cli-core' }}" | |
| a2a-package-name: "${{ vars.A2A_PACKAGE_NAME || '@google/gemini-cli-a2a-server' }}" | |
| - 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 'release-failure,priority/p0' | |