Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: release
on:
push:
branches:
- master
tags:
- 'v*.*.*'
pull_request:
types:
- labeled

jobs:
release:
if: github.event.action != 'labeled'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

# Bump version on merging Pull Requests with specific labels.
# (bump:major,bump:minor,bump:patch)
- id: bumpr
if: "!startsWith(github.ref, 'refs/tags/')"
uses: haya14busa/action-bumpr@v1

# Update corresponding major and minor tag.
# e.g. Update v1 and v1.2 when releasing v1.2.3
- uses: haya14busa/action-update-semver@v1
if: "!steps.bumpr.outputs.skip"
with:
tag: ${{ steps.bumpr.outputs.next_version }}

# Get tag name.
- id: tag
uses: haya14busa/action-cond@v1
with:
cond: "${{ startsWith(github.ref, 'refs/tags/') }}"
if_true: ${{ github.ref }}
if_false: ${{ steps.bumpr.outputs.next_version }}

# Create release.
- uses: shogo82148/actions-create-release@v1
if: "steps.tag.outputs.value != ''"
with:
# This token is provided by Actions, you do not
# need to create your own token
github_token: ${{ secrets.PAT_TOKEN }}
tag_name: ${{ steps.tag.outputs.value }}
release_name: Release ${{ steps.tag.outputs.value }}
body: ${{ steps.bumpr.outputs.message }}
draft: false
prerelease: false

release-check:
if: github.event.action == 'labeled'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Post bumpr status comment
uses: haya14busa/action-bumpr@v1
34 changes: 34 additions & 0 deletions .github/workflows/test_action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: Test Action

on: [push, workflow_dispatch]

jobs:
test_action:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: actions/checkout@v4
with:
path: ./action
- uses: actions/checkout@v4
with:
token: ${{ secrets.PAT_TOKEN }}
fetch-depth: 0
repository: zckv/semantic-versioning-example
path: ./pyproject
- uses: ./action
with:
github_token: ${{ secrets.PAT_TOKEN }}
root_options: -v --noop
directory: ./pyproject
commit: false
push: false
changelog: false
vcs_release: false
psr_version: 8.7.0
62 changes: 62 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
default_stages: [pre-commit, manual]

repos:
# fix
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: pretty-format-json
- id: requirements-txt-fixer
- id: trailing-whitespace
stages: [pre-commit, manual]
- id: end-of-file-fixer
stages: [pre-commit, manual]
- id: fix-encoding-pragma
- id: fix-byte-order-marker

- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black
language_version: python3

# check
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: name-tests-test
- id: check-added-large-files
- id: check-json
- id: check-toml
- id: check-xml
- id: check-yaml
- id: check-symlinks
- id: check-ast

- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.13.0
hooks:
- id: mypy
args: [--explicit-package-bases]
additional_dependencies:
- types-python-dateutil
- types-flask
- types-requests

- repo: https://github.com/PyCQA/flake8
rev: 7.1.1
hooks:
- id: flake8

- repo: https://github.com/adrienverge/yamllint
rev: v1.35.1
hooks:
- id: yamllint
args: [-d, relaxed]

- repo: https://github.com/compilerla/conventional-pre-commit
rev: v3.5.0
hooks:
- id: conventional-pre-commit
stages: [commit-msg]
55 changes: 55 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Python Semantic Release Composite Action
Composite action for PSR.
Official project is here:
https://github.com/python-semantic-release/python-semantic-release

This action use PSR in the worker environment directly.
Python must be installed.

You may use a specific version of PSR with this action.
For now, only versions 8 and 9 are supported.

## Options

| Name | Type | Description|
|---------------------------|------------|------------|
|`root_options` | string | Additional options for the main command. Example: -vv --noop|
|`directory` | string | Sub-directory to cd into before running semantic-release|
|`github_token` | string | GitHub token used to push release notes and new commits/tags|
|`git_committer_name` | string | The human name for the “committer” field|
|`git_committer_email` | string | The email address for the “committer” field|
|`ssh_public_signing_key` | string | The ssh public key used to sign commits|
|`ssh_private_signing_key` | string | The ssh private key used to sign commits|
|`prerelease` | boolean | Force the next version to be a prerelease. Set to "true" or "false".|
|`prerelease_token` | string | Force the next version to use this prerelease token, if it is a prerelease.|
|`force` | string | Force the next version to be a major release. Must be set to one of "prerelease", "patch", "minor", or "major". |
|`commit` | boolean | Whether or not to commit changes locally. Defaults are handled by python-semantic-release internal version command. |
|`tag` | boolean | Whether or not to make a local version tag. Defaults are handled by python-semantic-release internal version command.|
|`push` | boolean | Whether or not to push local commits to the Git repository. See the configuration page for defaults of `semantic-release version` for how the default is determined between push, tag, & commit.|
|`changelog` | boolean | Whether or not to update the changelog.|
|`vcs_release` | boolean | Whether or not to create a release in the remote VCS, if supported|
|`build` | boolean | Whether or not to run the build_command for the project. Defaults are handled by python-semantic-release internal version command.|
|`build_metadata` | string | Build metadata to append to the new version|
|`psr_version` | string | Pin python-semantic-release version to a specific value|

### Example of use

```yaml
jobs:
psr:
# Python is installed by default on github workers
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: zckv/python-semantic-release-composite-action@v1
with:
github_token: ${{ secrets.PAT_TOKEN }}
root_options: -v
prerelease: true
commit: true
push: true
vcs_release: false
psr_version: 8.7.0
```
Loading
Loading