Skip to content

Commit 7252a8f

Browse files
committed
chore: Add generic CI workflows.
1 parent a8cec36 commit 7252a8f

19 files changed

+1393
-2
lines changed

.github/dependabot.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
# To get started with Dependabot version updates, you'll need to specify which
3+
# package ecosystems to update and where the package manifests are located.
4+
# Please see the documentation for all configuration options:
5+
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
6+
7+
version: 2
8+
updates:
9+
- package-ecosystem: "cargo" # See documentation for possible values
10+
directory: "/" # Location of package manifests
11+
schedule:
12+
interval: "weekly"
13+
- package-ecosystem: "github-actions"
14+
directory: "/"
15+
schedule:
16+
interval: "weekly"

.github/linters/.jscpd.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"ignore": [
3+
"**/.github/workflows/**"
4+
]
5+
}

.github/workflows/changelog.yaml

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
name: Changelog
3+
4+
on:
5+
push:
6+
tags:
7+
- "v*.*.*"
8+
9+
jobs:
10+
changelog:
11+
name: Generate and publish changelog
12+
runs-on: ubuntu-latest
13+
permissions:
14+
contents: write
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
with:
19+
fetch-depth: 0
20+
21+
- name: Generate a changelog
22+
uses: orhun/git-cliff-action@v4
23+
id: git-cliff
24+
with:
25+
config: cliff.toml
26+
args: --verbose --latest --strip header
27+
env:
28+
OUTPUT: CHANGES.md
29+
GITHUB_REPO: ${{ github.repository }}
30+
31+
- name: Polish changelog
32+
shell: bash
33+
run: sed -i '1,2d' CHANGES.md
34+
35+
- name: Upload the changelog
36+
uses: ncipollo/release-action@v1
37+
with:
38+
# draft: true
39+
allowUpdates: true
40+
bodyFile: CHANGES.md

.github/workflows/linting.yaml

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
name: Linting
3+
4+
on:
5+
workflow_call:
6+
pull_request:
7+
push:
8+
branches:
9+
- main
10+
11+
permissions:
12+
contents: read
13+
pull-requests: read
14+
packages: read
15+
statuses: write
16+
17+
jobs:
18+
super-linter:
19+
name: Super Linter
20+
runs-on: ubuntu-latest
21+
22+
steps:
23+
- name: Checkout code
24+
uses: actions/checkout@v4
25+
with:
26+
fetch-depth: 0
27+
28+
- name: Super-linter
29+
uses: github/super-linter@latest
30+
env:
31+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32+
33+
conventional_commits:
34+
name: Check conventional commit compliance
35+
runs-on: ubuntu-latest
36+
37+
steps:
38+
- name: Checkout code
39+
uses: actions/checkout@v4
40+
with:
41+
fetch-depth: 0
42+
43+
- name: Conventional commit check
44+
uses: cocogitto/cocogitto-action@main

.github/workflows/testing.yaml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
name: Tests
3+
4+
on: # yamllint disable-line rule:truthy
5+
pull_request:
6+
push:
7+
branches:
8+
- main
9+
10+
permissions:
11+
contents: read
12+
packages: read
13+
statuses: write
14+
15+
jobs:
16+
tests:
17+
name: Run tests
18+
runs-on: ubuntu-latest
19+
20+
steps:
21+
- name: Checkout code
22+
uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
26+
- name: Build
27+
run: task build
28+
29+
- name: Run tests
30+
run: task test

.goji.json

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
{
2+
"noemoji": false,
3+
"scopes": [
4+
"home",
5+
"accounts",
6+
"ci"
7+
],
8+
"signoff": true,
9+
"skipquestions": null,
10+
"subjectmaxlength": 100,
11+
"types": [
12+
{
13+
"emoji": "",
14+
"code": ":sparkles:",
15+
"description": "Introduce new features.",
16+
"name": "feat"
17+
},
18+
{
19+
"emoji": "🐛",
20+
"code": ":bug:",
21+
"description": "Fix a bug.",
22+
"name": "fix"
23+
},
24+
{
25+
"emoji": "📚",
26+
"code": ":books:",
27+
"description": "Documentation change.",
28+
"name": "docs"
29+
},
30+
{
31+
"emoji": "🎨",
32+
"code": ":art:",
33+
"description": "Improve structure/format of the code.",
34+
"name": "refactor"
35+
},
36+
{
37+
"emoji": "🧹",
38+
"code": ":broom:",
39+
"description": "A chore change.",
40+
"name": "chore"
41+
},
42+
{
43+
"emoji": "🧪",
44+
"code": ":test_tube:",
45+
"description": "Add a test.",
46+
"name": "test"
47+
},
48+
{
49+
"emoji": "🚑️",
50+
"code": ":ambulance:",
51+
"description": "Critical hotfix.",
52+
"name": "hotfix"
53+
},
54+
{
55+
"emoji": "⚰️",
56+
"code": ":coffin:",
57+
"description": "Remove dead code.",
58+
"name": "deprecate"
59+
},
60+
{
61+
"emoji": "⚡️",
62+
"code": ":zap:",
63+
"description": "Improve performance.",
64+
"name": "perf"
65+
},
66+
{
67+
"emoji": "🚧",
68+
"code": ":construction:",
69+
"description": "Work in progress.",
70+
"name": "wip"
71+
},
72+
{
73+
"emoji": "📦",
74+
"code": ":package:",
75+
"description": "Add or update compiled files or packages.",
76+
"name": "package"
77+
}
78+
]
79+
}

