release-automation-builder

Release Automation Builder

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "release-automation-builder" with this command: npx skills add monkey1sai/openai-cli/monkey1sai-openai-cli-release-automation-builder

Release Automation Builder

Automate releases with versioning, changelogs, and publishing.

Using Changesets

Setup

npm install -D @changesets/cli npx changeset init

Workflow

.github/workflows/release.yml

name: Release

on: push: branches: - main

concurrency: ${{ github.workflow }}-${{ github.ref }}

jobs: release: name: Release runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0

  - uses: actions/setup-node@v4
    with:
      node-version: "20"
      cache: "npm"

  - run: npm ci

  - name: Create Release Pull Request or Publish
    uses: changesets/action@v1
    with:
      publish: npm run release
      commit: "chore: release packages"
      title: "chore: release packages"
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

Package Scripts

{ "scripts": { "changeset": "changeset", "version": "changeset version", "release": "changeset publish" } }

Using Semantic Release

Configuration

// .releaserc.js module.exports = { branches: ["main"], plugins: [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", "@semantic-release/changelog", "@semantic-release/npm", "@semantic-release/github", [ "@semantic-release/git", { assets: ["CHANGELOG.md", "package.json"], message: "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}", }, ], ], };

Workflow

.github/workflows/release.yml

name: Release

on: push: branches: [main]

jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: persist-credentials: false

  - uses: actions/setup-node@v4
    with:
      node-version: "20"

  - run: npm ci
  - run: npm run build

  - name: Release
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
    run: npx semantic-release

Versioning Strategy

Semantic Versioning (SemVer)

MAJOR.MINOR.PATCH

1.0.0 → 1.0.1 (patch - bug fix) 1.0.1 → 1.1.0 (minor - new feature) 1.1.0 → 2.0.0 (major - breaking change)

Conventional Commits

feat: add new feature (minor bump) fix: fix bug (patch bump) perf: performance improvement (patch bump) docs: update docs (no bump) chore: maintenance (no bump)

feat!: breaking change (major bump) fix!: breaking bug fix (major bump)

Changelog Generation

Changelog

[2.1.0] - 2024-01-15

Added

  • New dashboard widget (#123)
  • Export to PDF feature (#125)

Fixed

  • Memory leak in data processing (#124)
  • Typo in error message (#126)

Changed

  • Updated dependencies

[2.0.0] - 2024-01-01

Breaking Changes

  • Removed deprecated API endpoints
  • Changed authentication method

Migration Guide

See MIGRATION.md for upgrade instructions

Docker Image Publishing

docker-release: runs-on: ubuntu-latest needs: test if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4

- name: Get version
  id: version
  run: echo "version=$(cat package.json | jq -r '.version')" >> $GITHUB_OUTPUT

- name: Login to Docker Hub
  uses: docker/login-action@v3
  with:
    username: ${{ secrets.DOCKER_USERNAME }}
    password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build and push
  uses: docker/build-push-action@v5
  with:
    context: .
    push: true
    tags: |
      mycompany/myapp:latest
      mycompany/myapp:${{ steps.version.outputs.version }}

NPM Publishing

publish: runs-on: ubuntu-latest needs: test if: github.event_name == 'release' steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" registry-url: "https://registry.npmjs.org"

- run: npm ci
- run: npm run build

- name: Publish to npm
  run: npm publish
  env:
    NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

GitHub Release Notes

  • name: Create GitHub Release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.version.outputs.version }} release_name: Release ${{ steps.version.outputs.version }} body: | ## What's Changed ${{ steps.changelog.outputs.content }}

    ## Installation
    ```bash
    npm install mypackage@${{ steps.version.outputs.version }}
    ```
    

    draft: false prerelease: false

Best Practices

  • Conventional commits: Standardize commit format

  • Protected branches: Prevent direct pushes to main

  • Automated versioning: Let tools determine versions

  • Changelogs: Auto-generate from commits

  • Git tags: Tag every release

  • Release notes: Include migration guides

  • Dry run: Test releases in staging

Output Checklist

  • Changesets or semantic-release configured

  • Versioning strategy documented

  • Changelog generation automated

  • Git tagging automated

  • Release notes template

  • NPM publishing (if package)

  • Docker publishing (if applicable)

  • Protected branch rules

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

websocket-realtime-builder

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

api-docs-generator

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

secrets-scanner

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

responsive-design-system

No summary provided by upstream source.

Repository SourceNeeds Review