Skip to content

Commit

Permalink
ci: monorepo CI handling
Browse files Browse the repository at this point in the history
  • Loading branch information
frederic-maury committed Nov 25, 2024
1 parent 9803d9b commit d140e92
Show file tree
Hide file tree
Showing 9 changed files with 6,750 additions and 51 deletions.
29 changes: 0 additions & 29 deletions .github/workflows/main-backend.yml

This file was deleted.

17 changes: 10 additions & 7 deletions .github/workflows/main-frontend.yml → .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
name: Main Frontend
name: Main
on:
push:
branches: [ "main" ]
paths:
- frontend/**
workflow_dispatch:

jobs:
Expand All @@ -14,16 +12,21 @@ jobs:
context_path: frontend
secrets: inherit

release-frontend:
concurrency: release
deploy-backend:
uses: ./.github/workflows/reusable-deploy.yml
with:
service_name: backend
context_path: backend
secrets: inherit

release:
uses: ./.github/workflows/reusable-release.yml
permissions:
contents: write
issues: write
pull-requests: write
packages: write
with:
working-directory: frontend
name: Frontend
name: Monorepo
secrets:
SEMANTIC_RELEASE_TOKEN: ${{ secrets.SEMANTIC_RELEASE_TOKEN }}
8 changes: 7 additions & 1 deletion .github/workflows/reusable-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,14 @@ jobs:
COMMIT_MSG=$(git log -1 --pretty=%B)
if echo "$COMMIT_MSG" | grep -qiE '^(ci|chore|docs|style|test)'; then
echo "should_run=false" >> $GITHUB_OUTPUT
else
exit 0
fi
CHANGED_FILES=$(git diff --name-only HEAD HEAD~1)
if echo "$CHANGED_FILES" | grep -q "^${{ inputs.context_path }}/"; then
echo "should_run=true" >> $GITHUB_OUTPUT
else
echo "should_run=false" >> $GITHUB_OUTPUT
fi
build:
Expand Down
17 changes: 9 additions & 8 deletions .github/workflows/reusable-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ name: Reusable Release
on:
workflow_call:
inputs:
working-directory:
required: true
type: string
name:
required: true
type: string
Expand All @@ -28,13 +25,17 @@ jobs:
token: ${{ secrets.SEMANTIC_RELEASE_TOKEN }}
- uses: actions/setup-node@v3
with:
node-version: 20
- name: Install dependencies
node-version: 22
- name: Install root dependencies
run: npm ci
- name: Install frontend dependencies
run: npm ci
working-directory: frontend
- name: Install backend dependencies
run: npm ci
working-directory: ${{ inputs.working-directory }}
working-directory: backend
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_TOKEN }}
GH_TOKEN: ${{ secrets.SEMANTIC_RELEASE_TOKEN }}
run: npx semantic-release
working-directory: ${{ inputs.working-directory }}
run: npx semantic-release
35 changes: 35 additions & 0 deletions .releaserc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
module.exports = {
branches: ['main'],
tagFormat: 'v${version}',
plugins: [
['@semantic-release/commit-analyzer', {
preset: 'angular',
releaseRules: [
{ type: 'feat', release: 'minor' },
{ type: 'fix', release: 'patch' },
{ type: 'docs', release: 'patch' },
{ type: 'style', release: 'patch' },
{ type: 'refactor', release: 'patch' },
{ type: 'perf', release: 'patch' },
{ type: 'test', release: 'patch' }
]
}],
'@semantic-release/release-notes-generator',
'@semantic-release/changelog',
['@semantic-release/exec', {
prepareCmd: 'node -e "const fs=require(\'fs\');const pkg=require(\'./frontend/package.json\');pkg.version=\'${nextRelease.version}\';fs.writeFileSync(\'./frontend/package.json\',JSON.stringify(pkg,null,2));" && node -e "const fs=require(\'fs\');const pkg=require(\'./backend/package.json\');pkg.version=\'${nextRelease.version}\';fs.writeFileSync(\'./backend/package.json\',JSON.stringify(pkg,null,2));"'
}],
['@semantic-release/git', {
assets: [
'package.json',
'frontend/package.json',
'backend/package.json',
'CHANGELOG.md',
'frontend/CHANGELOG.md',
'backend/CHANGELOG.md'
],
message: 'chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}'
}],
'@semantic-release/github'
]
}
15 changes: 12 additions & 3 deletions backend/.releaserc.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,21 @@ module.exports = {
plugins: [
['@semantic-release/commit-analyzer', {
preset: 'angular',
releaseRules: [
{ type: 'feat', release: 'minor' },
{ type: 'fix', release: 'patch' },
{ type: 'docs', release: 'patch' },
{ type: 'style', release: 'patch' },
{ type: 'refactor', release: 'patch' },
{ type: 'perf', release: 'patch' },
{ type: 'test', release: 'patch' }
]
}],
'@semantic-release/release-notes-generator',
"@semantic-release/changelog",
['@semantic-release/npm', {
npmPublish: false,
pkgRoot: 'backend'
}],
['@semantic-release/github', {
assets: [],
Expand All @@ -20,7 +30,6 @@ module.exports = {
pkgRoot: 'backend'
}]
],
// Initialize version from package.json
tagFormat: 'backend-v${version}',
initialVersionFromPackageJson: true
// Force initial version
createInitialReleaseFromPackageVersion: true
};
15 changes: 12 additions & 3 deletions frontend/.releaserc.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,21 @@ module.exports = {
plugins: [
['@semantic-release/commit-analyzer', {
preset: 'angular',
releaseRules: [
{ type: 'feat', release: 'minor' },
{ type: 'fix', release: 'patch' },
{ type: 'docs', release: 'patch' },
{ type: 'style', release: 'patch' },
{ type: 'refactor', release: 'patch' },
{ type: 'perf', release: 'patch' },
{ type: 'test', release: 'patch' }
]
}],
'@semantic-release/release-notes-generator',
"@semantic-release/changelog",
['@semantic-release/npm', {
npmPublish: false,
pkgRoot: 'frontend'
}],
['@semantic-release/github', {
assets: [],
Expand All @@ -20,7 +30,6 @@ module.exports = {
pkgRoot: 'frontend'
}]
],
// Initialize version from package.json
tagFormat: 'frontend-v${version}',
initialVersionFromPackageJson: true
// Force initial version
createInitialReleaseFromPackageVersion: true
};
Loading

0 comments on commit d140e92

Please sign in to comment.