Skip to content

Commit

Permalink
ci: set up semantic release
Browse files Browse the repository at this point in the history
Set up [semantic-release](https://semantic-release.gitbook.io/semantic-release/)
version and release management tool. This will be used for automating
releases and publishing new versions.
  • Loading branch information
kennedykori committed Apr 16, 2024
1 parent ce1a9b0 commit c8ee747
Show file tree
Hide file tree
Showing 6 changed files with 7,999 additions and 14 deletions.
77 changes: 64 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,86 @@
name: CI

on: [ push ]

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
on:
- push

jobs:
build:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: read
runs-on: ubuntu-latest

strategy:
matrix:
python-version: [ "3.11", "3.12" ]

python-version:
- "3.11"
- "3.12"
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up project using python ${{ matrix.python-version }}
uses: actions/setup-python@v3
uses: actions/setup-python@v5
with:
cache: pip
python-version: ${{ matrix.python-version }}

# Run all pre-commit hooks on all the files.
# Getting only staged files can be tricky in case a new PR is opened
# since the action is run on a branch in detached head state
- name: Install and run pre-commit
uses: pre-commit/[email protected]

uses: pre-commit/[email protected]
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install tox tox-gh-actions
- name: Test with tox
run: tox -r

release:
# Only run on the 'main' and 'develop' branches.
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop'
needs:
- build
permissions: write-all
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
token: ${{ secrets.FYJ_GH_TOKEN }}
- name: Set up Python
uses: actions/setup-python@v5
with:
cache: pip
python-version: "3.12"
- name: Install requirements
run: |
python -m pip install --upgrade pip
python -m pip install tox tox-gh-actions
- name: Set up GPG
uses: crazy-max/ghaction-import-gpg@v6
with:
git_commit_gpgsign: true
git_committer_email: ${{ secrets.FYJ_GIT_COMMITTER_EMAIL }}
git_committer_name: ${{ secrets.FYJ_GIT_COMMITTER_NAME }}
# Currently, signing commits leads to the CI hanging indefinitely.
# See https://github.com/semantic-release/semantic-release/issues/3065
git_tag_gpgsign: false
git_user_signingkey: true
gpg_private_key: ${{ secrets.FYJ_GPG_KEY }}
passphrase: ${{ secrets.FYJ_GPG_KEY_PASSPHRASE }}
trust_level: 5
- name: Set up NodeJS
uses: actions/setup-node@v4
with:
cache: npm
node-version-file: .nvmrc
- name: Install semantic-release
run: npm ci
- name: Create a release
env:
DEBUG: semantic-release:*
GIT_AUTHOR_EMAIL: ${{ secrets.FYJ_GIT_COMMITTER_EMAIL }}
GIT_AUTHOR_NAME: ${{ secrets.FYJ_GIT_COMMITTER_NAME }}
GIT_COMMITTER_EMAIL: ${{ secrets.FYJ_GIT_COMMITTER_EMAIL }}
GIT_COMMITTER_NAME: ${{ secrets.FYJ_GIT_COMMITTER_NAME }}
GITHUB_TOKEN: ${{ secrets.FYJ_GH_TOKEN }}
run: npx semantic-release
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
lts/*
94 changes: 94 additions & 0 deletions .releaserc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
branches:
- main
- name: develop
channel: rc
prerelease: rc
plugins:
- '@semantic-release/commit-analyzer'
- - '@semantic-release/release-notes-generator'
- linkCompare: true
linkReferences: true
writerOpts:
commitGroupsSort:
- type
- title
commitSort:
- scope
- subject
- - semantic-release-replace-plugin
- replacements:
- countMatches: true
files:
- package.json
from: '"version": ".*",'
to: '"version": "${nextRelease.version}",'
results:
- file: package.json
hasChanged: true
numMatches: 1
numReplacements: 1
- - '@semantic-release/changelog'
- changelogFile: docs/CHANGELOG.md
- - '@semantic-release/git'
- assets:
- docs/CHANGELOG.md
- package.json
message: "release: ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
- - '@semantic-release/exec'
- publishCmd: "export GITHUB_TOKEN='${process.env.GITHUB_TOKEN}'; tox -e package"
- - '@semantic-release/github'
- assets:
- path: dist/*
tagFormat: v${version}
# ------------------------------------------------------------------------------
# GLOBAL PLUGIN OPTIONS
# See: https://github.com/semantic-release/semantic-release/blob/master/docs/usage/plugins
# .md#plugin-options-configuration
# ------------------------------------------------------------------------------
parserOptions:
noteKeywords:
- BREAKING CHANGES
- BREAKING CHANGE
- BREAKING
preset: conventionalcommits
presetConfig:
types:
- type: build
hidden: true
- type: ci
hidden: true
- type: chore
scope: deps
section: Dependency Updates
- type: chore
section: Refactors
- type: docs
scope: api
section: Documentation Updates
- type: docs
hidden: true
- type: feat
section: Features
- type: fix
section: Bug Fixes
- type: release
hidden: true
- type: test
hidden: true
releaseRules:
- type: chore
scope: deps
release: patch
- type: docs
scope: api
release: patch
- type: feat
release: minor
- type: fix
release: patch
- scope: minor
release: minor
- scope: patch
release: patch
- scope: no-release
release: false
Loading

0 comments on commit c8ee747

Please sign in to comment.