.lefthook-local.yml

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# If the path contains spaces, you need to quote it.
2+
rc: '"${XDG_CONFIG_HOME:-$HOME/.config}/lefthookrc"'

.lefthook.toml

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
[pre-commit]
2+
parallel = true
3+
4+
[pre-commit.commands.lint]
5+
run = "just --timestamp lint"
6+
glob = "*.go"
7+
stage_fixed = true
8+
9+
[pre-commit.commands.format]
10+
run = "just --timestamp format"
11+
glob = "*.go"
12+
stage_fixed = true
13+
14+
[pre-commit.commands.build]
15+
run = "just --timestamp build"
16+
glob = "*.go"
17+
18+
[pre-commit.commands.audit]
19+
run = "just --timestamp audit"
20+
21+
#[commit-msg.commands.cog-verify]
22+
#run = "cog verify -i '{1}'"
23+
24+
#[commit-msg.commands.cog-check]
25+
#run = "cog check"
26+
27+
# Build commit message
28+
[prepare-commit-msg.commands.commitzen]
29+
interactive = true
30+
run = "just --timestamp prepare-commit-msg {1}"
31+
[commit-msg.commands.commitzen.env]
32+
LEFTHOOK = 0
33+
34+
# Validate commit messages
35+
[commit-msg.commands.commitzen]
36+
run = "just --timestamp lint-commit-msg {1}"

.woodpecker/default.yaml

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
when:
2+
- event: push
3+
branch: main
4+
5+
clone:
6+
git:
7+
image: /usr/local/bin/plugin-git
8+
settings:
9+
lfs: false
10+
11+
steps:
12+
- name: date
13+
image: sh
14+
commands:
15+
- date
16+
17+
- name: Self-check
18+
image: sh
19+
commands:
20+
- task --list
21+
22+
- name: Setup
23+
image: sh
24+
environment:
25+
GITEA_TOKEN:
26+
from_secret: Gitea Token
27+
secrets: [ "Gitea Token" ]
28+
detach: true
29+
commands:
30+
- task setup
31+
32+
- name: Logs
33+
image: sh
34+
environment:
35+
GITEA_TOKEN:
36+
from_secret: Gitea Token
37+
secrets: [ "Gitea Token" ]
38+
detach: true
39+
commands:
40+
- task queue
41+
42+
- name: Testing
43+
image: sh
44+
environment:
45+
GITEA_TOKEN:
46+
from_secret: Gitea Token
47+
secrets: [ "Gitea Token" ]
48+
commands:
49+
- task test
50+
51+
- name: Clean
52+
image: sh
53+
environment:
54+
GITEA_TOKEN:
55+
from_secret: Gitea Token
56+
secrets: [ "Gitea Token" ]
57+
commands:
58+
- task teardown
59+
60+
- name: Build
61+
image: sh
62+
environment:
63+
GITEA_TOKEN:
64+
from_secret: Gitea Token
65+
secrets: [ "Gitea Token" ]
66+
commands:
67+
- task build
68+
69+
- name: Upload packages
70+
image: sh
71+
environment:
72+
GITEA_TOKEN:
73+
from_secret: Gitea Token
74+
secrets: [ "Gitea Token" ]
75+
commands:
76+
- task upload

README.md

+44-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,44 @@
1-
# generic-template
2-
GitHub Actions, Woodpecker CI, and Lefthook pre-commit scripts
1+
# Generic template
2+
3+
GitHub Actions, Woodpecker CI, and Lefthook pre-commit scripts.
4+
5+
## Features
6+
- GitHub Actions integration
7+
- Woodpecker CI integration
8+
- Lefthook pre-commit scripts
9+
- just and go-task task runners
10+
- pipelight CI pipelines
11+
- goji commitizen commit message linting
12+
- git-cliff keep-a-changelog changelog generator
13+
- lychee dead link checker
14+
- minijinja templating
15+
- treefmt code formatting
16+
- trivy and trufflehog security scanning
17+
- venom and hurl test suites
18+
- rspress and mdbook documentation sites
19+
- abc and xyz todo list / kanban manager
20+
21+
## Install
22+
- install just: `cargo install --git https://github.com/casey/just@latest`
23+
- run `just install`
24+
25+
## Build
26+
27+
```sh
28+
just build
29+
```
30+
31+
## Dependencies
32+
- hurl
33+
- git-cliff
34+
- goji
35+
- just
36+
- lychee
37+
- lefthook
38+
- minijinja
39+
- pipelight
40+
- task
41+
- treefmt
42+
- trivy
43+
- trufflehog
44+
- venom

TODO.md

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# TODO
2+
3+
1. CLI todo list manager
4+
2. CLI kanban tui

0 commit comments

Comments
 (0)