130 lines
6 KiB
Markdown
130 lines
6 KiB
Markdown
# Frontend Commons
|
|
|
|
This repository contains consolidated boilerplates, CI/CD pipelines, and utilities for setting up frontend projects.
|
|
|
|
## CI/CD
|
|
|
|
GitHub (forgejo) pipelines and other CI/CD utilities for the frontends Phoenix Technologies maintains. Its purpose is to provide unified and consistent CI/CD workflows for all recent frontend projects developed and operated within our company, ensuring alignment, quality, and maintainability across setups.
|
|
|
|
## .Github Workflows: Build and push containers
|
|
|
|
### Docker / Container build
|
|
|
|
Containers are built using dedicated `Dockerfile`s located in the `/docker` directory within each project repository. After the build, the images are pushed to the registry.
|
|
|
|
### Tagging
|
|
|
|
Only tags following the specified patterns will be considered within container tags. Any other patterns will be ignored, ensuring adherence to the established tagging policy.
|
|
|
|
#### Standalone
|
|
|
|
- v1.0.0
|
|
- v1.0.0-\<anything\>
|
|
|
|
#### Monorepo
|
|
|
|
- <project_id>\_v1.0.0
|
|
- <project_id>\_v1.0.0-\<anything\>
|
|
|
|
### Pipelines
|
|
|
|
#### `Build`
|
|
|
|
A standard single-repository project with a `package.json` file located at the root, managing dependencies for the entire project.
|
|
|
|
###### Vars (inherited)
|
|
|
|
Setuped on org or repo level.
|
|
|
|
| Key | Description | Required |
|
|
| ------------ | --------------- | -------- |
|
|
| `IMAGE_PATH` | Image base path | ✓ |
|
|
|
|
###### Inputs
|
|
|
|
| Key | Description | Required |
|
|
| ------------------------- | ------------------------------- | -------- |
|
|
| `PACKAGE_WRITER_USERNAME` | User name of the package writer | ✓ |
|
|
|
|
###### Secrets
|
|
|
|
Note: Secrets must be explicitly passed to workflows, even if they are defined at the repository or organization level. This is due to the way Forgejo handles secrets in workflows.
|
|
|
|
| Key | Description | Required |
|
|
| --------------------------- | --------------------------------------------------------- | -------- |
|
|
| `PACKAGE_WRITE_TOKEN` | Accesstoken of the package writer | ✓ |
|
|
| `FONTAWESOME_PACKAGE_TOKEN` | Fontawesome Pro library token (Only needed if FA in use ) | |
|
|
|
|
#### `Build-Monorepo`
|
|
|
|
A monorepo project based on Turborepo, with individual projects located under the `/apps/<PROJECT_ID>` directory.
|
|
|
|
###### Vars (inherited)
|
|
|
|
Setuped on org or repo level.
|
|
|
|
| Key | Description | Required |
|
|
| ----------------- | ------------------ | -------- |
|
|
| `IMAGE_BASE_PATH` | Image base path | ✓ |
|
|
| `TURBO_TEAM` | Turbo repo team ID | |
|
|
| `TURBO_API` | Turbo repo api url | |
|
|
|
|
###### Inputs
|
|
|
|
| Key | Description | Required |
|
|
| ------------------------- | ------------------------------- | -------- |
|
|
| `PACKAGE_WRITER_USERNAME` | User name of the package writer | ✓ |
|
|
| `PROJECT_ID` | ID of the projcet | ✓ |
|
|
|
|
###### Secrets
|
|
|
|
Note: Secrets must be explicitly passed to workflows, even if they are defined at the repository or organization level. This is due to the way Forgejo handles secrets in workflows.
|
|
|
|
| Key | Description | Required |
|
|
| --------------------------- | -------------------------------------------------- | -------- |
|
|
| `PACKAGE_WRITE_TOKEN` | Access token of the package writer | ✓ |
|
|
| `TURBO_TOKEN` | Access token for turbo cache | |
|
|
| `FONTAWESOME_PACKAGE_TOKEN` | Fontawesome Pro library token (Only if fa in use ) | |
|
|
|
|
## .Github Workflows: Linting, type checking, code analyzis, dependency tracking
|
|
|
|
### Pipelines
|
|
|
|
#### `Lint`
|
|
|
|
Linting, type checking, sonarqube, dependency tracking, any testing
|
|
|
|
###### Vars (inherited)
|
|
|
|
Setuped on org or repo level.
|
|
|
|
| Key | Description | Required |
|
|
| ---------------- | ------------------------------------------------- | -------- |
|
|
| `TURBO_TEAM` | Turbo repo team ID (only applicable on monorepos) | |
|
|
| `TURBO_API` | Turbo repo api url (only applicable on monorepos) | |
|
|
| `SONAR_HOST_URL` | Sonarqube Host (required if sonarqube is enabled) | |
|
|
|
|
###### Inputs
|
|
|
|
| Key | Description | Required |
|
|
| -------------------- | ---------------------------------------------------------------------------------- | -------- |
|
|
| `SONARQUBE_ENABLED` | Send source to sonarqube for code analysis; default: `false` | |
|
|
| `TESTS_ENABLED` | Enable test suites; default: `false` | |
|
|
| `SETUP_REPO_SCRIPT` | Script which runs after install for setting up the repo; default: `yarn run setup` | |
|
|
| `TEST_SCRIPT` | Script which runs when tests are enabled; default: `yarn run test` | |
|
|
| `LINT_SCRIPT` | Script which runs eslint; default: `yarn run lint` | |
|
|
| `CHECK_TYPES_SCRIPT` | Script which runs tsc type checking: `yarn run check-types` | |
|
|
|
|
###### Secrets
|
|
|
|
Note: Secrets must be explicitly passed to workflows, even if they are defined at the repository or organization level. This is due to the way Forgejo handles secrets in workflows.
|
|
|
|
| Key | Description | Required |
|
|
| --------------------------- | ----------------------------------------------------------- | -------- |
|
|
| `TURBO_TOKEN` | Access token for turbo cache (only applicable on monorepos) | |
|
|
| `FONTAWESOME_PACKAGE_TOKEN` | Fontawesome Pro library token (Only needed if FA in use ) | |
|
|
| `SONAR_TOKEN` | Sonarqube access token (required if sonarqube is enabled) | |
|
|
|
|
## Authors
|
|
|
|
- Thomas Sauter, thomas.sauter@phoenix-technologies.ch
|