diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2041ed036b463df1d46bbd80edae7c67245f458f..db1a550bbb03df5c84c7114d47f83be72c5b6738 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,7 @@ stages: - dev_workflows - dev_cleanup - dev_merge + - validate_main_source - get_images - update_values - package_publish @@ -162,7 +163,7 @@ dev_deploy_job: echo 'Helm deployment completed successfully.' " rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"' @@ -178,7 +179,7 @@ dev_workflows_job: dependencies: - dev_deploy_job rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"' dev_cleanup_job: stage: dev_cleanup @@ -248,7 +249,7 @@ dev_cleanup_job: echo 'Cleanup completed successfully.' " rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"' when: always @@ -262,19 +263,37 @@ dev_merge: - git config --global user.name "$GITLAB_USER_NAME" - git remote set-url origin "https://${GITLAB_USER_NAME}:${GROUP_ACCESS_TOKEN}@labs.etsi.org/rep/osl/hypo/code/org.etsi.osl.hypo.ops/installer.git" - - git fetch origin main + - git fetch origin develop - git fetch origin gitops-cd - git checkout gitops-cd - git pull origin gitops-cd - - git merge origin/main -m "Merge changes from main" + - git merge origin/develop -m "Merge changes from develop" - git push origin gitops-cd rules: - - if: '$CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE != "schedule"' + - if: '$CI_COMMIT_BRANCH == "develop" && $CI_PIPELINE_SOURCE != "schedule"' when: on_success - when: never +validate_main_source_job: + stage: validate_main_source + tags: + - hypo + script: + - | + if [ "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" != "develop" ]; then + echo "ERROR: Only develop can be merged into main." + exit 1 + fi + echo "Valid merge: develop -> main" + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && + $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"' + - when: never + + + get_images: stage: get_images image: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/alpine:latest @@ -317,7 +336,6 @@ get_images: only: refs: - main - - gitops-cd variables: - '$CI_COMMIT_MESSAGE =~ /^release:\s\d/' @@ -355,20 +373,19 @@ update_values: git fetch origin - git checkout gitops-cd - git pull origin gitops-cd + git checkout develop + git pull origin develop git fetch origin main git merge origin/main -m "Merge changes from main" git status - git push -f "https://${GITLAB_USER_NAME}:${GROUP_ACCESS_TOKEN}@labs.etsi.org/rep/osl/hypo/code/org.etsi.osl.hypo.ops/installer.git" HEAD:gitops-cd + git push -f "https://${GITLAB_USER_NAME}:${GROUP_ACCESS_TOKEN}@labs.etsi.org/rep/osl/hypo/code/org.etsi.osl.hypo.ops/installer.git" HEAD:develop else echo "No changes to commit." fi only: refs: - main - - gitops-cd variables: - '$CI_COMMIT_MESSAGE =~ /^release:\s\d/' @@ -408,7 +425,6 @@ package_publish: only: refs: - main - - gitops-cd variables: - '$CI_COMMIT_MESSAGE =~ /^release:\s/' @@ -427,7 +443,6 @@ prepare_release: only: refs: - main - - develop variables: - '$CI_COMMIT_MESSAGE =~ /^release:\s/' @@ -452,7 +467,6 @@ release_job: only: refs: - main - - develop variables: - '$CI_COMMIT_MESSAGE =~ /^release:\s/'