Skip to content

Commit 139f87e

Browse files
committed
feat(ci): add initial CI configuration and tools
Introduce GitHub Actions workflows for build, lint, and release processes. Added support for automated beta and release merges, issue templates, CODEOWNERS, commit linting, and semantic release setup to streamline development and collaboration.
1 parent 0bc6358 commit 139f87e

21 files changed

+21266
-13576
lines changed

.github/CODEOWNERS

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# ==================================================================================
2+
# @ng-doc/ng-doc codeowners
3+
# ==================================================================================
4+
# More info: https://help.github.com/articles/about-codeowners/
5+
6+
* @klerick
7+
# will be requested for review when someone opens a pull request
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: '🐞 Bug Report'
2+
description: Report a bug
3+
title: '[Bug] '
4+
labels: 'Type: Bug'
5+
assignees: klerick
6+
7+
body:
8+
- type: dropdown
9+
id: is-regression
10+
attributes:
11+
label: Is this a regression?
12+
options:
13+
- 'Yes'
14+
- 'No'
15+
- "I don't know"
16+
validations:
17+
required: true
18+
19+
- type: textarea
20+
id: description
21+
attributes:
22+
label: Description
23+
placeholder: |
24+
A clear and concise description of what the bug is.
25+
What is the current behavior?
26+
What is the expected behavior?
27+
Please provide a link to a minimal reproduction of the problem with instructions.
28+
validations:
29+
required: true
30+
31+
- type: textarea
32+
id: exception-or-error
33+
attributes:
34+
label: Please provide the exception or error you saw
35+
render: true
36+
37+
- type: dropdown
38+
id: os
39+
attributes:
40+
label: OS
41+
options:
42+
- Unix (Linux, macOS, etc.)
43+
- Windows
44+
- iOS, Android, etc.
45+
- Something else
46+
validations:
47+
required: true
48+
49+
- type: dropdown
50+
id: browser
51+
attributes:
52+
label: Browser
53+
options:
54+
- Chrome
55+
- Firefox
56+
- Safari
57+
- Edge
58+
- IE
59+
- Other
60+
61+
- type: input
62+
id: node-version
63+
attributes:
64+
label: Node version
65+
validations:
66+
required: true
67+
68+
- type: textarea
69+
id: other
70+
attributes:
71+
label: Anything else?
72+
placeholder: |
73+
Please provide any additional information that may be helpful in understanding the issue.
74+
If you have a screenshot, attach it here.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: '📚 Documentation Request'
2+
description: Request a documentation update
3+
title: '[Docs] '
4+
labels: 'Type: Documentation'
5+
assignees: klerick
6+
7+
body:
8+
- type: textarea
9+
id: description
10+
attributes:
11+
label: Description
12+
placeholder: |
13+
A clear and concise description of what the problem is. What kind of documentation update is needed or what is missing?
14+
validations:
15+
required: true
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: '🚀 Feature Request'
2+
description: Suggest a feature
3+
title: '[Feature] '
4+
labels: 'Type: Enhancement'
5+
assignees: klerick
6+
7+
body:
8+
- type: textarea
9+
id: description
10+
attributes:
11+
label: Description
12+
placeholder: |
13+
A clear and concise description of what the problem is.
14+
Ex. I'm always frustrated when [...]
15+
validations:
16+
required: true
17+
18+
- type: textarea
19+
id: proposed-solution
20+
attributes:
21+
label: Proposed solution
22+
placeholder: |
23+
A clear and concise description of what you want to happen.
24+
What is the expected behavior?
25+
What is the current behavior?
26+
What is the motivation / use case for changing the behavior?
27+
validations:
28+
required: true
29+
30+
- type: textarea
31+
id: alternatives-considered
32+
attributes:
33+
label: Alternatives considered
34+
placeholder: |
35+
A clear and concise description of any alternative solutions or features you've considered.
36+
validations:
37+
required: true

.github/actions/nodejs/action.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: NxAngularMf action for Node.js
2+
description: Setup Node.js
3+
4+
inputs:
5+
node-version:
6+
description: Node.js version
7+
required: false
8+
default: 22.x
9+
10+
runs:
11+
using: composite
12+
steps:
13+
- name: Use Node.js ${{ inputs.node-version }}
14+
uses: actions/setup-node@v3
15+
with:
16+
node-version: ${{ inputs.node-version }}
17+
cache: npm
18+
19+
- name: Cache NPM dependencies
20+
uses: actions/cache@v3
21+
id: cache-npm-dependencies
22+
with:
23+
path: node_modules
24+
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
25+
26+
- name: Install Dependencies
27+
if: steps.cache-npm-dependencies.outputs.cache-hit != 'true'
28+
shell: bash
29+
run: npm ci

.github/lock.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Configuration for Lock Threads - https://github.com/dessant/lock-threads
2+
3+
# Number of days of inactivity before a closed issue or pull request is locked
4+
daysUntilLock: 60
5+
6+
# Skip issues and pull requests created before a given timestamp. Timestamp must
7+
# follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable
8+
skipCreatedBefore: false
9+
10+
# Issues and pull requests with these labels will be ignored. Set to `[]` to disable
11+
exemptLabels: []
12+
13+
# Label to add before locking, such as `outdated`. Set to `false` to disable
14+
lockLabel: false
15+
16+
# Comment to post before locking. Set to `false` to disable
17+
lockComment: >
18+
This issue has been automatically locked due to inactivity. Please file a new issue if you are encountering a similar or related problem. Why locking? Having issues with the most up-to-date context.
19+
# Assign `resolved` as the reason for locking. Set to `false` to disable
20+
setLockReason: true
21+
22+
# Limit to only `issues` or `pulls`
23+
# only: issues
24+
25+
# Optionally, specify configuration settings just for `issues` or `pulls`
26+
# issues:
27+
# exemptLabels:
28+
# - help-wanted
29+
# lockLabel: outdated
30+
31+
pulls:
32+
daysUntilLock: 30

.github/pull_request_template.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
## PR Checklist
2+
3+
Please check if your PR fulfills the following requirements:
4+
5+
[//]: # (- [ ] Tests for the changes have been added (for bug fixes/features))
6+
- [ ] Docs have been added/updated (for bug fixes/features)
7+
8+
## PR Type
9+
10+
What kind of change does this PR introduce?
11+
12+
<!-- Please check the one that applies to this PR using "x". -->
13+
14+
- [ ] Bugfix
15+
- [ ] Feature
16+
- [ ] Code style update (formatting, local variables)
17+
- [ ] Refactoring (no functional changes, no API changes)
18+
- [ ] Build related changes
19+
- [ ] CI-related changes
20+
- [ ] Documentation content changes
21+
- [ ] Other... Please describe:
22+
23+
## Issue Number
24+
25+
<!-- Bugs and features must be linked to an issue. -->
26+
27+
Issue Number: N/A
28+
29+
## Does this PR introduce a breaking change?
30+
31+
<!-- If this PR contains a breaking change, please describe the impact and migration path for existing applications below. -->
32+
33+
- [ ] Yes
34+
- [ ] No
35+
36+
## Other information

.github/workflows/build.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: ⚙️ Build
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
base:
7+
type: string
8+
description: Base branch
9+
required: false
10+
default: 'main'
11+
head:
12+
type: string
13+
description: Head branch
14+
required: false
15+
default: 'HEAD'
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v3
23+
24+
- run: git fetch origin ${{ inputs.base }}
25+
26+
- name: Setup Node.js
27+
uses: ./.github/actions/nodejs
28+
29+
- name: Build Libraries
30+
run: npx nx run-many --projects=tag:type:lib --target=build --parallel
31+

.github/workflows/create-beta.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: 📦 Create Beta Release
2+
3+
on: workflow_dispatch
4+
5+
jobs:
6+
merge-release:
7+
name: Merge release into beta
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: checkout
11+
uses: actions/checkout@v2
12+
- name: merge
13+
uses: mtanzi/action-automerge@v1
14+
id: merge
15+
with:
16+
github_token: ${{ secrets.GITHUB_TOKEN }}
17+
source: 'release'
18+
target: 'beta'
19+
merge-main:
20+
name: Merge main into beta
21+
runs-on: ubuntu-latest
22+
steps:
23+
- name: checkout
24+
uses: actions/checkout@v2
25+
- name: merge
26+
uses: mtanzi/action-automerge@v1
27+
id: merge
28+
with:
29+
github_token: ${{ secrets.GITHUB_TOKEN }}
30+
source: 'main'
31+
target: 'beta'

.github/workflows/create-release.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: 📦 Create Release
2+
3+
on: workflow_dispatch
4+
5+
jobs:
6+
merge-main:
7+
name: Merge main into release
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: checkout
11+
uses: actions/checkout@v2
12+
- name: merge
13+
uses: mtanzi/action-automerge@v1
14+
id: merge
15+
with:
16+
github_token: ${{ secrets.GITHUB_TOKEN }}
17+
source: 'main'
18+
target: 'release'

.github/workflows/lint.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: ⚙️ Lint
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
base:
7+
type: string
8+
description: Base branch
9+
required: false
10+
default: 'main'
11+
head:
12+
type: string
13+
description: Head branch
14+
required: false
15+
default: 'HEAD'
16+
17+
jobs:
18+
lint:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v3
23+
24+
- run: git fetch origin ${{ inputs.base }}
25+
26+
- name: Setup Node.js
27+
uses: ./.github/actions/nodejs
28+
29+
- name: Lint
30+
run: npx nx affected --target=lint --quiet=true --parallel --base=remotes/origin/${{ inputs.base }} --head=${{ inputs.head }}

.github/workflows/pr.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: 📝 PR Checks
2+
3+
on: [pull_request]
4+
5+
jobs:
6+
lint:
7+
uses: ./.github/workflows/lint.yml
8+
with:
9+
base: ${{github.event.pull_request.base.ref}}
10+
test:
11+
uses: ./.github/workflows/test.yml
12+
with:
13+
base: ${{github.event.pull_request.base.ref}}
14+
build:
15+
uses: ./.github/workflows/build.yml
16+
with:
17+
base: ${{github.event.pull_request.base.ref}}

0 commit comments

Comments
 (0)