Infra
CD Apply
- cloud: (obligatori) Entorn al núvol. Valors possibles:
aws(default)azuregcp
- terraform_version: (obligatori) Versió de Terraform.
- infra_version_plan: (obligatori) Versió del pla d’Infraestructura.
- environment: (obligatori) Entorn.
- healthcheck_url: (opcional) URL del comprovador d’estat. Ha de ser
https://<endpoint_url.gencat.cat>/. Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - healthcheck_regex: (opcional) Regressió de l’estat. Ha de tenir format semàntic entre cometes, ex:
"1.0.0". Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - healthcheck_timeout: (opcional) Temps màxim per a la comprovació d’estat. Ha de tenir un valor numèric entre cometes, ex:
"300". Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - mat: (opcional) Per habilitar o deshabilitar la MAT del repositori. Valors possibles:
truefalse(default)
- repository_mat: (DEPRECATED) Per habilitar o deshabilitar la MAT del repositori.
- selenium_enabled: (DEPRECATED) Per habilitar o deshabilitar Selenium.
- selenium_urlapp: (DEPRECATED) URL de Selenium, ha de tenir el valor:
https://<urlapp.gencat.cat>. Definir només si Selenium està habilitat. - selenium_umbral: (DEPRECATED) Llindar de Selenium. Ha de tenir un valor numèric entre cometes, ex:
"20". Definir només si Selenium està habilitat. Valor per defecte: 20. - jira_project_key: (DEPRECATED) Clau del projecte Jira. Definir només si Selenium està habilitat.
- jira_issue_key: (DEPRECATED) Clau de l’issue de Jira. Definir només si Selenium està habilitat.
- itsm_enabled: (DEPRECATED) Aquest paràmetre està obsolet, i per tant no importa el valor que prengui que no es farà ús d’aquest.
- itsm_id_change_coordinator: (obligatori) ID del coordinador de canvis de l’ITSM.
- enable_itsm_approve: (opcional) Feature flag per a habilitar el la aprovació de canvis en ITSM (default false).
- scheduled_start_date: (opcional) Data d’inici del canvi, format dd-MM-yyyy HH:mm.
- scheduled_end_date: (opcional) Data de fi del canvi, format dd-MM-yyyy HH:mm.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/infra-cd-apply-reusable.yaml@v4
secrets: inherit
with:
cloud: aws
terraform_version: 1.7.5
infra_version_plan: ${{ inputs.infra_version_plan }}
environment: ${{ inputs.environment }}
healthcheck_url: "https://<endpoint_url.gencat.cat>/"
healthcheck_regex: "1.0.0"
healthcheck_timeout: "300"
mat: true
itsm_id_change_coordinator: ${{ inputs.itsm_id_change_coordinator }}
enable_itsm_approve: true
scheduled_start_date: ${{ inputs.scheduled_start_date }}
scheduled_end_date: ${{ inputs.scheduled_end_date }}
CI on Commit
- terraform_version: (obligatori) Versió de Terraform.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/infra-ci-on-commit-reusable.yaml@v4
secrets: inherit
with:
terraform_version: 1.7.5
CI on PR
- cloud: (obligatori) Entorn al núvol. Valors possibles:
aws(default)azuregcp
- terraform_version: (obligatori) Versió de Terraform.
- checkov: (DEPRECATED) Definir només si Checkov està habilitat. Valors possibles:
truefalse(default)
- infracost: (DEPRECATED) Definir només si Infracost està habilitat. Valors possibles:
truefalse(default)
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/infra-ci-on-pr-reusable.yaml@v4
secrets: inherit
with:
cloud: aws
terraform_version: 1.7.5
Terraform Operations
Permet executar operacions de només lectura sobre l’estat de Terraform al marge del pipeline normal. Compatible amb repositoris single-stack i multi-stack; el comportament s’ajusta automàticament en funció de si s’informa infra_path.
- operation: (obligatori) Operació a executar. Valors possibles:
show— mostra el contingut d’un pla emmagatzemat al blob storagelist— llista els recursos de l’state actual de l’stack
- environment: (obligatori) Entorn sobre el qual operar. Valors possibles:
dev,int,pre,pro. - plan_name: (obligatori si
operation = show) Nom del blob del pla. Multi-stack:<versió>-<stack>-<sufix>(p.ex.1.2.4-1-global-core-RC). Single-stack:<versió>-<sufix>(p.ex.1.0.11-RC). - terraform_version: (obligatori) Versió de Terraform.
- cloud: (obligatori) Entorn al núvol. Per defecte
azure. Valors possibles:azureawsgcp
- infra_path: (opcional) Buit per a single-stack; path de l’stack per a multi-stack (p.ex.
infra/1-global-core).
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/infra-terraform-operations.yaml@v5
secrets: inherit
with:
cloud: azure
terraform_version: "1.7.5"
operation: ${{ inputs.operation }}
environment: ${{ inputs.environment }}
plan_name: ${{ inputs.plan_name }}
infra_path: ${{ inputs.infra_path }}
Terraform Operations Privileged
Permet executar operacions privilegiades que modifiquen l’estat de Terraform. Inclou una porta d’aprovació prèvia a través del GitHub Environment terraform-privileged, que ha de tenir configurats Required reviewers per garantir la protecció.
- operation: (obligatori) Operació a executar. Valors possibles:
import— adopta un recurs preexistent a l’statestate_rm— retira un recurs de l’state sense destruir-lo al proveïdordestroy— destrueix recursos de l’stack (tot l’stack sidestroy_targetsés buit)
- environment: (obligatori) Entorn destí. Valors possibles:
dev,int,pre,pro. - terraform_version: (obligatori) Versió de Terraform.
- cloud: (obligatori) Entorn al núvol. Valors possibles:
azureawsgcp
- infra_path: (opcional) Buit per a single-stack; path de l’stack per a multi-stack (p.ex.
infra/1-global-core). - address: (obligatori per a
importistate_rm) Adreça Terraform del recurs (p.ex.module.app.azurerm_storage_account.this). - resource_id: (obligatori per a
import) ID del recurs al proveïdor (p.ex. ARM ID a Azure, ARN a AWS). - destroy_targets: (opcional, només per a
destroy) Llista de targets separats per comes (p.ex.module.experimental,module.unused). Si s’omet, es destrueix tot l’stack.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/infra-terraform-operations-privileged.yaml@v5
secrets: inherit
with:
cloud: azure
terraform_version: "1.7.5"
operation: ${{ inputs.operation }}
environment: ${{ inputs.environment }}
infra_path: ${{ inputs.infra_path }}
address: ${{ inputs.address }}
resource_id: ${{ inputs.resource_id }}
destroy_targets: ${{ inputs.destroy_targets }}
Infra (Advanced)
CD Apply
Aplica un pla Terraform prèviament generat per CI. Cada stack d’un repositori multistack s’aplica de forma independent amb una invocació pròpia. Múltiples desplegaments sobre el mateix (entorn, stack) es serialitzen automàticament.
- terraform_version: (obligatori) Versió de Terraform.
- infra_path: (obligatori) Path de l’stack a aplicar (p.ex.
infra/1-global-core). - tfplan_name: (obligatori) Nom exacte del blob del pla en el storage, generat prèviament per CI (p.ex.
1.2.3-1-global-core-SNAPSHOT). - environment: (obligatori) Entorn destí. Valors possibles:
dev,int,pre,pro. - cloud: (obligatori) Entorn al núvol. Valors possibles:
azureawsgcp
- infra_version_plan: (opcional) Versió informativa per a artefactes.
- runner_group: (opcional) Grup de runners self-hosted. Si s’omet s’utilitza
ubuntu-24.04.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/infra-cd-apply-reusable-advanced.yaml@v5
secrets: inherit
with:
cloud: azure
terraform_version: "1.7.5"
infra_path: ${{ inputs.infra_path }}
environment: ${{ inputs.environment }}
tfplan_name: ${{ inputs.tfplan_name }}
CI on Commit
S’executa en fer push a develop, release o master. Valida automàticament els stacks afectats pel commit i, si tots passen, crea o actualitza el tag de versió del repositori. L’entorn s’infereix sempre de la branca, no s’accepta com a input.
- terraform_version: (obligatori) Versió de Terraform.
- infra_root: (opcional) Carpeta arrel dels stacks. Per defecte
infra. - cloud: (opcional) Entorn al núvol. Per defecte
azure. Valors possibles:azureawsgcp
- runner_group: (opcional) Grup de runners self-hosted. Si s’omet s’utilitza
ubuntu-24.04.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/infra-ci-on-commit-reusable-advanced.yaml@v5
secrets: inherit
with:
terraform_version: "1.7.5"
cloud: azure
infra_root: infra
CI on PR
Genera un pla Terraform per cada stack modificat en la PR.
- terraform_version: (obligatori) Versió de Terraform.
- cloud: (obligatori) Entorn al núvol. Valors possibles:
azureawsgcp
- infra_root: (opcional) Carpeta arrel per a la detecció automàtica d’stacks (ús recomanat, p.ex.
infra). Té prioritat inferior ainfra_pathsiinfra_path. - infra_paths: (opcional) Array JSON explícit d’stacks a processar (p.ex.
'["infra/1-global-core","infra/2-global-transversal"]'). Té la màxima prioritat. - infra_path: (opcional) Stack únic a processar (p.ex.
infra/1-global-core). Prioritat intermèdia. - environment: (opcional) Entorn explícit. Si s’omet, s’infereix de la branca base del PR (
develop→dev,release→pre,master→pro). - runner_group: (opcional) Grup de runners self-hosted. Si s’omet s’utilitza
ubuntu-24.04.
Si no s’informa cap de
infra_root,infra_pathsniinfra_path, el workflow falla amb error explícit.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/infra-ci-on-pr-reusable-advanced.yaml@v5
secrets: inherit
with:
terraform_version: "1.7.5"
cloud: azure
infra_root: infra
CI/CD
El repositori d’infraestructura exposa un únic caller .github/workflows/infra-ci-cd.yaml que enruta els tres events als workflows reutilitzables. Un job prepare-defaults centralitza els paràmetres comuns.
Tenir en compte que si es canvia infra_root a una altra carpeta (p.ex. src/infra), cal actualitzar també els paths: dels triggers push i pull_request perquè coincideixin.
Exemple de CI/CD complet:
name: Infra CI/CD
on:
push:
branches: [develop, release, master]
paths:
- 'infra/**'
- 'locals.tf'
- '.github/workflows/**'
pull_request:
branches: [develop, release, master]
paths:
- 'infra/**'
- 'locals.tf'
- '.github/workflows/**'
workflow_dispatch:
inputs:
infra_path:
description: 'Stack a desplegar (p.ex. infra/1-global-core)'
required: true
type: string
environment:
description: 'Entorn destí'
required: true
type: choice
options: [int, dev, pre, pro]
tfplan_name:
description: 'Nom del blob del pla generat per CI'
required: true
type: string
concurrency:
group: ${{ github.event_name == 'workflow_dispatch'
&& format('cd-dispatch-{0}', github.run_id)
|| format('ci-{0}', github.event.pull_request.number || github.ref) }}
cancel-in-progress: true
jobs:
prepare-defaults:
runs-on: ubuntu-24.04
outputs:
terraform_version: ${{ steps.set.outputs.terraform_version }}
cloud: ${{ steps.set.outputs.cloud }}
infra_root: ${{ steps.set.outputs.infra_root }}
steps:
- id: set
run: |
echo "terraform_version=1.7.5" >> $GITHUB_OUTPUT
echo "cloud=azure" >> $GITHUB_OUTPUT
echo "infra_root=infra" >> $GITHUB_OUTPUT
ci-on-commit:
needs: prepare-defaults
if: github.event_name == 'push'
uses: ctti-arq/reusable-workflows/.github/workflows/infra-ci-on-commit-reusable-advanced.yaml@v5
with:
terraform_version: ${{ needs.prepare-defaults.outputs.terraform_version }}
cloud: ${{ needs.prepare-defaults.outputs.cloud }}
infra_root: ${{ needs.prepare-defaults.outputs.infra_root }}
secrets: inherit
ci-on-pr:
needs: prepare-defaults
if: github.event_name == 'pull_request'
uses: ctti-arq/reusable-workflows/.github/workflows/infra-ci-on-pr-reusable-advanced.yaml@v5
with:
terraform_version: ${{ needs.prepare-defaults.outputs.terraform_version }}
cloud: ${{ needs.prepare-defaults.outputs.cloud }}
infra_root: ${{ needs.prepare-defaults.outputs.infra_root }}
secrets: inherit
cd-apply:
needs: prepare-defaults
if: github.event_name == 'workflow_dispatch'
uses: ctti-arq/reusable-workflows/.github/workflows/infra-cd-apply-reusable-advanced.yaml@v5
with:
terraform_version: ${{ needs.prepare-defaults.outputs.terraform_version }}
cloud: ${{ needs.prepare-defaults.outputs.cloud }}
infra_path: ${{ inputs.infra_path }}
environment: ${{ inputs.environment }}
tfplan_name: ${{ inputs.tfplan_name }}
secrets: inherit
Els workflows d’operació són els mateixos que per Infra “No Advanced”: Terraform Operations i Terraform Operations Privileged.
Container
CD
- technology: (opcional) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatpythonjava-gradlecustom
- get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
- get_groupid_command: (opcional) Comanda per obtenir el groupId de l’artefacte del fitxer descriptor.
- project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte.
- cloud: (obligatori) Entorn al núvol. Valors possibles:
aws(default)azuregcp
- engine: (obligatori) Plataforma de desplegament. Valors possibles:
ecs(default)acaappserviceregistry
- framework: (opcional) Framework de l’aplicació. Definir només si el projecte es basa en dotnet amb framework aspire, i la modalitat és mono-repo. Valors possibles:
dotnet-aspire
- artifact_version: (obligatori) Versió de l’artefacte.
- environment: (obligatori) Entorn.
- service_name: (opcional) Nom del servei. Definir només si el projecte es basa en AWS i el runtime no és una scheduled task.
- container_app: (opcional) Nom de l’aplicació de contenidors. Definir només si el projecte es basa en Azure ACA engine.
- app_name: (opcional) Nom del servei d’Azure App Service. Definir només si el projecte es basa en Azure App Service engine.
- registry_name:(obligatori) Nom del registre.
- cluster_name: (opcional) Nom del clúster. Definir si el projecte es basa en un motor AWS o ECS i el runtime no és una scheduled task.
- task_definition_name: (opcional) Nom de la definició de la tasca. Definir si el projecte és AWS i el nom de la task definition és distint al service name. En el cas de scheduled task sàrria obligatori informar-lo.
- resource_group: (opcional) Nom de grup de recurs. Definir si el projecte es basa en Azure Cloud o ACA engine.
- healthcheck_url: (opcional) URL del comprovador d’estat. Ha de ser
https://<endpoint_url.gencat.cat>/. Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - healthcheck_regex: (opcional) Regressió de l’estat. Ha de tenir format semàntic entre cometes, ex:
"1.0.0". Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - healthcheck_timeout: (opcional) Temps màxim per a la comprovació d’estat. Ha de tenir un valor numèric entre cometes, ex:
"300". Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - mat: (opcional) Per habilitar o deshabilitar la MAT del repositori. Valors possibles:
truefalse(default)
- repository_mat: (DEPRECATED) Per habilitar o deshabilitar la MAT del repositori.
- selenium_enabled: (DEPRECATED) Per habilitar o deshabilitar Selenium.
- selenium_urlapp: (DEPRECATED) URL de Selenium, ha de tenir el valor:
https://<urlapp.gencat.cat>. Definir només si Selenium està habilitat. - selenium_umbral: (DEPRECATED) Llindar de Selenium. Ha de tenir un valor numèric entre cometes, ex:
"20". Definir només si Selenium està habilitat. Valor per defecte: 20. - jira_project_key: (DEPRECATED) Clau del projecte Jira. Definir només si Selenium està habilitat.
- jira_issue_key: (DEPRECATED) Clau de l’issue de Jira. Definir només si Selenium està habilitat.
- itsm_enabled: (DEPRECATED) Aquest paràmetre està obsolet, i per tant no importa el valor que prengui que no es farà ús d’aquest.
- itsm_id_change_coordinator: (obligatori) ID del coordinador de canvis de l’ITSM.
- enable_itsm_approve: (opcional) Feature flag per a habilitar el la aprovació de canvis en ITSM (default false).
- scheduled_start_date: (opcional) Data d’inici del canvi, format dd-MM-yyyy HH:mm.
- scheduled_end_date: (opcional) Data de fi del canvi, format dd-MM-yyyy HH:mm.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/container-cd-reusable.yaml@v4
secrets: inherit
with:
technology: java
cloud: aws
engine: ecs
artifact_version: ${{ inputs.artifact_version }}
environment: ${{ inputs.environment }}
service_name: ${{ inputs.service_name }}
registry_name: ${{ inputs.registry_name }}
cluster_name: ${{ inputs.cluster_name }}
task_definition_name: ${{ inputs.task_definition_name }}
healthcheck_url: "https://<endpoint_url.gencat.cat>/"
healthcheck_regex: "1.0.0"
healthcheck_timeout: "300"
mat: true
itsm_id_change_coordinator: ${{ inputs.itsm_id_change_coordinator }}
enable_itsm_approve: true
scheduled_start_date: ${{ inputs.scheduled_start_date }}
scheduled_end_date: ${{ inputs.scheduled_end_date }}
CI on commit to develop
- technology: (opcional) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatpythonjava-gradlecustom
- docker_build_context: (opcional) Context de construcció de Docker. Per defecte és
"."(l’arrel). Valor per defecte:"." - get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
- get_groupid_command: (opcional) Comanda per obtenir el groupId de l’artefacte del fitxer descriptor.
- project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte. En el cas de projectes amb tecnologia .NET i que en el repositori de projecte existeixin mes de dos .csproj, aquesta propietat project_name és obligatòria.
- java_version: (opcional) Versió de Java. Definir només si el projecte es basa en tecnologia Java.
- java_distribution: (opcional) Distribució de Java. Definir només si el projecte es basa en tecnologia Java.
- maven_version: (opcional) Versió de Maven. Definir només si el projecte es basa en tecnologia Java.
- node_version: (opcional) Versió de Node. Definir només si el projecte es basa en tecnologia Node.
- dotnet_version: (opcional) Versió de .Net. Definir només si el projecte es basa en tecnologia .Net.
- framework: (opcional) Framework de l’aplicació. Definir només si el projecte es basa en dotnet amb framework aspire, i la modalitat és mono-repo. Valors possibles:
dotnet-aspire
- install_build_command: (opcional) Comanda personalitzada per construir i empaquetar el projecte. El valor per defecte per a nodejs és
"npm ci && npm run build", per a java maven"mvn package -Dmaven.test.skip=true", per a java gradle"gradle clean build", per a dotnet"dotnet restore $PROJECT_PATH && dotnet build $PROJECT_PATH --configuration Release && dotnet publish $PROJECT_PATH --configuration Release --output ./out", i per a python"pip install -r requirements.txt && python setup.py sdist bdist_wheel". Si no es proporciona cap comanda personalitzada, es farà servir la comanda per defecte segons la tecnologia especificada. - python_version: (opcional) Versió de python. Definir només si el projecte es basa en tecnologia python.
- gradle_version: (opcional) Versió de gradle. Definir només si el projecte es basa en tecnologia python.
- sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
- sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. - sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/container-ci-on-commit-develop-reusable.yaml@v4
secrets: inherit
with:
technology: java
java_version: 21
java_distribution: temurin
maven_version: 3.9.5
# install_build_command: "mvn package -Dmaven.test.skip=true"
CI on commit hotfix
- technology: (opcional) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatpythonjava-gradlecustom
- docker_build_context: (opcional) Context de construcció de Docker. Per defecte és
"."(l’arrel). Valor per defecte:"." - get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
- get_groupid_command: (opcional) Comanda per obtenir el groupId de l’artefacte del fitxer descriptor.
- project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte. En el cas de projectes amb tecnologia .NET i que en el repositori de projecte existeixin mes de dos .csproj, aquesta propietat project_name és obligatòria.
- java_version: (opcional) Versió de Java. Definir només si el projecte es basa en tecnologia Java.
- java_distribution: (opcional) Distribució de Java. Definir només si el projecte es basa en tecnologia Java.
- maven_version: (opcional) Versió de Maven. Definir només si el projecte es basa en tecnologia Java.
- node_version: (opcional) Versió de Node. Definir només si el projecte es basa en tecnologia Node.
- dotnet_version: (opcional) Versió de .Net. Definir només si el projecte es basa en tecnologia .Net.
- framework: (opcional) Framework de l’aplicació. Definir només si el projecte es basa en dotnet amb framework aspire, i la modalitat és mono-repo. Valors possibles:
dotnet-aspire
- install_build_command: (opcional) Comanda personalitzada per construir i empaquetar el projecte. El valor per defecte per a nodejs és
"npm ci && npm run build", per a java maven"mvn package -Dmaven.test.skip=true", per a java gradle"gradle clean build", per a dotnet"dotnet restore $PROJECT_PATH && dotnet build $PROJECT_PATH --configuration Release && dotnet publish $PROJECT_PATH --configuration Release --output ./out", i per a python"pip install -r requirements.txt && python setup.py sdist bdist_wheel". Si no es proporciona cap comanda personalitzada, es farà servir la comanda per defecte segons la tecnologia especificada. - python_version: (opcional) Versió de python. Definir només si el projecte es basa en tecnologia python.
- gradle_version: (opcional) Versió de gradle. Definir només si el projecte es basa en tecnologia python.
- sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
- sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. - sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/container-ci-on-commit-hotfix-reusable.yaml@v4
secrets: inherit
with:
technology: java
java_version: 21
java_distribution: temurin
maven_version: 3.9.5
# install_build_command: "mvn package -Dmaven.test.skip=true"
CI on commit
- technology: (opcional) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatpythonjava-gradlecustom
- framework: (opcional) Framework de l’aplicació. Definir només si el projecte es basa en dotnet amb framework aspire, i la modalitat és mono-repo. Valors possibles:
dotnet-aspire
- get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
- get_groupid_command: (opcional) Comanda per obtenir el groupId de l’artefacte del fitxer descriptor.
- project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte. En el cas de projectes amb tecnologia .NET i que en el repositori de projectes hi hagi més de dos .csproj o projectes que no se li especifiqui la tecnologia, aquesta propietat project_name és obligatòria.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/container-ci-on-commit-reusable.yaml@v4
secrets: inherit
with:
technology: java
CI on PR
-
technology: (opcional) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatpythonjava-gradlecustom
-
get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
-
get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
-
get_groupid_command: (opcional) Comanda per obtenir el groupId de l’artefacte del fitxer descriptor.
-
java_version: (opcional) Versió de Java. Definir només si el projecte es basa en tecnologia Java.
-
java_distribution: (opcional) Distribució de Java. Definir només si el projecte es basa en tecnologia Java.
-
maven_version: (opcional) Versió de Maven. Definir només si el projecte es basa en tecnologia Java.
-
node_version: (opcional) Versió de Node. Definir només si el projecte es basa en tecnologia Node.
-
dotnet_version: (opcional) Versió de .Net. Definir només si el projecte es basa en tecnologia .Net.
-
framework: (opcional) Framework de l’aplicació. Definir només si el projecte es basa en dotnet amb framework aspire, i la modalitat és mono-repo. Valors possibles:
dotnet-aspire
-
python_version: (opcional) Versió de pythont. Definir només si el projecte es basa en tecnologia python.
-
gradle_version: (opcional) Versió de gradle. Definir només si el projecte es basa en tecnologia python.
-
sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
-
unit_test: (opcional) Realització de proves unitàries. Valor per defecte: false.
-
sonarqube: (opcional) Utilització de SonarQube. Valor per defecte: true.
-
sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. -
sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
-
dependabot: (opcional) Activació de Dependabot. Valor per defecte: true.
-
install_build_command: (opcional) Comanda personalitzada per construir i empaquetar el projecte. El valor per defecte per a nodejs és
"npm ci && npm run build", per a java maven"mvn package -Dmaven.test.skip=true", per a java gradle"gradle clean build", per a dotnet"dotnet restore $PROJECT_PATH && dotnet build $PROJECT_PATH --configuration Release && dotnet publish $PROJECT_PATH --configuration Release --output ./out", i per a python"pip install -r requirements.txt && python setup.py sdist bdist_wheel". Si no es proporciona cap comanda personalitzada, es farà servir la comanda per defecte segons la tecnologia especificada. -
custom_test_command:(opcional) Comanda personalitzada per realitzar les proves al projecte. Els valors per defecte són els següents segons la tecnologia:
- java/java-maven:
"mvn surefire:test" - java-gradle:
"gradle test" - nodejs:
"npm test" - dotnet:
"dotnet test $TEST_PROJECT_PATH --configuration Release" - python:
"pytest tests/"
- java/java-maven:
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/container-ci-on-pr-reusable.yaml@v4
secrets: inherit
with:
technology: java
java_version: 21
java_distribution: temurin
maven_version: 3.9.5
Function
CD
- technology: (opcional) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatpythoncustom
- get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
- project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte.
- cloud: Entorn al núvol. Valors possibles:
aws(default)azuregcp
- engine: (obligatori) Plataforma de desplegament. Valors possibles:
lambdaafunction
- artifact_version: (obligatori) Versió de l’artefacte.
- environment: (obligatori) Entorn.
- function_names: (obligatori) Noms de les funcions.
- folder_names: (opcional) Noms dels fitxers de les funcions. Especificar si el codi de la funció o funcions està en un directori i no a l’arrel. Especificar aquest paràmetre abans que el “functions_folder_path”.
- storage_name: (opcional) Nom d’emmagatzematge. Descomentar només si s’espera que el fitxer .zip tingui més de 50 MB i és necessari pujar-lo a un bucket.
- functions_folder_path: (opcional) Ruta del fitxer de les funcions. Passar el paràmetre nomès si s’ha especificat el “folders_names”. Descomentar només si les funcions es troben en una carpeta diferent a l’arrel del repositori que contenta subdirectoris per cadascuna de les funcions.
- healthcheck_url: (opcional) URL del comprovador d’estat. Ha de ser
https://<endpoint_url.gencat.cat>/. Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - healthcheck_regex: (opcional) Regresió de l’estat. Ha de tenir format semàntic entre cometes, ex: “1.0.0”. Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body.
- healthcheck_timeout: (opcional) Temps màxim per a la comprovació d’estat. Ha de tenir un valor numèric entre cometes, ex: “300”. Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body.
- mat: (opcional) Per habilitar o deshabilitar la MAT del repositori. Valors possibles:
truefalse(default)
- repository_mat: (DEPRECATED) Per habilitar o deshabilitar la MAT del repositori.
- selenium_enabled: (DEPRECATED) Per habilitar o deshabilitar Selenium.
- selenium_urlapp: (DEPRECATED) URL de Selenium, ha de tenir el valor:
https://<urlapp.gencat.cat>. Definir només si Selenium està habilitat. - selenium_umbral: (DEPRECATED) Llindar de Selenium. Ha de tenir un valor numèric entre cometes, ex:
"20". Definir només si Selenium està habilitat. Valor per defecte: 20. - jira_project_key: (DEPRECATED) Clau del projecte Jira. Definir només si Selenium està habilitat.
- jira_issue_key: (DEPRECATED) Clau de l’issue de Jira. Definir només si Selenium està habilitat.
- itsm_enabled: (DEPRECATED) Aquest paràmetre està obsolet, i per tant no importa el valor que prengui que no es farà ús d’aquest.
- itsm_id_change_coordinator: (obligatori) ID del coordinador de canvis de l’ITSM.
- enable_itsm_approve: (opcional) Feature flag per a habilitar el la aprovació de canvis en ITSM (default false).
- scheduled_start_date: (opcional) Data d’inici del canvi, format dd-MM-yyyy HH:mm.
- scheduled_end_date: (opcional) Data de fi del canvi, format dd-MM-yyyy HH:mm.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/function-cd-reusable.yaml@v4
secrets: inherit
with:
technology: nodejs
cloud: aws
engine: lambda
artifact_version: ${{ inputs.artifact_version }}
environment: ${{ inputs.environment }}
function_names: ${{ inputs.function_names }}
folder_names: ${{ inputs.folder_names}}
storage_name: ${{ inputs.storage_name }}
healthcheck_url: "https://<endpoint_url.gencat.cat>/"
healthcheck_regex: "1.0.0"
healthcheck_timeout: "300"
mat: true
itsm_id_change_coordinator: ${{ inputs.itsm_id_change_coordinator }}
enable_itsm_approve: true
scheduled_start_date: ${{ inputs.scheduled_start_date }}
scheduled_end_date: ${{ inputs.scheduled_end_date }}
CI on Commit
- technology: (opcional) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatpythoncustom
- get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
- project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte. En el cas de projectes amb tecnologia .NET i que en el repositori de projecte existeixin mes de dos .csproj, aquesta propietat project_name és obligatòria.
- java_version: (opcional) Versió de Java. Definir només si el projecte es basa en tecnologia Java.
- java_distribution: (opcional) Distribució de Java. Definir només si el projecte es basa en tecnologia Java.
- maven_version: (opcional) Versió de Maven. Definir només si el projecte es basa en tecnologia Java.
- files_to_deploy_path: (opcional) Només definir el parametro per a la cloud de azure i tecnologia java o java-maven. Ruta dels fitxers a desplegar en la azure function. Per defecte és
"./target". - node_version: (opcional) Versió de Node. Definir només si el projecte es basa en tecnologia Node.
- dotnet_version: (opcional) Versió de .Net. Definir només si el projecte es basa en tecnologia .Net.
- python_version: (opcional) Versió de pythont. Definir només si el projecte es basa en tecnologia python.
- install_build_command: (opcional) Comanda personalitzada per construir i empaquetar el projecte. El valor per defecte per a nodejs és
"npm ci && npm run build", per a java maven"mvn package -Dmaven.test.skip=true", per a java gradle"gradle clean build", per a dotnet"dotnet restore $PROJECT_PATH && dotnet build $PROJECT_PATH --configuration Release && dotnet publish $PROJECT_PATH --configuration Release --output ./out", i per a python"pip install -r requirements.txt && python setup.py sdist bdist_wheel". Si no es proporciona cap comanda personalitzada, es farà servir la comanda per defecte segons la tecnologia especificada. - sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
- sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. - sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/function-ci-on-commit-reusable.yaml@v4
secrets: inherit
with:
technology: java-maven
java_version: 21
java_distribution: temurin
maven_version: 3.9.5
# install_build_command: "mvn package -Dmaven.test.skip=true"
CI on PR
-
technology: (opcional) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatpythoncustom
-
get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
-
get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
-
java_version: (opcional) Versió de Java. Definir només si el projecte es basa en tecnologia Java.
-
java_distribution: (opcional) Distribució de Java. Definir només si el projecte es basa en tecnologia Java.
-
maven_version: (opcional) Versió de Maven. Definir només si el projecte es basa en tecnologia Java.
-
sonar_exclusions: (opcional) Exclusió de Sonar, pot estar buit.
-
node_version: (opcional) Versió de Node. Definir només si el projecte es basa en tecnologia Node.
-
dotnet_version: (opcional) Versió de .Net. Definir només si el projecte es basa en tecnologia .Net.
-
python_version: (opcional) Versió de pythont. Definir només si el projecte es basa en tecnologia python.
-
sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
-
unit_test: (opcional) Indica si s’han d’executar proves unitàries com a part del workflow d’integració contínua. Valor per defecte: false.
-
sonarqube: (opcional) Indica si s’ha d’integrar SonarQube en el procés d’integració contínua. Valor per defecte: true.
-
sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. -
sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
-
dependabot: (opcional) Permet activar o desactivar la funcionalitat de Dependabot en el workflow. Valor per defecte: true.
-
install_build_command: (opcional) Comanda personalitzada per construir i empaquetar el projecte. El valor per defecte per a nodejs és
"npm ci", per a java"mvn clean compile", per a dotnet"dotnet restore $PROJECT_PATH && dotnet build $PROJECT_PATH --configuration Release", i per a python" pip install -r requirements.txt". Si no es proporciona cap comanda personalitzada, es farà servir la comanda per defecte segons la tecnologia especificada. custom_test_command:(opcional) Comanda personalitzada per realitzar les proves al projecte. Els valors per defecte són els següents segons la tecnologia:- java/java-maven:
"mvn surefire:test" - nodejs:
"npm test" - dotnet:
"dotnet test $TEST_PROJECT_PATH --configuration Release" - python:
"pytest tests/"
- java/java-maven:
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/function-ci-on-pr-reusable.yaml@v4
secrets: inherit
with:
technology: java
java_version: 21
java_distribution: temurin
maven_version: 3.9.5
Static
CD
- technology: (opcional) Tecnologia del projecte. Valors possibles:
rawnodejscustom
- get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
- project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte.
- cloud: (obligatori) Entorn al núvol. Valors possibles:
aws(default)azuregcp
- engine: (obligatori) Plataforma de desplegament. Valors possibles:
s3ablobstoragecloudstorageswebapp
- swebapp_name: (opcional) Nom de la Static Web App a desplegar a Azure
- artifact_version: (obligatori) Versió de l’artefacte.
- environment: (obligatori) Entorn.
- storage_name: (opcional) Nom d’emmagatzematge.
- destination_prefix: (opcional) Prefix de destinació. Definir si el núvol és AWS i hi ha una subcarpeta dins del bucket de S3, especifiqueu-ho aquí.
- distribution_id: (opcional) ID de distribució (CDN). Definir si el núvol és AWS, hi ha una distribució de CloudFront associada al bucket de S3, i es vol realitzar invalidació de caché. Especifiqueu-ho aquí.
- cdn_profile_name: (opcional) Nom del perfil de CDN d’Azure. Definir si el núvol és Azure, i es vol realitzar invalidació de caché. Especifiqueu-ho aquí.
- cdn_endpoint_name: (opcional) Nom del endpoint CDN d’Azure. Definir si el núvol és Azure, i es vol realitzar invalidació de caché. Especifiqueu-ho aquí.
- invalidation_paths: (opcional) Una llista d’un o més paths separats per espais per invalidar a la memòria caché de la distribució (CDN).
- healthcheck_url: (opcional) URL del comprovador d’estat. Ha de ser
https://<endpoint_url.gencat.cat>/. Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - healthcheck_regex: (opcional) Regressió de l’estat. Ha de tenir format semàntic entre cometes, ex:
"1.0.0". Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - healthcheck_timeout: (opcional) Temps màxim per a la comprovació d’estat. Ha de tenir un valor numèric entre cometes, ex:
"300". Definir si existeix un endpoint després del deploy i una expressió d’avaluació del body. - mat: (opcional) Per habilitar o deshabilitar la MAT del repositori. Valors possibles:
truefalse(default)
- repository_mat: (DEPRECATED) Per habilitar o deshabilitar la MAT del repositori.
- selenium_enabled: (DEPRECATED) Per habilitar o deshabilitar Selenium.
- selenium_urlapp: (DEPRECATED) URL de Selenium, ha de tenir el valor:
https://<urlapp.gencat.cat>. Definir només si Selenium està habilitat. - selenium_umbral: (DEPRECATED) Llindar de Selenium. Ha de tenir un valor numèric entre cometes, ex:
"20". Definir només si Selenium està habilitat. Valor per defecte: 20. - jira_project_key: (DEPRECATED) Clau del projecte Jira. Definir només si Selenium està habilitat.
- jira_issue_key: (DEPRECATED) Clau de l’issue de Jira. Definir només si Selenium està habilitat.
- itsm_enabled: (DEPRECATED) Aquest paràmetre està obsolet, i per tant no importa el valor que prengui que no es farà ús d’aquest.
- itsm_id_change_coordinator: (obligatori) ID del coordinador de canvis de l’ITSM.
- enable_itsm_approve: (opcional) Feature flag per a habilitar el la aprovació de canvis en ITSM (default false).
- scheduled_start_date: (opcional) Data d’inici del canvi, format dd-MM-yyyy HH:mm.
- scheduled_end_date: (opcional) Data de fi del canvi, format dd-MM-yyyy HH:mm.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/static-cd-reusable.yaml@v4
secrets: inherit
with:
technology: nodejs
cloud: aws
engine: s3
artifact_version: ${{ inputs.artifact_version }}
environment: ${{ inputs.environment }}
storage_name: ${{ inputs.storage_name }}
destination_prefix: "<bucket_subfolder_name>"
distribution_id: ${{ inputs.distribution_id }}
invalidation_paths: "/*"
healthcheck_url: "https://<endpoint_url.gencat.cat>/"
healthcheck_regex: "1.0.0"
healthcheck_timeout: "300"
mat: true
itsm_id_change_coordinator: ${{ inputs.itsm_id_change_coordinator }}
enable_itsm_approve: true
scheduled_start_date: ${{ inputs.scheduled_start_date }}
scheduled_end_date: ${{ inputs.scheduled_end_date }}
CI on commit
- technology: (opcional) Tecnologia del projecte. Valors possibles:
rawnodejscustom
- get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
- project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte.
- node_version: (opcional) Versió de Node. Definir només si el projecte es basa en tecnologia Node.
- install_build_command: (opcional) (opcional) Comanda personalitzada per construir i empaquetar el projecte. El valor per defecte per a nodejs és
"npm ci && npm run build". - sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
- source_path: (opcional) Paràmetre de la ruta de sortida de l’arxiu angular.json. Valor per defecte: src.
- sonarqube: (opcional) Indica si s’ha d’executar l’anàlisi de codi mitjançant SonarQube. Valor per defecte: false.
- sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. - sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
- dependabot: (opcional) Indica si s’ha de permetre l’ús de Dependabot. Valor per defecte: false.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/static-ci-on-commit-reusable.yaml@v4
secrets: inherit
with:
technology: nodejs
node_version: 20.x
# install_build_command: "npm ci && npm run build"
sonar_exclusions: "node_modules/**,test/**"
source_path: "dist"
CI on PR
-
technology: (opcional) Tecnologia del projecte. Valors possibles:
rawnodejscustom
-
get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_version_command”.
-
get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. El paràmetre serà sempre requerit si la tecnologia és “custom”. Per a altres tecnologies, si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
-
node_version: (opcional) Versió de Node. Definir només si el projecte es basa en tecnologia Node.
-
sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
-
unit_test: (opcional) Indica si s’han d’executar proves unitàries com a part del flux de treball d’integració contínua. Valor per defecte: false.
-
sonarqube: (opcional) Habilita la integració amb SonarQube. Valor per defecte: true.
-
sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. -
sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
-
dependabot: (opcional) Activa o desactiva l’ús de Dependabot Valor per defecte: true.
-
install_build_command: (opcional) Comanda personalitzada per construir i empaquetar el projecte. El valor per defecte per a nodejs és
"npm ci". Si no es proporciona cap comanda personalitzada, es farà servir la comanda per defecte segons la tecnologia especificada. -
custom_test_command:(opcional) Comanda personalitzada per realitzar les proves al projecte. Els valors per defecte són els següents segons la tecnologia:
- nodejs:
"npm test"
- nodejs:
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/static-ci-on-pr-reusable.yaml@v4
secrets: inherit
with:
technology: nodejs
node_version: 20.x
sonar_exclusions: "node_modules/**,test/**"
Library
CI on Commit
- technology: (obligatori) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatjava-gradle
- java_version: (opcional) Versió de Java. Definir només si el projecte es basa en tecnologia Java.
- java_distribution: (opcional) Distribució de Java. Definir només si el projecte es basa en tecnologia Java.
- maven_version: (opcional) Versió de Maven. Definir només si el projecte es basa en tecnologia Java.
- sonar_exclusions: (opcional) Exclusió de Sonar, pot estar buit.
- node_version: (opcional) Versió de Node. Definir només si el projecte es basa en tecnologia Node.
- dotnet_version: (opcional) Versió de .Net. Definir només si el projecte es basa en tecnologia .Net.
- gradle_version: (opcional) Versió de gradle. Definir només si el projecte es basa en tecnologia python.
- library_type: (opcional) Tipus de biblioteca. Definir només si el paràmetre technology és java-gradle. Valors possibles:
java-gradle(default)android
- install_build_command: (opcional) Comanda personalitzada per construir i empaquetar el projecte. El valor per defecte per a nodejs és
"npm ci", per a java maven"mvn clean compile", per a java gradle"gradle clean build", per a dotnet"dotnet build $PROJECT_PATH -c Release". Si no es proporciona cap comanda personalitzada, es farà servir la comanda per defecte segons la tecnologia especificada. - custom_publish_command: (opcional) Comando personalitzat per a realitzar la publicacion. El valor per defecte per a nodejs és
npm publish, per a java ésmvn -B deploy -Dmaven.test.skip=*true -DaltDeploymentRepository=*github::default::https://maven.pkg.github.com/${{ github.repository }} -DdeployAtEnd=*true, per a dotnet ésdotnet nuget push ./build/*.nupkg --source "github" --api-*key ${{ secrets.GITHUB_TOKEN }}i per a gradle ésgradle publish. Si no es proporciona aquest comando personalitzat, la publicacion es hara amb els comandos per defecte. - sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
- sonarqube: (opcional) Indica si s’ha d’executar l’anàlisi de codi mitjançant SonarQube. Valor per defecte: false.
- sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. - sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
- dependabot: (opcional) Indica si s’ha de permetre l’ús de Dependabot. Valor per defecte: false.
- project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte. En el cas de projectes amb tecnologia .NET i que en el repositori de projecte existeixin mes de dos .csproj, aquesta propietat project_name és obligatòria.
- promotion_descriptor_path: (opcional) Ruta al fitxer descriptor del projecte (pom.xml, package.json, build.gradle, etc). Indica-ho si es fa servir una altra carpeta per a la compilació i publicació de l’artefacte. El paràmetre pot rebre un llistat separat per comes i sense espais de les diferents rutes on es troben els fitxers descriptors per a diferents components
- get_groupid_command: (opcional) Comanda per obtenir el groupId de l’artefacte del fitxer descriptor.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/library-ci-on-commit-reusable.yaml@v4
secrets: inherit
with:
technology: java
java_version: 21
java_distribution: temurin
maven_version: 3.9.5
# install_build_command: "mvn package -Dmaven.test.skip=true"
CI on PR
-
technology: (opcional) Tecnologia del projecte. Valors possibles:
javajava-mavennodejsdotnetIMPORTANT .Net Framework no està suportatjava-gradle
-
java_version: (opcional) Versió de Java. Definir només si el projecte es basa en tecnologia Java.
-
java_distribution: (opcional) Distribució de Java. Definir només si el projecte es basa en tecnologia Java.
-
maven_version: (opcional) Versió de Maven. Definir només si el projecte es basa en tecnologia Java.
-
sonar_exclusions: (opcional) Exclusió de Sonar, pot estar buit.
-
node_version: (opcional) Versió de Node. Definir només si el projecte es basa en tecnologia Node.
-
dotnet_version: (opcional) Versió de .Net. Definir només si el projecte es basa en tecnologia .Net.
-
gradle_version: (opcional) Versió de gradle. Definir només si el projecte es basa en tecnologia python.
-
library_type: (opcional) Tipus de biblioteca. Definir només si el paràmetre technology és java-gradle. Valors possibles:
java-gradle(default)android
-
sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
-
sonarqube: (opcional) Indica si s’ha d’executar l’anàlisi de codi mitjançant SonarQube. Valor per defecte: true.
-
sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. -
sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
-
dependabot: (opcional) Indica si s’ha de permetre l’ús de Dependabot. Valor per defecte: true.
-
unit_test: (opcional) Realització de proves unitàries. Valor per defecte: false.
-
project_name: (opcional) Nom del projecte, especificar només si no hi ha compilació en el projecte. En el cas de projectes amb tecnologia .NET i que en el repositori de projecte existeixin mes de dos .csproj, aquesta propietat project_name és obligatòria.
-
get_groupid_command: (opcional) Comanda per obtenir el groupId de l’artefacte del fitxer descriptor.
-
install_build_command: (opcional) Comanda personalitzada per construir i empaquetar el projecte. El valor per defecte per a nodejs és
"npm ci", per a java maven"mvn clean compile", per a java gradle"gradle clean build", per a dotnet"dotnet build $PROJECT_PATH -c Release". Si no es proporciona cap comanda personalitzada, es farà servir la comanda per defecte segons la tecnologia especificada. -
custom_test_command:(opcional) Comanda personalitzada per realitzar les proves al projecte. Els valors per defecte són els següents segons la tecnologia:
- java/java-maven:
"mvn surefire:test" - java-gradle:
"gradle test" - nodejs:
"npm test" - dotnet:
"dotnet test $TEST_PROJECT_PATH --configuration Release"
- java/java-maven:
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/library-ci-on-pr-reusable.yaml@v4
secrets: inherit
with:
technology: java
java_version: 21
java_distribution: temurin
maven_version: 3.9.5
Desplegaments estesos
Executor CD
- executor_image_version: (obligatori) Versió d’imatge del executor.
- technology: Tecnologia. Valors possibles:
liquibasepsqlmongodbsqlcmdkubectlhelm
- environment: (obligatori) Entorn.
- cloud: (obligatori) Entorn al núvol. Valors possibles:
awsazuregcp
- engine: (obligatori) Plataforma de desplegament. Valors possibles:
kubernetesdatabase
- registry_name: (obligatori) Nom del registre.
- function_name: (obligatori) Nom de la funció. Definir únicament si el cloud és
AWS.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/extended-executor-cd-reusable.yaml@v4
secrets: inherit
with:
cloud: aws
engine: database
technology: psql
executor_image_version: ${{ inputs.executor_image_version }}
environment: ${{ inputs.environment }}
registry_name: ${{ inputs.registry_name }}
function_name: ${{ inputs.function_name }}
Descriptors CD
- executor_image_version: (opcional) Versió d’imatge del executor. Definir únicament si el cloud és
azureogcp. - artifact_version: (obligatori) Versió de l’artefacte.
- technology: (opcional) Technology. Valors possibles:
liquibasepsqlmongodbsqlcmdkubectlhelm
- environment: (obligatori) Entorn.
- cloud: (obligatori) Entorn al núvol. Valors possibles:
awsazuregcp
- engine: (obligatori) Plataforma de desplegament. Valors possibles:
kubernetesdatabase
- storage_name: (obligatori) Nom de l’emmagatzematge.
- blob_name: (opcional) Blob nom. Definir únicament si el cloud és
azure. - destination_prefix: (opcional) Prefix de destí. Definir si el núvol és AWS i hi ha una subcarpeta dins del bucket de S3.
- exclude: (opcional) Indica els fitxers o directoris que s’han d’excloure durant el procés de càrrega de contingut. Valor per defecte: .git.
- delete: (opcional) Determina si els fitxers que no són presents en la font s’han de suprimir del destí durant el procés de càrrega. Valor per defecte: true.
- descriptor_relative_path: (obligatori) Path relatiu dels descriptors, (fitxer o directori), és a dir: ‘folder/sql.sql’ o ‘folder/subfolder’. El path relatiu ja conté els valors “descriptors/engine/technology/”, per la qual cosa no cal incloure’ls com a input, sinó que cal indicar a partir d’aquí.
- key_vault_name: (opcional) Key Vault nom. Definir únicament si el cloud és
azure. - connection_secret_name: (opcional) Nom del secret de connexió.
- function_name: (opcional) Nom de la funció. Definir únicament si el cloud és
AWS. - resource_group: (opcional) Grup de recursos. Definir únicament si el cloud és
azure. - azure_region: (opcional) Regió Azure. Definir únicament si el cloud és
azure. - registry_name: (opcional) Nom de l’egistry. Definir únicament si el cloud és
azureogcp. - vnet_name: (DEPRECATED) VNet nom. Definir únicament si el cloud és
azure. - network_name: (opcional) Network nom. Definir únicament si el cloud és
azureogcp. - subnet_name: (opcional) Subnet nom. Definir únicament si el cloud és
azureogcp. - cluster_name: (opcional) Nom del clúster.
- namespace: (opcional) Nom del namespace dins el clúster.
- database_endpoint: (opcional) URI endpoint de la BBDD.
- database_name: (opcional) Nom de la base de dades.
- database_user:(opcional) Usuari de la BBDD.
- itsm_enabled: (DEPRECATED) Aquest paràmetre està obsolet, i per tant no importa el valor que prengui que no es farà ús d’aquest.
- itsm_id_change_coordinator: (obligatori) ID del coordinador de canvis d’ITSM.
- enable_itsm_approve: (opcional) Feature flag per a habilitar el la aprovació de canvis en ITSM (default false).
- scheduled_start_date: (opcional) Data d’inici del canvi, format dd-MM-yyyy HH:mm.
- scheduled_end_date: (opcional) Data de fi del canvi, format dd-MM-yyyy HH:mm.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/extended-descriptor-cd-reusable.yaml@v4
secrets: inherit
with:
cloud: aws
engine: database
technology: psql
artifact_version: ${{ inputs.artifact_version }}
environment: ${{ inputs.environment }}
storage_name: "ghec-dev-s3-ew1-ingest-scripts-db-psql"
descriptors_relative_path: ${{ inputs.descriptors_relative_path }}
connection_secret_name: "rds!cluster-e490379f-cfff-4ebb-b083-f723b8fb136e"
function_name: "ghec-dev-lam-ew1-000-psql"
database_endpoint: ${{ inputs.database_endpoint }}
database_name: ${{ inputs.database_name }}
database_user: ${{ inputs.database_user }}
itsm_id_change_coordinator: ${{ inputs.itsm_id_change_coordinator }}
enable_itsm_approve: true
scheduled_start_date: ${{ inputs.scheduled_start_date }}
scheduled_end_date: ${{ inputs.scheduled_end_date }}
API Manager
CD Publish
- artifact_version: (obligatori) Versió de l’artefacte que es publicarà.
- apicCatalog: (obligatori) Catàleg d’API Connect on es publicarà el producte.Valors possibles:
privatpublicprivat-prepublic-pre
- apicProductFile: (obligatori) Fitxer del producte d’API Connect que es publicarà.
- itsm_enabled: (DEPRECATED) Aquest paràmetre està obsolet, i per tant no importa el valor que prengui que no es farà ús d’aquest.
- itsm_id_change_coordinator: (obligatori) ID del coordinador de canvis en el sistema ITSM.
- enable_itsm_approve: (opcional) Feature flag per a habilitar el la aprovació de canvis en ITSM (default false).
- scheduled_start_date: (opcional) Data d’inici del canvi, format dd-MM-yyyy HH:mm.
- scheduled_end_date: (opcional) Data de fi del canvi, format dd-MM-yyyy HH:mm.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/apim-cd-publish-reusable.yaml@v4
secrets: inherit
with:
artifact_version: ${{ inputs.artifact_version }}
apicCatalog: ${{ inputs.apicCatalog }}
apicProductFile: ${{ inputs.apicProductFile }}
itsm_id_change_coordinator: ${{ inputs.itsm_id_change_coordinator }}
enable_itsm_approve: true
scheduled_start_date: ${{ inputs.scheduled_start_date }}
scheduled_end_date: ${{ inputs.scheduled_end_date }}
CD Operativa
- operació: (obligatori) Operació a fer amb el producte.
INFOREPLACERETIREDELETEDEPRECATESUPERSEDE
- artifact_version: (obligatori) Versió de l’artefacte que es publicarà.
- apicCatalog: (obligatori) Catàleg d’API Connect on es farà l’operació.
privatpublicprivat-prepublic-pre
- apicProductFile: (obligatori) Fitxer del producte d’API Connect que es farà servir en l’operació.
- apicNewProductVersion: (obligatori en operacions de Replace i Supersede) Nova versió del producte d’API Connect que es farà servir en l’operació.
- itsm_enabled: (DEPRECATED) Aquest paràmetre està obsolet, i per tant no importa el valor que prengui que no es farà ús d’aquest.
- itsm_id_change_coordinator: (obligatori) ID del coordinador de canvis en el sistema ITSM.
- enable_itsm_approve: (opcional) Feature flag per a habilitar el la aprovació de canvis en ITSM (default false).
- scheduled_start_date: (opcional) Data d’inici del canvi, format dd-MM-yyyy HH:mm.
- scheduled_end_date: (opcional) Data de fi del canvi, format dd-MM-yyyy HH:mm.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/apim-cd-operativa-reusable.yaml@v4
secrets: inherit
with:
operation: ${{ inputs.operation }}
artifact_version: ${{ inputs.artifact_version }}
apicCatalog: ${{ inputs.apicCatalog }}
apicProductFile: ${{ inputs.apicProductFile }}
apicNewProductVersion: ${{ inputs.apicNewProductVersion }}
itsm_id_change_coordinator: ${{ inputs.itsm_id_change_coordinator }}
enable_itsm_approve: true
scheduled_start_date: ${{ inputs.scheduled_start_date }}
scheduled_end_date: ${{ inputs.scheduled_end_date }}
CI on Commit
- apicProductFile: (obligatori) Fitxer del producte d’API Connect que es publicarà.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/apim-ci-on-commit-reusable.yaml@v4
secrets: inherit
with:
apicProductFile: "health-check-test_2.0.7.yaml"
CI on PR
- apicProductFile: (obligatori) Fitxer del producte d’API Connect que es publicarà.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/apim-ci-on-pr-reusable.yaml@v4
secrets: inherit
with:
apicProductFile: "health-check-test_2.0.7.yaml"
Mobile Apps iOS
CD
- artifact_version: (obligatori) Versió de l’artefacte.
- environment: (obligatori) Entorn on distribuir.
- project_name: (obligatori) Nom del projecte.
- bundle_identifier: (obligatori) Bundle Identifier del projecte segons l’entorn.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- internal_account: (opcional) Per habilitar o deshabilitar l’ús del compte intern o extern d’Apple. Valor per defecte: false
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-ios-cd-reusable.yml@v4
secrets: inherit
with:
project_name: "<project_name>"
artifact_version: ${{ inputs.artifact_version }}
environment: ${{ inputs.environment }}
bundle_identifier: ${{ inputs.bundle_identifier }}
CI on commit
- project_name: (obligatori) Nom del projecte.
- project_scheme: (obligatori) Nom del scheme del projecte.
- project_target: (obligatori) Nom del target del projecte.
- project_config: (obligatori) Nom de la configuració del projecte.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- use_private_library: (opcional) Per habilitar o deshabilitar l’ús de llibreries propies. Valor per defecte: false
- internal_account: (opcional) Per habilitar o deshabilitar l’ús del compte intern o extern d’Apple. Valor per defecte: false
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-ios-ci-on-commit-reusable.yml@v4
secrets: inherit
with:
project_name: "<project_name>"
project_scheme: ${{ inputs.project_scheme }}
project_target: ${{ inputs.project_target }}
project_config: ${{ inputs.project_config }}
CI on PR
- project_name: (obligatori) Nom del projecte.
- project_scheme: (obligatori) Nom del scheme del projecte.
- project_target: (obligatori) Nom del target del projecte.
- project_config: (obligatori) Nom de la configuració del projecte.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- use_private_library: (opcional) Per habilitar o deshabilitar l’ús de llibreries propies. Valor per defecte: false
- unit_test: (opcional) Per habilitar o deshabilitar l’execució de Unit Testing. Valor per defecte: true
- unit_test_os_version: (opcional) OS a utilizar al simulador per executar Unit Testing. Valor per defecte: 26.2
- unit_test_device_model: (opcional) Nom del dispositiu a utilizar al simulador per executar Unit Testing. Valor per defecte: iPhone 17
- unit_test_testplan: (opcional) Nom del test plan per executar Unit Testing.
- use_rosetta: (opcional) Indica l’ús de Rosseta al simulador. Valor per defecte: false
- lint: (opcional) Per habilitar o deshabilitar l’execució de SwiftLint. Valor per defecte: true
- dependabot: (opcional) Per habilitar o deshabilitar l’execució de Dependabot. Valor per defecte: true
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-ios-ci-on-pr-reusable.yml@v4
secrets: inherit
with:
project_name: "<project_name>"
project_scheme: "<project_scheme>"
project_target: "<project_target>"
project_config: "<project_config>"
Mobile Apps Android
CD
- artifact_version: (obligatori) Versió de l’artefacte.
- environment: (obligatori) Entorn on distribuir.
- project_name: (obligatori) Nom del projecte.
- package_name: (obligatori) Package Name del projecte segons l’entorn.
- binary_type: (opcional) Tipus de binari a generar i signar. Valor per defecte: ‘aab’
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-android-cd-reusable.yml@v4
secrets: inherit
with:
project_name: "<project_name>"
artifact_version: ${{ inputs.artifact_version }}
environment: ${{ inputs.environment }}
CI on commit
- project_name: (obligatori) Nom del projecte.
- flavour: (opcional) Nom del flavour del projecte. Valor per defecte: pro
- build_type: (opcional) Nom del build type del projecte. Valor per defecte: release
- java_version: (obligatori) Versió de Java.
- gradle_version: (opcional) Versió de Gradle.
- binary_type: (opcional) Tipus de binari a generar i signar. Valor per defecte: ‘aab’
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-android-ci-on-commit-reusable.yml@v4
secrets: inherit
with:
project_name: "<project_name>"
java_version: "<java_version>"
### CI on PR
- **flavour**: (opcional) Nom del flavour del projecte. Valor per defecte: dev
- **build_type**: (opcional) Nom del build type del projecte. Valor per defecte: debug
- **java_version**: (obligatori) Versió de Java.
- **gradle_version**: (opcional) Versió de Gradle.
- **unit_test**: (opcional) Per habilitar o deshabilitar l'execució de Unit Testing. Valor per defecte: true
- **sonarqube**: (opcional) Utilització de SonarQube. Valor per defecte: true.
- **sonar_exclusions**: (opcional) Exclusió de Sonar, pot estar buit.
- **lint**: (opcional) Per habilitar o deshabilitar l'execució de Lint. Valor per defecte: true
- **dependabot**: (opcional) Per habilitar o deshabilitar l'execució de Dependabot. Valor per defecte: true
- **binary_type**: (opcional) Tipus de binari a generar i signar. Valor per defecte: 'aab'
**Exemple de crida al workflow:**
```yaml
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-ios-ci-on-pr-reusable.yml@v4
secrets: inherit
with:
java_version: "<java_version>"
build_type: ${{ inputs.build_type }}
Mobile Library iOS
CI on commit develop
- library_scheme_name: (obligatori) Nom del scheme del projecte.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- use_private_library: (opcional) Per habilitar o deshabilitar l’ús de llibreries propies. Valor per defecte: false
- dependabot: (opcional) Per habilitar o deshabilitar l’execució de Dependabot. Valor per defecte: true
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/library-mobils-ios-ci-on-commit-develop-reusable.yml@v4
secrets: inherit
with:
library_scheme_name: "<library_schem_name>"
CI on commit
- library_scheme_name: (obligatori) Nom del scheme del projecte.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- use_private_library: (opcional) Per habilitar o deshabilitar l’ús de llibreries propies. Valor per defecte: false
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/library-mobils-ios-ci-on-commit-reusable.yml@v4
secrets: inherit
with:
library_scheme_name: "<library_schem_name>"
CI on PR
- library_scheme_name: (obligatori) Nom del scheme del projecte.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- use_private_library: (opcional) Per habilitar o deshabilitar l’ús de llibreries propies. Valor per defecte: false
- unit_test: (opcional) Per habilitar o deshabilitar l’execució de Unit Testing. Valor per defecte: true
- unit_test_os_version: (opcional) OS a utilizar al simulador per executar Unit Testing. Valor per defecte: 26.2
- unit_test_device_model: (opcional) Nom del dispositiu a utilizar al simulador per executar Unit Testing. Valor per defecte: iPhone 17
- unit_test_scheme_name: (opcional) Nom del scheme de test del projecte per executar Unit Testing.
- lint: (opcional) Per habilitar o deshabilitar l’execució de SwiftLint. Valor per defecte: true
- dependabot: (opcional) Per habilitar o deshabilitar l’execució de Dependabot. Valor per defecte: true
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/library-mobils-ios-ci-on-pr-reusable.yml@v4
secrets: inherit
with:
library_scheme_name: "<library_schem_name>"
unit_test_scheme_name: "<unit_test_scheme_name>"
Mobile Apps Flutter
CD
- project_name: (obligatori) Nom del projecte.
- project_name_for_ios: (obligatori) Nom del projecte per iOS.
- project_scheme: (obligatori) Nom del scheme del projecte.
- project_target: (obligatori) Nom del target del projecte.
- project_config: (obligatori) Nom de la configuració del projecte.
- flutter_version: (opcional) Versió de Flutter. Si no s’informa, utilitzarà el pubspec.yml i sino la darrera versió estable.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- use_private_library: (opcional) Per habilitar o deshabilitar l’ús de llibreries propies. Valor per defecte: false
- internal_account: (opcional) Per habilitar o deshabilitar l’ús del compte intern o extern d’Apple. Valor per defecte: false
- java_version: (obligatori) Versió de Java.
- gradle_version: (opcional) Versió de Gradle.
- auto_upload_playstore: (opcional) Desactivar la distribució automàtica al Google Play Store del entorn.
- binary_type: (opcional) Tipus de binari a generar i signar. Valor per defecte: ‘aab’
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-flutter-cd-reusable.yml@v4
secrets: inherit
with:
project_name: "<project_name>"
project_name_for_ios: ${{ inputs.project_name_for_ios }}
project_scheme: ${{ inputs.project_scheme }}
project_target: ${{ inputs.project_target }}
project_config: ${{ inputs.project_config }}
java_version: "<java_version>"
CI on PR
- project_name: (obligatori) Nom del projecte.
- flutter_version: (opcional) Versió de Flutter. Si no s’informa, utilitzarà el pubspec.yml i sino la darrera versió estable.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- use_private_library: (opcional) Per habilitar o deshabilitar l’ús de llibreries propies. Valor per defecte: false
- unit_test: (opcional) Per habilitar o deshabilitar l’execució de Unit Testing. Valor per defecte: true
- java_version: (obligatori) Versió de Java.
- gradle_version: (opcional) Versió de Gradle.
- lint: (opcional) Per habilitar o deshabilitar l’execució de SwiftLint. Valor per defecte: true
- dependabot: (opcional) Per habilitar o deshabilitar l’execució de Dependabot. Valor per defecte: true
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-flutter-ci-on-pr-reusable.yml@v4
secrets: inherit
with:
project_name: "<project_name>"
java_version: "<java_version>"
Mobile Apps React-Native
CD
- project_name: (obligatori) Nom del projecte.
- project_name_for_ios: (obligatori) Nom del projecte per iOS.
- project_scheme: (obligatori) Nom del scheme del projecte.
- project_target: (obligatori) Nom del target del projecte.
- project_config: (obligatori) Nom de la configuració del projecte.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- use_private_library: (opcional) Per habilitar o deshabilitar l’ús de llibreries propies. Valor per defecte: false
- internal_account: (opcional) Per habilitar o deshabilitar l’ús del compte intern o extern d’Apple. Valor per defecte: false
- java_version: (obligatori) Versió de Java.
- gradle_version: (opcional) Versió de Gradle.
- flavour: (opcional) Nom del flavour del projecte. Valor per defecte: pro
- build_type: (opcional) Nom del build type del projecte. Valor per defecte: release
- auto_upload_playstore: (opcional) Desactivar la distribució automàtica al Google Play Store del entorn.
- binary_type: (opcional) Tipus de binari a generar i signar. Valor per defecte: ‘aab’
- environment_config_param: (opcional) Paràmetre per determinar l’entorn
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-rn-cd-reusable.yml@v4
secrets: inherit
with:
project_name: "<project_name>"
project_name_for_ios: ${{ inputs.project_name_for_ios }}
project_scheme: ${{ inputs.project_scheme }}
project_target: ${{ inputs.project_target }}
project_config: ${{ inputs.project_config }}
java_version: "<java_version>"
CI on PR
- project_name: (obligatori) Nom del projecte.
- project_name_for_ios: (obligatori) Nom del projecte per iOS.
- project_scheme: (obligatori) Nom del scheme del projecte.
- project_target: (obligatori) Nom del target del projecte.
- project_config: (obligatori) Nom de la configuració del projecte.
- xcode_version: (opcional) Versió del Xcode. Valor per defecte: 26.3
- use_private_library: (opcional) Per habilitar o deshabilitar l’ús de llibreries propies. Valor per defecte: false
- flavour: (opcional) Nom del flavour del projecte. Valor per defecte: dev
- build_type: (Opcional) Nom del build type del projecte. Valor per defecte: debug
- java_version: (obligatori) Versió de Java.
- gradle_version: (opcional) Versió de Gradle.
- unit_test: (opcional) Per habilitar o deshabilitar l’execució de Unit Testing. Valor per defecte: true
- sonarqube: (opcional) Utilització de SonarQube. Valor per defecte: true.
- sonar_exclusions: (opcional) Exclusió de Sonar, pot estar buit.
- lint: (opcional) Per habilitar o deshabilitar l’execució de Lint. Valor per defecte: true
- dependabot: (opcional) Per habilitar o deshabilitar l’execució de Dependabot. Valor per defecte: true
- binary_type: (opcional) Tipus de binari a generar i signar. Valor per defecte: ‘aab’
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows-mobile/.github/workflows/apps-mobils-rn-ci-on-pr-reusable.yml@v4
secrets: inherit
with:
project_name: "<project_name>"
project_name_for_ios: ${{ inputs.project_name_for_ios }}
project_scheme: ${{ inputs.project_scheme }}
project_target: ${{ inputs.project_target }}
project_config: ${{ inputs.project_config }}
java_version: "<java_version>"
Databricks
CD
- technology: (obligatori) Tecnologia del projecte. Valors possibles:
databricks
- artifact_version: (obligatori) Versió de l’artefacte.
- environment: (obligatori) Entorn.
- bundle_target_list: (opcional) Llistat de bundle targets a desplegar.
- runner_type: (obligatori) Tipus de runner. Valors possibles:
- ‘{“group”: “databricks”, “labels”: [“self-hosted”, “databricks”]}’
- ‘[“ubuntu-22.04”]’
- ‘[“ubuntu-24.04”]’
- itsm_enabled: (DEPRECATED) Aquest paràmetre està obsolet, i per tant no importa el valor que prengui que no es farà ús d’aquest.
- itsm_id_change_coordinator: (obligatori) ID del coordinador de canvis de l’ITSM.
- enable_itsm_approve: (opcional) Feature flag per a habilitar el la aprovació de canvis en ITSM (default false).
- scheduled_start_date: (opcional) Data d’inici del canvi, format dd-MM-yyyy HH:mm.
- scheduled_end_date: (opcional) Data de fi del canvi, format dd-MM-yyyy HH:mm.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/databricks-cd-reusable.yaml@v4
secrets: inherit
with:
technology: databricks
artifact_version: ${{ inputs.artifact_version }}
environment: ${{ inputs.environment }}
runner_type: ${{ inputs.runner_type }}
itsm_id_change_coordinator: ${{ inputs.itsm_id_change_coordinator }}
enable_itsm_approve: true
scheduled_start_date: ${{ inputs.scheduled_start_date }}
scheduled_end_date: ${{ inputs.scheduled_end_date }}
CI on commit
- technology: (obligatori) Tecnologia del projecte. Valors possibles:
databricks
- sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
node_modules/**test/**
- sonarqube: (opcional) Indica si s’ha d’executar l’anàlisi de codi mitjançant SonarQube. Valor per defecte: false.
- sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. - sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
- dependabot: (opcional) Indica si s’ha de permetre l’ús de Dependabot. Valor per defecte: false.
- get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. Si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. Si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/databricks-ci-on-commit-reusable.yaml@v4
secrets: inherit
with:
technology: databricks
sonar_exclusions: "test/**"
# get_project_name_command: "yq eval '.bundle.name' '${{ github.workspace }}/databricks.yml'"
# get_version_command: "grep '__version__' ${sourceProjectPath}/__init__.py | cut -d '"' -f 2"
CI on PR
- technology: (obligatori) Tecnologia del projecte. Valors possibles:
databricks
- runner_type: (obligatori) Tipus de runner. Valors possibles:
- ‘{“group”: “databricks”, “labels”: [“self-hosted”, “databricks”]}’
- ‘[“ubuntu-22.04”]’
- ‘[“ubuntu-24.04”]’
- sonar_exclusions: (opcional) Exclusió de Sonar. Exemples:
test/**
- unit_test: (opcional) Indica si s’han d’executar proves unitàries com a part del flux de treball d’integració contínua. Valor per defecte: false.
- sonarqube: (opcional) Habilita la integració amb SonarQube. Valor per defecte: true.
- sonar_java_binaries_path: (opcional) Es correspon amb el parametro java.binaries de Sonarqube. Informar només quan la tecnologia sigui java o java-maven, el valor per defecte és
target/classes. - sonar_project_base_dir: (opcional) Es correspon amb el parametro projectBaseDir de Sonarqube. Propietat per a moure l’anàlisi a un directori diferent.
- dependabot: (opcional) Activa o desactiva l’ús de Dependabot Valor per defecte: true.
- custom_test_command:(opcional) Comanda personalitzada per realitzar les proves al projecte. Els valors per defecte són els següents segons la tecnologia:
- get_project_name_command: (opcional) Comanda per a obtenir el nom del projecte del fitxer descriptor. Si s’informa, també serà requerit informar el paràmetre “get_version_command”.
- get_version_command: (opcional) Comanda per obtenir la versió de l’artefacte de l’artefacte del fitxer descriptor. Si s’informa, també serà requerit informar el paràmetre “get_project_name_command”.
- multi_target: (opcional) Deshabilita la validacion del bundle i OPA Policies. Valor per defecte: false.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/databricks-ci-on-pr-reusable.yaml@v4
secrets: inherit
with:
technology: databricks
runner_type: '{"group": "databricks", "labels": ["self-hosted", "databricks"]}'
sonar_exclusions: "test/**"
# custom_test_command: ""
# get_project_name_command: "yq eval '.bundle.name' '${{ github.workspace }}/databricks.yml'"
# get_version_command: "grep '__version__' ${sourceProjectPath}/__init__.py | cut -d '"' -f 2"
Datafactory
CD
- technology: (obligatori) Tecnologia del projecte. Valors possibles:
datafactory
- artifact_version: (obligatori) Versió de l’artefacte.
- environment: (obligatori) Entorn.
- project_name: (obligatori) Nombre del projecte.
- azure_resource_group: (obligatori) Nom del grup de recursos d’Azure.
- azure_datafactory_name: (obligatori) Nom d´Azure Data Factory.
- itsm_enabled: (DEPRECATED) Aquest paràmetre està obsolet, i per tant no importa el valor que prengui que no es farà ús d’aquest.
- itsm_id_change_coordinator: (obligatori) ID del coordinador de canvis de l’ITSM.
- enable_itsm_approve: (opcional) Feature flag per a habilitar el la aprovació de canvis en ITSM (default false).
- scheduled_start_date: (opcional) Data d’inici del canvi, format dd-MM-yyyy HH:mm.
- scheduled_end_date: (opcional) Data de fi del canvi, format dd-MM-yyyy HH:mm.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/datafactory-cd-reusable.yaml@v4
secrets: inherit
with:
technology: datafactory
artifact_version: ${{ inputs.artifact_version }}
environment: ${{ inputs.environment }}
project_name: ${{ inputs.project_name }}
azure_resource_group: ${{ inputs.azure_resource_group }}
azure_datafactory_name: ${{ inputs.azure_datafactory_name }}
itsm_id_change_coordinator: ${{ inputs.itsm_id_change_coordinator }}
enable_itsm_approve: true
scheduled_start_date: ${{ inputs.scheduled_start_date }}
scheduled_end_date: ${{ inputs.scheduled_end_date }}
CI on commit to Release or Master
- technology: (obligatori) Tecnologia del projecte. Valors possibles:
datafactory
- project_name: (obligatori) Nombre del projecte.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/datafactory-ci-on-commit-reusable.yaml@v4
secrets: inherit
with:
technology: datafactory
project_name: <project_name>
CI on Commit to adf_publish
- technology: (obligatori) Tecnologia del projecte. Valors possibles:
datafactory
- project_name: (obligatori) Nombre del projecte.
- environment: (opcional) Entorn.
Exemple de crida al workflow:
uses: ctti-arq/reusable-workflows/.github/workflows/datafactory-ci-on-commit-adf-publish-reusable.yaml@v4
secrets: inherit
with:
technology: datafactory
project_name: <project_name>
environment: pre