feat!: teardown dry-run and impact list, wait_deleted, forever timeou… #126
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: Publish SDK | |
| on: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| jobs: | |
| bump-and-release: | |
| runs-on: ubuntu-latest | |
| environment: pypi | |
| permissions: | |
| contents: write | |
| id-token: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| version: "0.5.x" | |
| - name: Set up Python | |
| run: uv python install 3.13 | |
| - name: Install commitizen | |
| run: uv tool install commitizen | |
| - name: Configure git | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| - name: Bump version and create changelog | |
| id: bump | |
| run: | | |
| cz bump --yes --changelog 2>&1 | tee bump_output.txt | |
| EXIT_CODE=${PIPESTATUS[0]} | |
| # Check for no-bump scenarios (cz bump exits 0 even for NO_COMMITS_TO_BUMP) | |
| if grep -qE "No commits found|No new commits found|is not a bump|NO_COMMITS_TO_BUMP|NO_COMMITS_FOUND" bump_output.txt; then | |
| echo "No version bump needed" | |
| echo "bumped=false" >> $GITHUB_OUTPUT | |
| elif [ $EXIT_CODE -eq 0 ]; then | |
| echo "bumped=true" >> $GITHUB_OUTPUT | |
| NEW_VERSION=$(cz version --project) | |
| echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT | |
| else | |
| cat bump_output.txt | |
| exit 1 | |
| fi | |
| - name: Refresh lockfile self-entry | |
| if: steps.bump.outputs.bumped == 'true' | |
| run: | | |
| uv lock | |
| if ! git diff --quiet uv.lock; then | |
| git add uv.lock | |
| git commit --amend --no-edit | |
| git tag -f "v${{ steps.bump.outputs.version }}" HEAD | |
| fi | |
| - name: Push changes | |
| if: steps.bump.outputs.bumped == 'true' | |
| run: | | |
| git pull --rebase origin main | |
| git push origin main --tags | |
| - name: Build package | |
| if: steps.bump.outputs.bumped == 'true' | |
| run: uv build | |
| - name: Create GitHub Release | |
| if: steps.bump.outputs.bumped == 'true' | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: v${{ steps.bump.outputs.version }} | |
| name: pragmatiks-sdk v${{ steps.bump.outputs.version }} | |
| files: | | |
| dist/*.tar.gz | |
| dist/*.whl | |
| generate_release_notes: true | |
| - name: Publish to PyPI | |
| if: steps.bump.outputs.bumped == 'true' | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| - name: Generate GitHub App token | |
| if: steps.bump.outputs.bumped == 'true' | |
| id: app-token | |
| uses: actions/create-github-app-token@v1 | |
| with: | |
| app-id: ${{ secrets.APP_ID }} | |
| private-key: ${{ secrets.APP_PRIVATE_KEY }} | |
| owner: pragmatiks | |
| repositories: pragma-cli,pragma-os,pragma-providers | |
| - name: Trigger CLI update | |
| if: steps.bump.outputs.bumped == 'true' | |
| env: | |
| GH_TOKEN: ${{ steps.app-token.outputs.token }} | |
| run: | | |
| gh workflow run update-sdk.yaml \ | |
| --repo pragmatiks/pragma-cli \ | |
| --field sdk_version=${{ steps.bump.outputs.version }} | |
| - name: Trigger OS update and runtime rebuild | |
| if: steps.bump.outputs.bumped == 'true' | |
| env: | |
| GH_TOKEN: ${{ steps.app-token.outputs.token }} | |
| run: | | |
| gh workflow run update-sdk.yaml \ | |
| --repo pragmatiks/pragma-os \ | |
| --field sdk_version=${{ steps.bump.outputs.version }} | |
| - name: Trigger providers update | |
| if: steps.bump.outputs.bumped == 'true' | |
| env: | |
| GH_TOKEN: ${{ steps.app-token.outputs.token }} | |
| run: | | |
| gh workflow run update-sdk.yaml \ | |
| --repo pragmatiks/pragma-providers \ | |
| --field sdk_version=${{ steps.bump.outputs.version }} |