Reusable GitHub Actions workflows for Angular, .NET, and Docker projects.
| Workflow | Description |
|---|---|
angular-build.yml |
Build Angular applications with yarn workspaces |
angular-lint.yml |
Lint and format check Angular applications |
angular-test.yml |
Run Angular unit tests with coverage |
dotnet-build.yml |
Build .NET solutions |
dotnet-lint.yml |
Format and analyze .NET code |
dotnet-test.yml |
Run .NET tests with coverage |
docker-build.yml |
Build and push Docker images |
e2e-playwright.yml |
Run Playwright E2E tests |
code-quality.yml |
CodeQL security analysis |
jobs:
build:
uses: smartsolutionslab/orange-ci-templates/.github/workflows/angular-build.yml@main
with:
app-name: public-portal
working-directory: src/frontend
package-scope: '@orange-car-rental'
environment: productionInputs:
| Input | Required | Default | Description |
|---|---|---|---|
app-name |
Yes | - | Angular app name |
node-version |
No | 24 |
Node.js version |
working-directory |
No | . |
Frontend root directory |
environment |
No | production |
Build environment |
package-scope |
No | `` | Package scope |
upload-artifact |
No | true |
Upload build artifact |
artifact-retention-days |
No | 7 |
Artifact retention days |
Outputs: artifact-name, dist-path
jobs:
lint:
uses: smartsolutionslab/orange-ci-templates/.github/workflows/angular-lint.yml@main
with:
app-name: public-portal
working-directory: src/frontend
package-scope: '@orange-car-rental'Inputs:
| Input | Required | Default | Description |
|---|---|---|---|
app-name |
Yes | - | Angular app name |
node-version |
No | 24 |
Node.js version |
working-directory |
No | . |
Frontend root directory |
package-scope |
No | `` | Package scope |
fail-on-error |
No | true |
Fail on lint errors |
jobs:
test:
uses: smartsolutionslab/orange-ci-templates/.github/workflows/angular-test.yml@main
with:
app-name: public-portal
working-directory: src/frontend
package-scope: '@orange-car-rental'
coverage-enabled: trueInputs:
| Input | Required | Default | Description |
|---|---|---|---|
app-name |
Yes | - | Angular app name |
node-version |
No | 24 |
Node.js version |
working-directory |
No | . |
Frontend root directory |
package-scope |
No | `` | Package scope |
coverage-enabled |
No | true |
Enable coverage |
upload-coverage |
No | true |
Upload coverage artifact |
Outputs: coverage-path
jobs:
build:
uses: smartsolutionslab/orange-ci-templates/.github/workflows/dotnet-build.yml@main
with:
working-directory: src/backend
solution-file: OrangeCarRental.sln
configuration: Release
publish: true
publish-project: ApiGateway/OrangeCarRental.ApiGatewayInputs:
| Input | Required | Default | Description |
|---|---|---|---|
dotnet-version |
No | 10.0.x |
.NET SDK version |
working-directory |
No | . |
Backend root directory |
solution-file |
No | *.sln |
Solution file |
configuration |
No | Release |
Build configuration |
publish |
No | false |
Publish application |
publish-project |
No | `` | Project to publish |
upload-artifact |
No | true |
Upload artifact |
artifact-retention-days |
No | 7 |
Retention days |
Outputs: artifact-name
jobs:
lint:
uses: smartsolutionslab/orange-ci-templates/.github/workflows/dotnet-lint.yml@main
with:
working-directory: src/backend
solution-file: OrangeCarRental.sln
exclude-diagnostics: IDE1006Inputs:
| Input | Required | Default | Description |
|---|---|---|---|
dotnet-version |
No | 10.0.x |
.NET SDK version |
working-directory |
No | . |
Backend root directory |
solution-file |
No | *.sln |
Solution file |
exclude-diagnostics |
No | IDE1006 |
Excluded diagnostics |
fail-on-error |
No | true |
Fail on errors |
run-roslynator |
No | true |
Run Roslynator |
jobs:
test:
uses: smartsolutionslab/orange-ci-templates/.github/workflows/dotnet-test.yml@main
with:
working-directory: src/backend
solution-file: OrangeCarRental.sln
coverage-enabled: trueInputs:
| Input | Required | Default | Description |
|---|---|---|---|
dotnet-version |
No | 10.0.x |
.NET SDK version |
working-directory |
No | . |
Backend root directory |
solution-file |
No | *.sln |
Solution file |
test-filter |
No | `` | Test filter expression |
coverage-enabled |
No | true |
Enable coverage |
coverage-threshold |
No | 0 |
Min coverage % |
upload-results |
No | true |
Upload results |
Outputs: coverage-path, results-path
jobs:
docker:
uses: smartsolutionslab/orange-ci-templates/.github/workflows/docker-build.yml@main
with:
context: src/frontend/apps/public-portal
dockerfile: Dockerfile.runtime
image-name: public-portal
push: true
registry: ghcr.io
secrets:
registry-username: ${{ github.actor }}
registry-password: ${{ secrets.GITHUB_TOKEN }}Inputs:
| Input | Required | Default | Description |
|---|---|---|---|
context |
No | . |
Build context |
dockerfile |
No | Dockerfile |
Dockerfile path |
image-name |
Yes | - | Image name |
push |
No | false |
Push to registry |
registry |
No | ghcr.io |
Registry URL |
tags |
No | `` | Additional tags |
platforms |
No | linux/amd64 |
Target platforms |
build-args |
No | `` | Build arguments |
cache-from |
No | type=gha |
Cache source |
cache-to |
No | type=gha,mode=max |
Cache dest |
Secrets: registry-username, registry-password
Outputs: image-uri, digest
jobs:
e2e:
uses: smartsolutionslab/orange-ci-templates/.github/workflows/e2e-playwright.yml@main
with:
working-directory: src/frontend
browsers: chromium
base-url: http://localhost:4200Inputs:
| Input | Required | Default | Description |
|---|---|---|---|
node-version |
No | 24 |
Node.js version |
working-directory |
No | . |
Test directory |
browsers |
No | chromium |
Browsers to test |
base-url |
No | http://localhost:4200 |
Base URL |
shard |
No | `` | Shard (e.g., 1/3) |
timeout-minutes |
No | 30 |
Job timeout |
upload-report |
No | true |
Upload report |
upload-traces |
No | true |
Upload traces |
Outputs: report-path
jobs:
quality:
uses: smartsolutionslab/orange-ci-templates/.github/workflows/code-quality.yml@main
with:
languages: '"csharp","javascript"'
backend-directory: src/backend
frontend-directory: src/frontendInputs:
| Input | Required | Default | Description |
|---|---|---|---|
languages |
No | javascript |
Languages to analyze |
dotnet-version |
No | 10.0.x |
.NET version |
node-version |
No | 24 |
Node.js version |
backend-directory |
No | src/backend |
Backend directory |
frontend-directory |
No | src/frontend |
Frontend directory |
solution-file |
No | *.sln |
Solution file |
fail-on-severity |
No | moderate |
Fail severity |
See examples/caller-workflow.yml for a complete example of using these workflows.
MIT