Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Create a release

Create a release #9

Workflow file for this run

name: Create a release
on:
# Trigger a stable version release via GitHub's UI, with the ability to specify the type of release.
workflow_dispatch:
inputs:
release_type:
description: Release type
required: true
type: choice
default: auto
options:
- auto
- custom
- patch
- minor
- major
custom_version:
description: The custom version to bump to (only for "custom" type)
required: false
type: string
default: ""
concurrency:
group: release
cancel-in-progress: false
jobs:
release_metadata:
name: Prepare release metadata
runs-on: ubuntu-latest
outputs:
version_number: ${{ steps.release_metadata.outputs.version_number }}
tag_name: ${{ steps.release_metadata.outputs.tag_name }}
changelog: ${{ steps.release_metadata.outputs.changelog }}
release_notes: ${{ steps.release_metadata.outputs.release_notes }}
steps:
- uses: apify/workflows/git-cliff-release@main
name: Prepare release metadata
id: release_metadata
with:
release_type: ${{ inputs.release_type }}
custom_version: ${{ inputs.custom_version }}
existing_changelog_path: CHANGELOG.md
update_changelog:
needs: [ release_metadata ]
name: Update changelog
runs-on: ubuntu-latest
outputs:
changelog_commitish: ${{ steps.commit.outputs.commit_long_sha || github.sha }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
- name: Use Node.js 22
uses: actions/setup-node@v4
with:
node-version: 22
- name: Update package version in package.json
run: npm version --no-git-tag-version --allow-same-version ${{ needs.release_metadata.outputs.version_number }}
- name: Update version in pyproject.toml
run: |
sed -i 's/^version = ".*"/version = "${{ needs.release_metadata.outputs.version_number }}"/' pyproject.toml
- name: Update CHANGELOG.md
uses: DamianReeves/write-file-action@master
with:
path: CHANGELOG.md
write-mode: overwrite
contents: ${{ needs.release_metadata.outputs.changelog }}
- name: Commit changes
id: commit
uses: EndBug/add-and-commit@v9
with:
author_name: Apify Release Bot
author_email: noreply@apify.com
message: "chore(release): Update changelog, package.json and pyproject.toml versions [skip ci]"
# Validate data and types
validate:
name: Validate
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Use Node.js 22
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm'
cache-dependency-path: 'package-lock.json'
- name: Install dependencies
run: npm ci
- name: Run validation
run: npm run test
# Pypi publish
publish_to_pypi:
name: Publish to PyPI
needs: [release_metadata, update_changelog, validate]
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write # Required for OIDC authentication.
environment:
name: pypi
url: https://pypi.org/project/mcp-client-capabilities
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.update_changelog.outputs.changelog_commitish }}
- name: Verify commit SHA
run: |
CURRENT_SHA=$(git rev-parse HEAD)
EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}"
echo "Expected commit SHA: $EXPECTED_SHA"
echo "Actual checked out SHA: $CURRENT_SHA"
if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then
echo "ERROR: Checked out SHA differs from expected!"
exit 1
else
echo "✓ Commit SHA matches expected"
fi
- name: Verify pyproject.toml version
run: |
EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}"
ACTUAL_VERSION=$(grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/')
echo "Expected version: $EXPECTED_VERSION"
echo "Actual version in pyproject.toml: $ACTUAL_VERSION"
echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}"
if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then
echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in pyproject.toml"
exit 1
fi
echo "✓ Version check passed: pyproject.toml has correct version $ACTUAL_VERSION"
- name: Prepare distribution
uses: apify/workflows/prepare-pypi-distribution@main
with:
ref: ${{ needs.update_changelog.outputs.changelog_commitish }}
package_name: mcp-client-capabilities
is_prerelease: ""
version_number: ${{ needs.release_metadata.outputs.version_number }}
# Publishes the package to PyPI using PyPA official GitHub action with OIDC authentication.
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
# NPM publish
publish_to_npm:
name: Publish to NPM
needs: [ release_metadata, update_changelog, validate ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.update_changelog.outputs.changelog_commitish }}
- name: Verify commit SHA
run: |
CURRENT_SHA=$(git rev-parse HEAD)
EXPECTED_SHA="${{ needs.update_changelog.outputs.changelog_commitish }}"
echo "Expected commit SHA: $EXPECTED_SHA"
echo "Actual checked out SHA: $CURRENT_SHA"
if [ "$EXPECTED_SHA" != "$CURRENT_SHA" ]; then
echo "ERROR: Checked out SHA differs from expected!"
exit 1
else
echo "✓ Commit SHA matches expected"
fi
- name: Verify package.json version
run: |
EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}"
ACTUAL_VERSION=$(jq -r '.version' package.json)
echo "Expected version: $EXPECTED_VERSION"
echo "Actual version in package.json: $ACTUAL_VERSION"
echo "Current commit SHA: ${{ needs.update_changelog.outputs.changelog_commitish }}"
if [ "$EXPECTED_VERSION" != "$ACTUAL_VERSION" ]; then
echo "ERROR: Version mismatch! Expected $EXPECTED_VERSION but found $ACTUAL_VERSION in package.json"
exit 1
fi
echo "✓ Version check passed: package.json has correct version $ACTUAL_VERSION"
- name: Use Node.js 22
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm'
cache-dependency-path: 'package-lock.json'
- name: Install dependencies
run: |
echo "access=public" >> .npmrc
echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc
npm ci
- name: Build module
run: npm run build
- name: Publish to NPM
run: npm publish --tag latest
env:
NODE_AUTH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.