Skip to content

Create a release

Create a release #109

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 manifest.json version
# run: jq '.version = "${{ needs.release_metadata.outputs.version_number }}"' manifest.json > manifest.json.tmp && mv manifest.json.tmp manifest.json
# - name: Update server.json version
# run: |
# EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}"
# jq --arg version "$EXPECTED_VERSION" '.version = $version | .packages[0].version = $version' server.json > server.json.tmp && mv server.json.tmp server.json
# echo "Updated server.json to version $EXPECTED_VERSION"
# - 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: [email protected]
# message: "chore(release): Update changelog, server.json, package.json and manifest.json versions [skip ci]"
#create_github_release:
# name: Create github release
# needs: [release_metadata, update_changelog]
# runs-on: ubuntu-latest
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# 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 manifest.json version
# run: |
# EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}"
# ACTUAL_VERSION=$(jq -r '.version' manifest.json)
# echo "Expected version: $EXPECTED_VERSION"
# echo "Actual version in manifest.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 manifest.json"
# exit 1
# fi
# echo "✓ Version check passed: manifest.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: Prepare DXT package
# run: |
# mkdir dxt
# cp -r node_modules dxt/node_modules
# cp -r dist dxt/dist
# cp -r docs dxt/docs
# cp package.json dxt/package.json
# cp manifest.json dxt/manifest.json
# - name: Create DXT package
# run: npx -y @anthropic-ai/dxt pack dxt/ actors-mcp-server.dxt
# - name: Copy DXT package
# run: cp actors-mcp-server.dxt apify-mcp-server.dxt
# - name: Create release
# uses: softprops/action-gh-release@v2
# with:
# tag_name: ${{ needs.release_metadata.outputs.tag_name }}
# name: ${{ needs.release_metadata.outputs.version_number }}
# target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }}
# body: ${{ needs.release_metadata.outputs.release_notes }}
# files: |
# actors-mcp-server.dxt
# apify-mcp-server.dxt
#publish_to_npm:
# name: Publish to NPM
# needs: [ release_metadata, update_changelog ]
# 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
publish_to_mcp_registry:
name: Publish to MCP Registry
#needs: [ release_metadata, update_changelog, publish_to_npm ]
needs: [ release_metadata ]
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
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 server.json version
# run: |
# EXPECTED_VERSION="${{ needs.release_metadata.outputs.version_number }}"
# ACTUAL_VERSION=$(jq -r '.version' server.json)
# echo "Expected version: $EXPECTED_VERSION"
# echo "Actual version in server.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 server.json"
# exit 1
# fi
# echo "✓ Version check passed: server.json has correct version $ACTUAL_VERSION"
- name: Install MCP Publisher
run: |
curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.0.0/mcp-publisher_1.0.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
chmod +x mcp-publisher
- name: Login to MCP Registry
run: ./mcp-publisher login github-oidc
- name: Publish to MCP Registry
run: ./mcp-publisher publish
env:
NODE_AUTH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }}