Skip to main content
Glama

HomeAssistant MCP

release.yml5.2 kB
name: Release on: push: tags: - 'v*.*.*' # Triggers on version tags like v1.0.0, v1.2.3, etc. permissions: contents: write packages: write id-token: write env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} jobs: # Job 1: Create GitHub Release create-release: name: Create GitHub Release runs-on: ubuntu-latest outputs: version: ${{ steps.get_version.outputs.version }} steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Get version from tag id: get_version run: echo "version=${GITHUB_REF#refs/tags/v}" >> "$GITHUB_OUTPUT" - name: Generate changelog id: changelog run: | # Get package name from package.json PACKAGE_NAME=$(node -p "require('./package.json').name") # Get the previous tag PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") # Generate changelog if [ -z "$PREV_TAG" ]; then # First release - limit to recent commits CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges --max-count=50) else CHANGELOG=$(git log "${PREV_TAG}..HEAD" --pretty=format:"- %s (%h)" --no-merges) fi # Save to file for multiline output echo "$CHANGELOG" > changelog.txt # Create formatted release notes { echo "## Changes" echo "" cat changelog.txt echo "" echo "## Installation" echo "" echo "### npm" echo '```bash' echo "npm install -g ${PACKAGE_NAME}@${{ steps.get_version.outputs.version }}" echo '```' echo "" echo "### Docker" echo '```bash' echo "docker pull ghcr.io/${{ github.repository }}:${{ steps.get_version.outputs.version }}" echo '```' } > release_notes.txt - name: Create GitHub Release id: create_release uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} name: Release ${{ github.ref_name }} body_path: release_notes.txt draft: false prerelease: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Job 2: Publish to npm publish-npm: name: Publish to npm runs-on: ubuntu-latest needs: create-release steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Bun uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install dependencies run: bun install --frozen-lockfile - name: Build package run: bun run build:all - name: Setup Node.js for npm publish uses: actions/setup-node@v4 with: node-version: '20' registry-url: 'https://registry.npmjs.org' - name: Verify package version matches tag run: | PACKAGE_VERSION=$(node -p "require('./package.json').version") TAG_VERSION="${{ needs.create-release.outputs.version }}" echo "Package version: $PACKAGE_VERSION" echo "Tag version: $TAG_VERSION" if [ "$PACKAGE_VERSION" != "$TAG_VERSION" ]; then echo "Error: Package version ($PACKAGE_VERSION) does not match tag version ($TAG_VERSION)" exit 1 fi - name: Publish to npm run: npm publish --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # Job 3: Build and Push Docker Image build-docker: name: Build and Push Docker Image runs-on: ubuntu-latest needs: create-release steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata for Docker id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=raw,value=latest - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max - name: Add Docker pull command to release run: | echo "Docker image published: ghcr.io/${{ github.repository }}:${{ needs.create-release.outputs.version }}" echo "Pull with: docker pull ghcr.io/${{ github.repository }}:${{ needs.create-release.outputs.version }}"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jango-blockchained/advanced-homeassistant-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server