diff --git a/.github/workflows/publish_candidates.yml b/.github/workflows/publish_candidates.yml deleted file mode 100644 index b35f10cd5d..0000000000 --- a/.github/workflows/publish_candidates.yml +++ /dev/null @@ -1,113 +0,0 @@ -name: Publish Candidates - -on: - workflow_call: - inputs: - js-sdk: - required: false - type: boolean - default: false - python-sdk: - required: false - type: boolean - default: false - cli: - required: false - type: boolean - default: false - tag: - required: true - type: string - preid: - required: true - type: string - -permissions: - contents: read - id-token: write - -jobs: - publish: - name: Publish Release Candidates - runs-on: ubuntu-latest - steps: - - name: Checkout Repo - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - - - name: Parse .tool-versions - uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 - with: - filename: '.tool-versions' - uppercase: 'true' - prefix: 'tool_version_' - - - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 - if: ${{ inputs.js-sdk || inputs.cli }} - with: - version: '${{ env.TOOL_VERSION_PNPM }}' - - - name: Setup Node.js - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 - if: ${{ inputs.js-sdk || inputs.cli }} - with: - node-version: '${{ env.TOOL_VERSION_NODEJS }}' - registry-url: https://registry.npmjs.org - cache: pnpm - - - name: Configure pnpm - if: ${{ inputs.js-sdk || inputs.cli }} - run: | - pnpm config set auto-install-peers true - pnpm config set exclude-links-from-lockfile true - - - name: Update npm - if: ${{ inputs.js-sdk || inputs.cli }} - run: | - npm install -g npm@^11.6 - npm --version - - - name: Install uv - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0 - if: ${{ inputs.python-sdk }} - with: - version: '${{ env.TOOL_VERSION_UV }}' - python-version: '${{ env.TOOL_VERSION_PYTHON }}' - enable-cache: true - - - name: Publish Python RC - if: ${{ inputs.python-sdk }} - working-directory: packages/python-sdk - run: | - BASE_VERSION=$(uv version --short) - uv version "${BASE_VERSION}rc${{ github.run_id }}" - uv build - uv publish --trusted-publishing always --check-url https://pypi.org/simple/ - - - name: Install JS dependencies - if: ${{ inputs.js-sdk || inputs.cli }} - run: pnpm install --frozen-lockfile - - - name: Publish JS RC - if: ${{ inputs.js-sdk }} - working-directory: packages/js-sdk - env: - RC_PREID: ${{ inputs.preid }} - RC_TAG: ${{ inputs.tag }} - run: | - pnpm version prerelease --preid="${RC_PREID}.${{ github.run_id }}" --no-git-tag-version - pnpm publish --tag "$RC_TAG" --provenance --no-git-checks - - # `pnpm publish`, not `npm publish`: it resolves the `workspace:^` range the - # CLI declares for `e2b` to a concrete version — here the RC the step above - # just published, or the last release when only the CLI is being cut. - # `--no-git-checks` because candidates are cut from a feature branch with the - # version bump above still uncommitted. - - name: Publish CLI RC - if: ${{ inputs.cli }} - working-directory: packages/cli - env: - RC_PREID: ${{ inputs.preid }} - RC_TAG: ${{ inputs.tag }} - run: | - pnpm version prerelease --preid="${RC_PREID}.${{ github.run_id }}" --no-git-tag-version - pnpm publish --tag "$RC_TAG" --provenance --no-git-checks diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml deleted file mode 100644 index c38e544c32..0000000000 --- a/.github/workflows/release-candidate.yml +++ /dev/null @@ -1,106 +0,0 @@ -name: Release candidate - -on: - workflow_dispatch: - inputs: - js-sdk: - description: 'Release JS SDK' - required: false - default: false - type: boolean - python-sdk: - description: 'Release Python SDK' - required: false - default: false - type: boolean - cli: - description: 'Release CLI' - required: false - default: false - type: boolean - tag: - description: 'Dist-tag (e.g. rc, beta, snapshot)' - required: false - default: 'rc' - type: string - preid: - description: 'Prerelease identifier (defaults to branch name)' - required: false - default: '' - type: string - skip-tests: - description: 'Skip tests' - required: false - default: false - type: boolean - -# Shared literal group so production and candidate releases on the same ref serialize. -concurrency: release-${{ github.ref }} - -permissions: - id-token: write - contents: write - -jobs: - rc-validate: - name: Validate RC inputs - runs-on: ubuntu-latest - outputs: - preid: ${{ steps.preid.outputs.preid }} - tag: ${{ steps.tag.outputs.tag }} - steps: - - name: Sanitize tag - id: tag - env: - RAW_TAG: ${{ github.event.inputs.tag }} - run: | - SAFE_TAG="$(echo "$RAW_TAG" | sed 's/[^0-9A-Za-z-]/-/g')" - echo "tag=$SAFE_TAG" >> "$GITHUB_OUTPUT" - - - name: Block production tags - run: | - if [ "${{ steps.tag.outputs.tag }}" = "latest" ]; then - echo "::error::Publishing with the 'latest' tag is not allowed for candidates. Use the 'Release' workflow instead." - exit 1 - fi - - - name: Sanitize preid - id: preid - env: - RAW_PREID: ${{ github.event.inputs.preid || github.ref_name }} - run: | - echo "preid=$(echo "$RAW_PREID" | sed 's/[^0-9A-Za-z-]/-/g')" >> "$GITHUB_OUTPUT" - - rc-python-tests: - name: RC Python Tests - needs: [rc-validate] - if: github.event.inputs.python-sdk == 'true' && github.event.inputs.skip-tests != 'true' - uses: ./.github/workflows/python_sdk_tests.yml - secrets: inherit - - rc-js-tests: - name: RC JS Tests - needs: [rc-validate] - if: github.event.inputs.js-sdk == 'true' && github.event.inputs.skip-tests != 'true' - uses: ./.github/workflows/js_sdk_tests.yml - secrets: inherit - - rc-cli-tests: - name: RC CLI Tests - needs: [rc-validate] - if: github.event.inputs.cli == 'true' && github.event.inputs.skip-tests != 'true' - uses: ./.github/workflows/cli_tests.yml - secrets: inherit - - rc-publish: - name: Publish RC - needs: [rc-validate, rc-python-tests, rc-js-tests, rc-cli-tests] - if: (!cancelled()) && !contains(needs.*.result, 'failure') && needs.rc-validate.result == 'success' - uses: ./.github/workflows/publish_candidates.yml - with: - js-sdk: ${{ github.event.inputs.js-sdk == 'true' }} - python-sdk: ${{ github.event.inputs.python-sdk == 'true' }} - cli: ${{ github.event.inputs.cli == 'true' }} - tag: ${{ needs.rc-validate.outputs.tag }} - preid: ${{ needs.rc-validate.outputs.preid }} - secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6d58407478..d9779f8857 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,6 @@ name: Release on: workflow_dispatch: {} -# Shared literal group so production and candidate releases on the same ref serialize. concurrency: release-${{ github.ref }} permissions: @@ -28,8 +27,7 @@ jobs: - name: Check the ref # `workflow_dispatch` offers every branch in the picker, and a feature # branch carrying changesets would otherwise publish real packages and - # push the version bump to that branch. Candidates cut from a branch go - # through release-candidate.yml. + # push the version bump to that branch. if: github.ref != 'refs/heads/main' env: REF: ${{ github.ref }}