# This is the main CI/CD workflow for the cms-api application. # It triggers on pushes of tags matching semantic versioning with environment suffixes. name: CI/CD for project on: push: tags: - 'v*' # Matches v-prefixed tags like v1.0.0, v1.0.0-dev.1, v1.0.0-stg.1 jobs: # This job calls the reusable deployment workflow. deploy_service: # Set the environment name based on the Git tag. Default is 'development'. environment: ${{ (contains(github.ref_name, '-stg.')) && 'staging' || (contains(github.ref_name, '-prod.')) && 'production' || 'development' }} uses: devops/ansible-gitea/.gitea/workflows/deploy.yml@main # Provide the specific inputs for this application. with: app_name: ${{ github.event.repository.name }} # Set deploy_env based on the Git tag. Default is 'development'. deploy_env: ${{ (contains(github.ref_name, '-stg.')) && 'staging' || (contains(github.ref_name, '-prod.')) && 'production' || 'development' }} env_type: ${{ (contains(github.ref_name, 'worker')) && 'worker' || '' }} # Pass the required secrets to the reusable workflow. # These secrets must be configured in the Gitea settings for this repository # with suffixes _DEV, _STG, _PROD. The workflow defaults to _DEV secrets. secrets: SERVER_HOST: ${{ (contains(github.ref_name, '-stg.')) && vars.SERVER_HOST_STG || (contains(github.ref_name, '-prod.')) && vars.SERVER_HOST_PROD || vars.SERVER_HOST_DEV || 'localhost' }} SERVER_PORT: ${{ (contains(github.ref_name, '-stg.')) && vars.SERVER_PORT_STG || (contains(github.ref_name, '-prod.')) && vars.SERVER_PORT_PROD || vars.SERVER_PORT_DEV || '22' }} SERVER_USER: ${{ (contains(github.ref_name, '-stg.')) && vars.SERVER_USER_STG || (contains(github.ref_name, '-prod.')) && vars.SERVER_USER_PROD || vars.SERVER_USER_DEV || 'cicd' }} SERVER_SSH_PRIVATE_KEY: ${{ (contains(github.ref_name, '-stg.')) && secrets.SERVER_SSH_PRIVATE_KEY_STG || (contains(github.ref_name, '-prod.')) && secrets.SERVER_SSH_PRIVATE_KEY_PROD || secrets.SERVER_SSH_PRIVATE_KEY_DEV || '' }} SERVER_PASSWORD: ${{ (contains(github.ref_name, '-stg.')) && secrets.SERVER_PASSWORD_STG || (contains(github.ref_name, '-prod.')) && secrets.SERVER_PASSWORD_PROD || secrets.SERVER_PASSWORD_DEV || '' }} VAULT_PASSWORD: ${{ secrets.VAULT_PASSWORD }} VAULT_ROLE: ${{ vars.VAULT_ROLE }} VAULT_ADDR: ${{ vars.VAULT_ADDR || 'https://vault.nguoiduathu.eu.org' }} DOCKER_REGISTRY: ${{ vars.DOCKER_REGISTRY || gitea.instance }}