mcp-graphql
by blurrah
Verified
- mcp-graphql
- .github
- workflows
name: ci
on:
push:
branches:
- main
tags:
- v*
pull_request:
types: [opened, synchronize]
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
if: github.event_name != 'release'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- run: bun install
- run: bun run build
- name: Get tag annotation
id: get-tag-annotation
run: |
TAG_NAME=${GITHUB_REF#refs/tags/}
echo "Processing tag: $TAG_NAME"
# Check if tag exists and is annotated
if TAG_MESSAGE=$(git tag -l --format='%(contents)' $TAG_NAME 2>/dev/null); then
echo "Found annotated tag message"
else
echo "No tag annotation found, using empty message"
TAG_MESSAGE=""
fi
# Use multiline output syntax for GitHub Actions
echo "TAG_MESSAGE<<EOF" >> $GITHUB_OUTPUT
echo "$TAG_MESSAGE" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: dist/*
generate_release_notes: true
body: ${{ steps.get-tag-annotation.outputs.TAG_MESSAGE }}
append_body: true
# Use PAT as it sends a release event, built in token doesn't
token: ${{ secrets.RELEASE_TOKEN }}
publish:
runs-on: ubuntu-latest
if: github.event_name == 'release'
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
# Falling back to node since I want provenance for the npm package
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
# Might be a useless optimization but I felt like not reusing the build job
- name: Download index.js from release
run: |
gh release download ${{ github.event.release.tag_name }} --dir dist --pattern "index.js"
env:
GH_TOKEN: ${{ github.token }}
- run: npm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}