Skip to content

Comments

build: add semantic-release (dry-run)#6

Merged
brian-smith-tcril merged 1 commit intoopenedx:mainfrom
brian-smith-tcril:bsmith/add-semantic-release-dry-run
Feb 13, 2026
Merged

build: add semantic-release (dry-run)#6
brian-smith-tcril merged 1 commit intoopenedx:mainfrom
brian-smith-tcril:bsmith/add-semantic-release-dry-run

Conversation

@brian-smith-tcril
Copy link
Contributor

Summary

  • Add release CI workflow triggered on push to main
  • Add .releaserc config with npm + GitHub release publishing
  • Update package version from 1.0.0-prealpha to 1.0.0

Running with --dry-run to verify the setup works correctly. A follow-up PR will remove the dry-run flag to enable actual releases.

Test plan

  • Merge this PR and verify the release CI workflow runs successfully on main
  • Confirm dry-run output shows correct version analysis and no actual publish occurs
  • Follow up with a PR removing --dry-run to enable real releases

🤖 Generated with Claude Code

@brian-smith-tcril
Copy link
Contributor Author

Log

frontend-dev-utils Semantic Release Setup - Work Log

Date: 2026-02-13

Objective

Set up semantic-release for @openedx/frontend-dev-utils so it automatically publishes to npm on merge to main.


Progress

Repo Setup

  • Cloned fork: brian-smith-tcril/frontend-dev-utils (fork of openedx/frontend-dev-utils)
  • Cloned to /home/bsmith/code/claude/frontend-dev-utils

Current State of the Repo

  • Branch: main
  • Version: 1.0.0-prealpha (in package.json)
  • No build step — source files are published directly (bin entries point to ./tools/...)
  • No test step beyond a placeholder echo "Error: no test specified"
  • Existing workflows: commitlint, add-remove-label-on-comment, add-depr-ticket-to-depr-board, self-assign-issue
  • No release workflow yet
  • Dependencies: chokidar, cors, express
  • 8 commits on main so far

Reference: openedx/frontend-platform Release Setup

Used as the model for how openedx repos do semantic-release.

Workflow (.github/workflows/release.yml):

  • Triggers on push to master and alpha branches
  • Uses npx semantic-release@25 (not installed as a dep)
  • Permissions: id-token: write (OIDC), contents: write (tagging)
  • Uses OPENEDX_SEMANTIC_RELEASE_GITHUB_TOKEN secret
  • Also has build and docs steps (not needed for frontend-dev-utils)

Config (.releaserc):

  • Branches: master + alpha (prerelease)
  • Uses @semantic-release/npm (with pkgRoot: "dist"), @semantic-release/github, @semantic-release/commit-analyzer, @semantic-release/release-notes-generator
  • Publishes to both npm and GitHub releases

Key Differences for frontend-dev-utils

  • Branch is main not master
  • No build step needed (no dist directory, publish from root)
  • No docs step needed
  • pkgRoot should be omitted or set to . (publish from root)

Plan (approved)

Files to create/modify:

  1. .github/workflows/release.yml — new workflow, modeled on frontend-platform but without build/docs steps
  2. .releaserc — semantic-release config, adapted for root-level publishing
  3. package.json — may need version/publishConfig updates

Implementation (completed)

Created .github/workflows/release.yml

  • Triggers on push to main
  • Uses ubuntu-24.04, Node from .nvmrc
  • Runs npm ci then npx semantic-release@25 --dry-run
  • Permissions: id-token: write, contents: write
  • Uses OPENEDX_SEMANTIC_RELEASE_GITHUB_TOKEN secret
  • No build or docs steps (not needed for this repo)

Created .releaserc

  • Branch: main (not master like frontend-platform)
  • Plugins: commit-analyzer, release-notes-generator, npm (from root), github
  • No pkgRoot override — publishes from repo root since there's no build/dist step
  • tagFormat: "v${version}"

Updated package.json

  • Changed version from 1.0.0-prealpha to 1.0.0
  • Semantic-release will manage versioning from here on

Commit & PR

  • Branch: bsmith/add-semantic-release-dry-run
  • Commit: 32f7006build: add semantic-release with dry-run
  • PR: build: add semantic-release (dry-run) #6
  • Running in --dry-run mode; follow-up PR will remove the flag to enable actual releases

Add release CI workflow, .releaserc config, and update package version
from prealpha to 1.0.0. Running in dry-run mode to verify the setup
before enabling actual releases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@brian-smith-tcril brian-smith-tcril force-pushed the bsmith/add-semantic-release-dry-run branch from 32f7006 to 486449d Compare February 13, 2026 17:03
Copy link

@arbrandes arbrandes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@brian-smith-tcril brian-smith-tcril merged commit da1a8ff into openedx:main Feb 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants