frontend-commons/README.md

6 KiB

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 Dockerfiles 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