Loading .gitlab-ci.yml +86 −26 Changes for .gitlab-ci.yml: 86 added lines, 26 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ stages: - dev_image_build - dev_deploy - dev_workflows - develop_image_tag - validate_main_source - release - image_build Loading Loading @@ -49,8 +51,11 @@ lint: artifacts: paths: - ${SONAR_GO_COVERAGE} rules: - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "main"' except: - main - tags - develop tests_job: stage: test Loading @@ -74,11 +79,17 @@ tests_job: - gofmt -e -s -w . - go vet ./... - go test -v -cover -coverprofile=${SONAR_GO_COVERAGE}/coverage.out -coverpkg=./... ./... -skip TestOcmScheduler after_script: - docker container prune -f || true artifacts: paths: - ${SONAR_GO_COVERAGE} rules: - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "main"' except: - main - tags - develop sonar-analysis: stage: analyze Loading @@ -98,8 +109,11 @@ sonar-analysis: expire_in: 1 day dependencies: - tests_job rules: - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "main"' except: - main - tags - develop dev_image_build_job: stage: dev_image_build Loading @@ -107,9 +121,12 @@ dev_image_build_job: - hypo image: name: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/docker:29.1.3 variables: BUILT_IMAGE: "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" before_script: - docker info > /dev/null - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - apk add --no-cache curl script: - > docker build Loading @@ -121,8 +138,18 @@ dev_image_build_job: -t $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA -f $STAG_DOCKERFILE . - docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA # Store the exact built image for the next develop pipeline - | curl --fail --request PUT \ --header "PRIVATE-TOKEN: $GROUP_ACCESS_TOKEN" \ --form "value=$BUILT_IMAGE" \ "$CI_API_V4_URL/projects/$CI_PROJECT_ID/variables/LAST_MR_BUILT_IMAGE" after_script: - docker image rm -f "$BUILT_IMAGE" || true rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"' dev_deploy_job: stage: dev_deploy Loading Loading @@ -172,7 +199,7 @@ dev_deploy_job: dependencies: - dev_image_build_job rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"' Loading @@ -190,9 +217,46 @@ 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"' develop_image_tag_job: stage: develop_image_tag tags: - hypo image: name: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/docker:29.1.3 variables: DEVELOP_IMAGE: "$CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest" before_script: - docker info > /dev/null script: - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - echo "Promoting image for develop commit $LAST_MR_BUILT_IMAGE" - docker pull "$LAST_MR_BUILT_IMAGE" - docker tag "$LAST_MR_BUILT_IMAGE" "$DEVELOP_IMAGE" - docker push "$DEVELOP_IMAGE" after_script: - docker image rm -f "$LAST_MR_BUILT_IMAGE" "$DEVELOP_IMAGE" || true only: - develop 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 semantic_versioning_job: image: Loading Loading @@ -222,8 +286,9 @@ semantic_versioning_job: artifacts: paths: - release_version.txt rules: - if: '$CI_COMMIT_BRANCH == "main"' only: - main image_build_job: stage: image_build Loading @@ -236,24 +301,19 @@ image_build_job: - RELEASE_VERSION=$(cat release_version.txt) - echo $RELEASE_VERSION - if [ "$RELEASE_VERSION" = "no-release" ]; then exit 0; fi - echo "$GROUP_ACCESS_TOKEN" | docker login $HYPO_APPS_REGISTRY -u $GROUP_ACCESS_NAME --password-stdin - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY script: - > docker build --pull --network host --build-arg USERNAME="$CI_REGISTRY_USER" --build-arg PASSWORD="$CI_JOB_TOKEN" --build-arg CI_SERVER_HOST="$CI_SERVER_HOST" -t $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA -f $STAG_DOCKERFILE . - docker tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest - docker tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE/$IMAGE_NAME:$RELEASE_VERSION - docker pull $CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest - docker tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest - docker tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest $CI_REGISTRY_IMAGE/$IMAGE_NAME:$RELEASE_VERSION - docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest - docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:$RELEASE_VERSION rules: - if: '$CI_COMMIT_BRANCH == "main"' after_script: - docker image rm -f $CI_REGISTRY_IMAGE/$IMAGE_NAME:$RELEASE_VERSION $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest $CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest || true dependencies: - semantic_versioning_job only: - main No newline at end of file Loading
.gitlab-ci.yml +86 −26 Changes for .gitlab-ci.yml: 86 added lines, 26 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ stages: - dev_image_build - dev_deploy - dev_workflows - develop_image_tag - validate_main_source - release - image_build Loading Loading @@ -49,8 +51,11 @@ lint: artifacts: paths: - ${SONAR_GO_COVERAGE} rules: - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "main"' except: - main - tags - develop tests_job: stage: test Loading @@ -74,11 +79,17 @@ tests_job: - gofmt -e -s -w . - go vet ./... - go test -v -cover -coverprofile=${SONAR_GO_COVERAGE}/coverage.out -coverpkg=./... ./... -skip TestOcmScheduler after_script: - docker container prune -f || true artifacts: paths: - ${SONAR_GO_COVERAGE} rules: - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "main"' except: - main - tags - develop sonar-analysis: stage: analyze Loading @@ -98,8 +109,11 @@ sonar-analysis: expire_in: 1 day dependencies: - tests_job rules: - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "main"' except: - main - tags - develop dev_image_build_job: stage: dev_image_build Loading @@ -107,9 +121,12 @@ dev_image_build_job: - hypo image: name: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/docker:29.1.3 variables: BUILT_IMAGE: "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" before_script: - docker info > /dev/null - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - apk add --no-cache curl script: - > docker build Loading @@ -121,8 +138,18 @@ dev_image_build_job: -t $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA -f $STAG_DOCKERFILE . - docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA # Store the exact built image for the next develop pipeline - | curl --fail --request PUT \ --header "PRIVATE-TOKEN: $GROUP_ACCESS_TOKEN" \ --form "value=$BUILT_IMAGE" \ "$CI_API_V4_URL/projects/$CI_PROJECT_ID/variables/LAST_MR_BUILT_IMAGE" after_script: - docker image rm -f "$BUILT_IMAGE" || true rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"' dev_deploy_job: stage: dev_deploy Loading Loading @@ -172,7 +199,7 @@ dev_deploy_job: dependencies: - dev_image_build_job rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"' Loading @@ -190,9 +217,46 @@ 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"' develop_image_tag_job: stage: develop_image_tag tags: - hypo image: name: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/docker:29.1.3 variables: DEVELOP_IMAGE: "$CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest" before_script: - docker info > /dev/null script: - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - echo "Promoting image for develop commit $LAST_MR_BUILT_IMAGE" - docker pull "$LAST_MR_BUILT_IMAGE" - docker tag "$LAST_MR_BUILT_IMAGE" "$DEVELOP_IMAGE" - docker push "$DEVELOP_IMAGE" after_script: - docker image rm -f "$LAST_MR_BUILT_IMAGE" "$DEVELOP_IMAGE" || true only: - develop 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 semantic_versioning_job: image: Loading Loading @@ -222,8 +286,9 @@ semantic_versioning_job: artifacts: paths: - release_version.txt rules: - if: '$CI_COMMIT_BRANCH == "main"' only: - main image_build_job: stage: image_build Loading @@ -236,24 +301,19 @@ image_build_job: - RELEASE_VERSION=$(cat release_version.txt) - echo $RELEASE_VERSION - if [ "$RELEASE_VERSION" = "no-release" ]; then exit 0; fi - echo "$GROUP_ACCESS_TOKEN" | docker login $HYPO_APPS_REGISTRY -u $GROUP_ACCESS_NAME --password-stdin - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY script: - > docker build --pull --network host --build-arg USERNAME="$CI_REGISTRY_USER" --build-arg PASSWORD="$CI_JOB_TOKEN" --build-arg CI_SERVER_HOST="$CI_SERVER_HOST" -t $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA -f $STAG_DOCKERFILE . - docker tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest - docker tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE/$IMAGE_NAME:$RELEASE_VERSION - docker pull $CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest - docker tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest - docker tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest $CI_REGISTRY_IMAGE/$IMAGE_NAME:$RELEASE_VERSION - docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest - docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:$RELEASE_VERSION rules: - if: '$CI_COMMIT_BRANCH == "main"' after_script: - docker image rm -f $CI_REGISTRY_IMAGE/$IMAGE_NAME:$RELEASE_VERSION $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest $CI_REGISTRY_IMAGE/$IMAGE_NAME:dev-latest || true dependencies: - semantic_versioning_job only: - main No newline at end of file