5
0
Fork 0
mirror of https://github.com/wagoid/commitlint-github-action.git synced 2025-11-07 16:06:56 +00:00

Merge pull request #7 from wagoid/feat/add-ability-to-run-on-pulls

Feat/add ability to run on pushes
This commit is contained in:
Wagner Santos 2019-10-15 11:37:41 -03:00 committed by GitHub
commit 240ede8de1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 116 additions and 34 deletions

6
.dockerignore Normal file
View file

@ -0,0 +1,6 @@
node_modules
.commitlintrc.yml
commitlint.config.js
action.yml
.github
CHANGELOG.md

View file

@ -8,6 +8,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v1
- run: sed -i -E "s/([']docker:.+)/Dockerfile/" ./action.yml
- uses: ./
commitlint-with-yml-file:
runs-on: ubuntu-latest
@ -15,6 +16,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v1
- run: sed -i -E "s/([']docker:.+)/Dockerfile/" ./action.yml
- uses: ./
with:
configFile: './.commitlintrc.yml'

12
.github/workflows/test.yml vendored Normal file
View file

@ -0,0 +1,12 @@
name: Test
on: [push]
jobs:
commitlint:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v1
- run: sed -i -E "s/([']docker:.+)/Dockerfile/" ./action.yml
- uses: ./

View file

