Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add action and continuous integration infrastructure #1

Merged
merged 3 commits into from
Sep 9, 2024
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
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
groups:
actions:
patterns:
- "*"
27 changes: 27 additions & 0 deletions .github/workflows/check-commit-message.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: "Commit Message Check"
on:
pull_request:
types:
- opened
- edited
- reopened
- synchronize
push:
branches:
- main

permissions:
contents: read
pull-requests: read

jobs:
check-commit-message:
runs-on: ubuntu-latest
steps:
# Check out the repository to ensure the step below has access to action source code.
- uses: actions/checkout@v4

# Run the commit message validation action using the source code checked out in the previous step.
- uses: ./
with:
token: ${{ secrets.GITHUB_TOKEN }}
36 changes: 36 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: CI

on:
workflow_dispatch:
pull_request:
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
pre-commit:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-python@v5
with:
python-version: "3.x"

- uses: pre-commit/[email protected]

test-action:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: ./
with:
token: ${{ secrets.GITHUB_TOKEN }}
27 changes: 27 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: "v4.5.0"
hooks:
- id: check-added-large-files
- id: check-case-conflict
- id: check-merge-conflict
- id: check-symlinks
- id: check-yaml
- id: debug-statements
- id: end-of-file-fixer
- id: mixed-line-ending
- id: trailing-whitespace

- repo: https://github.com/pre-commit/mirrors-prettier
rev: "v3.1.0"
hooks:
- id: prettier
types_or: [yaml, markdown, html, css, scss, javascript, json]
args: [--prose-wrap=always]

- repo: https://github.com/python-jsonschema/check-jsonschema
rev: "0.28.0"
hooks:
- id: check-dependabot
- id: check-github-actions
- id: check-github-workflows
41 changes: 41 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,44 @@
This GitHub composite action verifies that commit messages conform to the
[Slicer commit style](https://slicer.readthedocs.io/en/latest/developer_guide/style_guide.html#commits)
guidelines.

## Usage

To automatically enforce the Slicer commit message style during pull requests or
pushes to the `main` branch, create a workflow file at
`.github/workflows/check-commit-message.yml` with the following content:

```yaml
name: "Commit Message Check"
on:
pull_request:
types:
- opened
- edited
- reopened
- synchronize
push:
branches:
- main

permissions:
contents: read
pull-requests: read

jobs:
check-commit-message:
name: Check Commit Message
uses: slicer/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
```

This workflow will trigger commit message checks on relevant pull request events
or when changes are pushed to the `main` branch.

## History

This action was originally implemented by
[@jamesobutler](https://github.com/jamesobutler),
[@pieper](https://github.com/pieper) and [@jcfr](https://github.com/jcfr) in the
Slicer repository under `.github/workflows/commit-message.yml`.
38 changes: 38 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: "Commit Message Check"
description: "Check Commit Messages match Slicer style"
inputs:
token:
description:
"GitHub access token used to list and check all pull request commits"
required: true
runs:
using: "composite"
steps:
- name: Check Commit Prefix
uses: gsactions/commit-message-checker@16fa2d5de096ae0d35626443bcd24f1e756cafee # v2.0.0
with:
pattern: "^(ENH|PERF|BUG|STYLE|DOC|COMP): ([A-Z])+"
flags: "gm"
excludeDescription: "true" # optional: this excludes the description body of a pull request
excludeTitle: "true" # optional: this excludes the title of a pull request
error:
'The first line has to start with a commit prefix, followed by a colon
and space, and then followed by a message with a capital letter (e.g
"ENH: Add support for awesome feature"). For more details on other
requirements, see
https://slicer.readthedocs.io/en/latest/developer_guide/style_guide.html#commits'
checkAllCommitMessages: "true" # optional: this checks all commits associated with a pull request
accessToken: ${{ inputs.token }} # github access token is only required if checkAllCommitMessages is true

- name: Check Line Length
uses: gsactions/commit-message-checker@16fa2d5de096ae0d35626443bcd24f1e756cafee # v2.0.0
with:
pattern: "^[^#].{1,78}$"
error:
"The maximum line length of 78 characters is exceeded. For more
details, see
https://slicer.readthedocs.io/en/latest/developer_guide/style_guide.html#commits"
excludeDescription: "true" # optional: this excludes the description body of a pull request
excludeTitle: "true" # optional: this excludes the title of a pull request
checkAllCommitMessages: "true" # optional: this checks all commits associated with a pull request
accessToken: ${{ inputs.token }} # github access token is only required if checkAllCommitMessages is true
Loading