diff --git a/.base.yaml b/.base.yaml index 18e75fe..a655f1c 100644 --- a/.base.yaml +++ b/.base.yaml @@ -96,3 +96,12 @@ stages: if [ ! -d vendor ]; then composer install --ignore-platform-reqs --optimize-autoloader --no-ansi --no-interaction --no-progress --no-scripts --quiet; fi + +#----------------------------------------------------------------------------------------------------------------------- +# FEATURE NAME +#----------------------------------------------------------------------------------------------------------------------- +.normalize-feature-name: + script: + # branch names may contain slashes (e.g. feature/ABC-12), deployer-tools flattens them + # to a hyphen for the actual instance path, mirror that here to build matching URLs + - FEATURE_NAME=$(echo "$CI_COMMIT_REF_NAME" | tr '/' '-') diff --git a/cache/cache-feature-warmup.yaml b/cache/cache-feature-warmup.yaml index f5cfba2..7e80c0b 100644 --- a/cache/cache-feature-warmup.yaml +++ b/cache/cache-feature-warmup.yaml @@ -14,12 +14,12 @@ cache:feature:warmup: rules: - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "merge_request_event" when: never - - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*)$/ + - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*|[^\/]+\/.*)$/ when: always - when: never - variables: - TYPO3_BASEURL: https://$DOMAIN_STAGE/$CI_COMMIT_REF_NAME/ script: - !reference [.check-deployment-dependencies, script] + - !reference [.normalize-feature-name, script] + - export TYPO3_BASEURL="https://$DOMAIN_STAGE/${FEATURE_NAME}/" - echo -e "\e[33mRunning cache warmup on $TYPO3_BASEURL\e[0m" - vendor/bin/dep cache:warmup stage --feature=$CI_COMMIT_REF_NAME -v diff --git a/deploy/deploy-feature-cleanup.yaml b/deploy/deploy-feature-cleanup.yaml index 9ef2d86..c4ec0c9 100644 --- a/deploy/deploy-feature-cleanup.yaml +++ b/deploy/deploy-feature-cleanup.yaml @@ -8,7 +8,7 @@ deploy:feature:cleanup: rules: - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "merge_request_event" when: never - - if: $CI_COMMIT_REF_NAME =~ /^(feature-.*|[A-Z]{2,}-\d+-.*)$/ + - if: $CI_COMMIT_REF_NAME =~ /^(feature-.*|[A-Z]{2,}-\d+-.*|[^\/]+\/.*)$/ when: manual variables: GIT_STRATEGY: none diff --git a/deploy/deploy-feature-rollback.yaml b/deploy/deploy-feature-rollback.yaml index 9790a4a..f499bc6 100644 --- a/deploy/deploy-feature-rollback.yaml +++ b/deploy/deploy-feature-rollback.yaml @@ -11,7 +11,7 @@ deploy:feature:rollback: rules: - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "merge_request_event" when: never - - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*)$/ + - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*|[^\/]+\/.*)$/ when: manual - when: never variables: diff --git a/deploy/deploy-feature.yaml b/deploy/deploy-feature.yaml index a9d9a25..099afae 100644 --- a/deploy/deploy-feature.yaml +++ b/deploy/deploy-feature.yaml @@ -11,7 +11,7 @@ deploy:feature: rules: - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "merge_request_event" when: never - - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*)$/ + - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*|[^\/]+\/.*)$/ when: always resource_group: $CI_COMMIT_REF_NAME variables: diff --git a/sync/sync-feature.yaml b/sync/sync-feature.yaml index 8813401..ade8303 100644 --- a/sync/sync-feature.yaml +++ b/sync/sync-feature.yaml @@ -22,7 +22,7 @@ sync:feature: rules: - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "merge_request_event" when: never - - if: $CI_COMMIT_REF_NAME =~ /^(feature-.*|[A-Z]{2,}-\d+-.*)$/ + - if: $CI_COMMIT_REF_NAME =~ /^(feature-.*|[A-Z]{2,}-\d+-.*|[^\/]+\/.*)$/ when: manual - if: $CI_COMMIT_REF_NAME == "main" when: manual diff --git a/test/test-feature-codeception.yaml b/test/test-feature-codeception.yaml index d58db29..ae75fe7 100644 --- a/test/test-feature-codeception.yaml +++ b/test/test-feature-codeception.yaml @@ -12,11 +12,11 @@ test:feature:codeception: rules: - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "merge_request_event" when: never - - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*)$/ - variables: - TYPO3_BASEURL: https://$DOMAIN_STAGE/$CI_COMMIT_REF_NAME/ + - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*|[^\/]+\/.*)$/ script: - !reference [.check-deployment-dependencies, script] + - !reference [.normalize-feature-name, script] + - export TYPO3_BASEURL="https://$DOMAIN_STAGE/${FEATURE_NAME}/" - echo -e "\e[33mRunning Codeception tests on $TYPO3_BASEURL\e[0m" - vendor/bin/codecept run --html --steps artifacts: diff --git a/test/test-feature-http-client.yaml b/test/test-feature-http-client.yaml index 1e3eb3e..6042301 100644 --- a/test/test-feature-http-client.yaml +++ b/test/test-feature-http-client.yaml @@ -9,14 +9,15 @@ test:feature:http: rules: - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "merge_request_event" when: never - - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*)$/ + - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*|[^\/]+\/.*)$/ variables: HTTP_TEST_DIR: tests/http HTTP_ENV_FILE: http-client.env.json HTTP_ENV: staging HTTP_BASE_PATH: _api - HTTP_BASE_URL: https://$DOMAIN_STAGE/$CI_COMMIT_REF_NAME/ script: + - !reference [.normalize-feature-name, script] + - HTTP_BASE_URL="https://$DOMAIN_STAGE/${FEATURE_NAME}/" - echo -e "\e[33mRunning http tests on $HTTP_BASE_URL$HTTP_BASE_PATH\e[0m" - | for file in ${HTTP_TEST_DIR}/*.http; do diff --git a/test/test-prod-http-client.yaml b/test/test-prod-http-client.yaml index e6c23aa..d392d89 100644 --- a/test/test-prod-http-client.yaml +++ b/test/test-prod-http-client.yaml @@ -9,7 +9,7 @@ test:prod:http: rules: - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == "schedule" || $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "merge_request_event" when: never - - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*)$/ + - if: $CI_COMMIT_REF_NAME =~ /^(main|feature-.*|[A-Z]{2,}-\d+-.*|[^\/]+\/.*)$/ variables: HTTP_TEST_DIR: tests/http HTTP_ENV_FILE: http-client.env.json