@ -1,3 +1,12 @@
<a name="1.2.0"></a>
## [1.2.1](https://github.com/wagoid/commitlint-github-action/compare/v1.1.1...v1.2.0) (2019-10-15)
### Features
- add ability to run commitlint on events that are not pull requests ([23cd801](https://github.com/wagoid/commitlint-github-action/commit/23cd801))
- add firstParent input to ignore errors from your default branch ([598e473](https://github.com/wagoid/commitlint-github-action/commit/598e473))
<a name="1.1.1"></a>
## [1.1.1](https://github.com/wagoid/commitlint-github-action/compare/v1.1.0...v1.1.1) (2019-10-08)

View file

@ -26,6 +26,15 @@ jobs:
The path to your commitlint config file. Default `commitlint.config.js`.
### `firstParent`
When set to true, we follow only the first parent commit when seeing a merge commit.
This helps to ignore errors in commits that were already present in your default branch (e.g. `master`) before adding conventional commit checks.
More info in [git-log docs](https://git-scm.com/docs/git-log#Documentation/git-log.txt---first-parent).
Default `true`
## About `extends` in your config file
This is a [`Docker` action](https://github.com/actions/toolkit/blob/e2adf403d6d14a9ca7474976ccaca20f72ff8209/docs/action-types.md#why-would-i-choose-a-docker-action), and was made like this so that you can run it with minimum setup, regardless of your repo's environment. It comes packed with the most famous shared configurations that you can use in your commitlint config's `extends` field:

View file

@ -5,9 +5,12 @@ inputs:
configFile:
description: 'commitlint config file'
default: './commitlint.config.js'
firstParent:
description: 'when set to true, we follow only the first parent commit when seeing a merge commit. More info in git-log docs https://git-scm.com/docs/git-log#Documentation/git-log.txt---first-parent'
default: true
runs:
using: 'docker'
image: 'docker://wagoid/commitlint-github-action:1.1.1'
image: 'docker://wagoid/commitlint-github-action:1.2.0'
branding:
icon: 'check-square'
color: 'blue'

48
package-lock.json generated
View file

@ -1,6 +1,6 @@
{
"name": "commitlint-github-action",
"version": "1.1.0",
"version": "1.1.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -9,6 +9,11 @@
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.1.tgz",
"integrity": "sha512-O5G6EmlzTVsng7VSpNtszIoQq6kOgMGNTFB/hmwKNNA4V71JyxImCIrL27vVHCt2Cb3ImkaCr6o27C2MV9Ylwg=="
},
"@actions/exec": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.1.tgz",
"integrity": "sha512-nvFkxwiicvpzNiCBF4wFBDfnBvi7xp/as7LE1hBxBxKG2L29+gkIPBiLKMVORL+Hg3JNf07AKRfl0V5djoypjQ=="
},
"@actions/github": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@actions/github/-/github-1.1.0.tgz",
@ -156,6 +161,20 @@
"@marionebl/sander": "0.6.1",
"babel-runtime": "6.26.0",
"git-raw-commits": "1.3.6"
},
"dependencies": {
"git-raw-commits": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz",
"integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==",
"requires": {
"dargs": "4.1.0",
"lodash.template": "4.5.0",
"meow": "4.0.1",
"split2": "2.2.0",
"through2": "2.0.5"
}
}
}
},
"@commitlint/resolve-extends": {
@ -1322,31 +1341,23 @@
}
},
"git-raw-commits": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz",
"integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==",
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.2.tgz",
"integrity": "sha512-HVvl6J3dx7CS9fWTtyZXA2ejhdq9p/GSU9EEVlJPb2pSgMuD7IWK3dERcUPsJj9SZrJJ6IIB+3Rsjx9FUDdE1Q==",
"requires": {
"dargs": "4.1.0",
"lodash.template": "4.5.0",
"meow": "4.0.1",
"split2": "2.2.0",
"through2": "2.0.5"
"through2": "3.0.1"
},
"dependencies": {
"meow": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
"integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
"through2": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
"integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
"requires": {
"camelcase-keys": "4.2.0",
"decamelize-keys": "1.1.0",
"loud-rejection": "1.6.0",
"minimist": "1.2.0",
"minimist-options": "3.0.2",
"normalize-package-data": "2.5.0",
"read-pkg-up": "3.0.0",
"redent": "2.0.0",
"trim-newlines": "2.0.0"
"readable-stream": "2.3.6"
}
}
}
@ -1793,7 +1804,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
"integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
"dev": true,
"requires": {
"camelcase-keys": "4.2.0",
"decamelize-keys": "1.1.0",

View file

@ -1,6 +1,6 @@
{
"name": "commitlint-github-action",
"version": "1.1.1",
"version": "1.2.0",
"description": "commitlint github action",
"main": "index.js",
"scripts": {
@ -16,6 +16,7 @@
"homepage": "https://github.com/wagoid/commitlint-github-action",
"dependencies": {
"@actions/core": "1.1.1",
"@actions/exec": "1.0.1",
"@actions/github": "1.1.0",
"@commitlint/config-angular": "8.2.0",
"@commitlint/config-conventional": "7.6.0",
@ -24,9 +25,9 @@
"@commitlint/format": "8.2.0",
"@commitlint/lint": "8.2.0",
"@commitlint/load": "8.2.0",
"@commitlint/read": "8.2.0",
"commitlint-config-jira": "1.0.9",
"conventional-changelog-lint-config-canonical": "1.0.0"
"conventional-changelog-lint-config-canonical": "1.0.0",
"git-raw-commits": "2.0.2"
},
"devDependencies": {
"conventional-changelog-cli": "2.0.23",

52
run.js
View file

@ -1,13 +1,16 @@
const { existsSync, readFileSync } = require('fs')
const { existsSync } = require('fs')
const { resolve } = require('path')
const core = require('@actions/core')
const github = require('@actions/github')
const read = require('@commitlint/read')
const exec = require('@actions/exec')
const lint = require('@commitlint/lint')
const { format } = require('@commitlint/format')
const load = require('@commitlint/load')
const gitRawCommits = require('git-raw-commits')
const githubToken = process.env.GITHUB_TOKEN
const pullRequestEvent = 'pull_request'
const { GITHUB_TOKEN, GITHUB_EVENT_NAME, GITHUB_SHA } = process.env
const configPath = resolve(
process.env.GITHUB_WORKSPACE,
@ -15,7 +18,9 @@ const configPath = resolve(
)
const getRangeFromPullRequest = async () => {
const octokit = new github.GitHub(githubToken)
if (GITHUB_EVENT_NAME !== pullRequestEvent) return [null, GITHUB_SHA]
const octokit = new github.GitHub(GITHUB_TOKEN)
const { owner, repo, number } = github.context.issue
const { data: commits } = await octokit.pulls.listCommits({
owner,
@ -29,8 +34,34 @@ const getRangeFromPullRequest = async () => {
return [from, to]
}
function getHistoryCommits(from, to) {
const options = {
from,
to,
}
if (core.getInput('firstParent') === 'true') {
options.firstParent = true
}
if (!from) {
options.maxCount = 1
}
return new Promise((resolve, reject) => {
const data = []
gitRawCommits(options)
.on('data', chunk => data.push(chunk.toString('utf-8')))
.on('error', reject)
.on('end', () => {
resolve(data)
})
})
}
const showLintResults = async ([from, to]) => {
const commits = await read({ from, to })
const commits = await getHistoryCommits(from, to)
const config = existsSync(configPath)
? await load({}, { file: configPath })
: {}
@ -46,18 +77,17 @@ const showLintResults = async ([from, to]) => {
},
)
if (formattedResults.length) {
process.stderr.write(formattedResults)
process.exit(1)
if (formattedResults) {
core.setFailed(
`You have commit messages with errors\n\n${formattedResults}`,
)
} else {
console.log('Lint free! 🎉')
}
}
const exitWithMessage = message => error => {
console.log(message)
console.error(error)
process.exit(1)
core.setFailed(`${message}\n${error}`)
}
const main = () =>