diff --git a/.github/workflows/build-monorepo.yaml b/.github/workflows/build-monorepo.yaml index 15df981..12888db 100644 --- a/.github/workflows/build-monorepo.yaml +++ b/.github/workflows/build-monorepo.yaml @@ -8,6 +8,10 @@ on: PROJECT_ID: required: true type: string + DOCKER_REGISTRY: + required: false + type: string + default: git.kvant.cloud jobs: build_and_push: @@ -26,7 +30,9 @@ jobs: tags: | type=ref,event=branch,branch=dev,suffix=-{{sha}},optional=true type=ref,event=branch,branch=dev,value=dev,optional=true - type=match,event=tag,pattern=v(.*),group=1,prefix=v,optional=true + type=match,event=tag,pattern=.*_?(v\d+\.\d+\.\d+(?:-[\w\d.-]+)?),group=1,prefix=,optional=true + type=match,event=tag,pattern=.*_?(v\d+\.\d+\.\d+(?:-[\w\d.-]+)?),value=latest,optional=true + type=match,event=tag,pattern=.*v(\\d+\\.\\d+\\.\\d+).*,group=1,prefix=v,optional=true - name: Print (debug) Docker meta JSON uses: https://github.com/actions/github-script@v8 @@ -45,7 +51,7 @@ jobs: - name: Login into gitea registry uses: docker/login-action@v3 with: - registry: git.kvant.cloud + registry: ${{ inputs.DOCKER_REGISTRY }} username: ${{ inputs.PACKAGE_WRITER_USERNAME }} password: ${{ secrets.PACKAGE_WRITER_TOKEN }} diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a0b064a..409c2e7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -5,6 +5,10 @@ on: PACKAGE_WRITER_USERNAME: required: true type: string + DOCKER_REGISTRY: + required: false + type: string + default: git.kvant.cloud jobs: build_and_push: runs-on: ubuntu-latest @@ -22,10 +26,8 @@ jobs: tags: | type=ref,event=branch,branch=dev,suffix=-{{sha}},optional=true type=ref,event=branch,branch=dev,value=dev,optional=true - type=match,event=tag,pattern=v(.*),group=1,prefix=v,optional=true - type=match,event=tag,pattern=v(.*),value=latest,optional=true - flavor: | - latest=false + type=match,event=tag,pattern=v(\d+\.\d+\.\d+(?:-[\w\d.-]+)?),group=1,prefix=v,optional=true + type=match,event=tag,pattern=v(\d+\.\d+\.\d+(?:-[\w\d.-]+)?),value=latest,optional=true - name: Print (debug) Docker meta JSON uses: https://github.com/actions/github-script@v8 @@ -49,7 +51,7 @@ jobs: - name: Login into gitea registry uses: docker/login-action@v3 with: - registry: git.kvant.cloud + registry: ${{ inputs.DOCKER_REGISTRY }} username: ${{ inputs.PACKAGE_WRITER_USERNAME }} password: ${{ secrets.PACKAGE_WRITER_TOKEN }} diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 5e219e1..fff5418 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -41,6 +41,10 @@ jobs: env: NO_YARN_POSTINSTALL: 1 FONTAWESOME_PACKAGE_TOKEN: ${{ secrets.FONTAWESOME_PACKAGE_TOKEN }} + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_API: ${{ vars.TURBO_API }} + TURBO_TEAM: ${{ vars.TURBO_TEAM }} + TURBO_URL: ${{ vars.TURBO_URL }} steps: - name: Checkout repository uses: actions/checkout@v5 diff --git a/README.md b/README.md index 8d40f7b..47d0f65 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,31 @@ GitHub (forgejo) pipelines and other CI/CD utilities for the frontends Phoenix T ## .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. -### `Build` +### 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-\ + +#### Monorepo + +- \_v1.0.0 +- \_v1.0.0-\ + +### Pipelines + +#### `Build` A standard single-repository project with a `package.json` file located at the root, managing dependencies for the entire project. -##### Vars (inherited) +###### Vars (inherited) Setuped on org or repo level. @@ -22,13 +40,13 @@ Setuped on org or repo level. | ------------ | --------------- | -------- | | `IMAGE_PATH` | Image base path | ✓ | -##### Inputs +###### Inputs | Key | Description | Required | | ------------------------- | ------------------------------- | -------- | | `PACKAGE_WRITER_USERNAME` | User name of the package writer | ✓ | -##### Secrets +###### 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. @@ -37,11 +55,11 @@ Note: Secrets must be explicitly passed to workflows, even if they are defined a | `PACKAGE_WRITE_TOKEN` | Accesstoken of the package writer | ✓ | | `FONTAWESOME_PACKAGE_TOKEN` | Fontawesome Pro library token (Only needed if FA in use ) | | -### `Build-Monorepo` +#### `Build-Monorepo` A monorepo project based on Turborepo, with individual projects located under the `/apps/` directory. -##### Vars (inherited) +###### Vars (inherited) Setuped on org or repo level. @@ -51,14 +69,14 @@ Setuped on org or repo level. | `TURBO_TEAM` | Turbo repo team ID | | | `TURBO_API` | Turbo repo api url | | -##### Inputs +###### Inputs | Key | Description | Required | | ------------------------- | ------------------------------- | -------- | | `PACKAGE_WRITER_USERNAME` | User name of the package writer | ✓ | | `PROJECT_ID` | ID of the projcet | ✓ | -##### Secrets +###### 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. @@ -70,11 +88,13 @@ Note: Secrets must be explicitly passed to workflows, even if they are defined a ## .Github Workflows: Linting, type checking, code analyzis, dependency tracking -### `Lint` +### Pipelines + +#### `Lint` Linting, type checking, sonarqube, dependency tracking, any testing -##### Vars (inherited) +###### Vars (inherited) Setuped on org or repo level. @@ -84,7 +104,7 @@ Setuped on org or repo level. | `TURBO_API` | Turbo repo api url (only applicable on monorepos) | | | `SONAR_HOST_URL` | Sonarqube Host (required if sonarqube is enabled) | | -##### Inputs +###### Inputs | Key | Description | Required | | -------------------- | ---------------------------------------------------------------------------------- | -------- | @@ -95,7 +115,7 @@ Setuped on org or repo level. | `LINT_SCRIPT` | Script which runs eslint; default: `yarn run lint` | | | `CHECK_TYPES_SCRIPT` | Script which runs tsc type checking: `yarn run check-types` | | -##### Secrets +###### 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.