chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
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
|
||||
Reference in New Issue
Block a user