Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
111 lines
3.9 KiB
YAML
111 lines
3.9 KiB
YAML
name: Release Integration
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'integrations/**'
|
|
|
|
jobs:
|
|
publish:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
id-token: write # for PyPI trusted publishing
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Extract integration info
|
|
id: info
|
|
run: |
|
|
# refs/tags/integrations/litellm/v0.1.0 → integration=litellm, version=0.1.0
|
|
TAG="${GITHUB_REF#refs/tags/}"
|
|
INTEGRATION=$(echo "$TAG" | cut -d'/' -f2)
|
|
VERSION=$(echo "$TAG" | cut -d'/' -f3 | sed 's/^v//')
|
|
echo "integration=$INTEGRATION" >> $GITHUB_OUTPUT
|
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
|
echo "Integration: $INTEGRATION, Version: $VERSION"
|
|
|
|
- name: Detect integration type
|
|
id: type
|
|
run: |
|
|
if [ -f "hindsight-integrations/${{ steps.info.outputs.integration }}/pyproject.toml" ]; then
|
|
echo "type=python" >> $GITHUB_OUTPUT
|
|
elif [ -f "hindsight-integrations/${{ steps.info.outputs.integration }}/package.json" ]; then
|
|
echo "type=typescript" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "type=plugin" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
# ── Python integrations (litellm, pydantic-ai, crewai) ──────────────────
|
|
|
|
- name: Install uv
|
|
if: steps.type.outputs.type == 'python'
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
|
|
- name: Set up Python
|
|
if: steps.type.outputs.type == 'python'
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version-file: ".python-version"
|
|
|
|
- name: Build Python package
|
|
if: steps.type.outputs.type == 'python'
|
|
working-directory: ./hindsight-integrations/${{ steps.info.outputs.integration }}
|
|
run: uv build --out-dir dist
|
|
|
|
- name: Publish Python package to PyPI
|
|
if: steps.type.outputs.type == 'python'
|
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
with:
|
|
packages-dir: ./hindsight-integrations/${{ steps.info.outputs.integration }}/dist
|
|
skip-existing: true
|
|
|
|
# ── TypeScript integrations (ai-sdk, chat, openclaw) ────────────────────
|
|
|
|
# ── Plugin integrations (claude-code) — no package to publish ───────────
|
|
|
|
- name: Plugin release
|
|
if: steps.type.outputs.type == 'plugin'
|
|
run: |
|
|
echo "Plugin integration ${{ steps.info.outputs.integration }} v${{ steps.info.outputs.version }} — no package to publish."
|
|
echo "Users install via: claude plugin marketplace add vectorize-io/hindsight --sparse hindsight-integrations"
|
|
|
|
# ── TypeScript integrations (ai-sdk, chat, openclaw) ────────────────────
|
|
|
|
- name: Set up Node.js
|
|
if: steps.type.outputs.type == 'typescript'
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: '22'
|
|
registry-url: 'https://registry.npmjs.org'
|
|
|
|
- name: Install dependencies
|
|
if: steps.type.outputs.type == 'typescript'
|
|
working-directory: ./hindsight-integrations/${{ steps.info.outputs.integration }}
|
|
run: npm ci
|
|
|
|
- name: Build TypeScript package
|
|
if: steps.type.outputs.type == 'typescript'
|
|
working-directory: ./hindsight-integrations/${{ steps.info.outputs.integration }}
|
|
run: npm run build
|
|
|
|
- name: Publish TypeScript package to npm
|
|
if: steps.type.outputs.type == 'typescript'
|
|
working-directory: ./hindsight-integrations/${{ steps.info.outputs.integration }}
|
|
run: |
|
|
set +e
|
|
OUTPUT=$(npm publish --access public 2>&1)
|
|
EXIT_CODE=$?
|
|
echo "$OUTPUT"
|
|
if [ $EXIT_CODE -ne 0 ]; then
|
|
if echo "$OUTPUT" | grep -q "cannot publish over"; then
|
|
echo "Package version already published, skipping..."
|
|
exit 0
|
|
fi
|
|
exit $EXIT_CODE
|
|
fi
|
|
env:
|
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|