Loading .gitlab-ci.yml +48 −9 Original line number Diff line number Diff line Loading @@ -22,15 +22,27 @@ 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/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" before_script: - docker info > /dev/null - apk add --no-cache curl script: - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - docker buildx build --network host --pull -t $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA . - docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA - docker rmi $CI_REGISTRY/$CI_PROJECT_PATH/$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 @@ -80,23 +92,47 @@ 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"' develop_image_build_job: stage: develop_image_build 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/$CI_PROJECT_PATH/$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 - docker buildx build --network host --pull -t $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest . - docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest - 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: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/node:lts tags: Loading Loading @@ -136,10 +172,13 @@ image_build_job: - if [ "$RELEASE_VERSION" = "no-release" ]; then exit 0; fi script: - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - docker buildx build --network host --pull -t $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest . - docker tag $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$RELEASE_VERSION - docker pull "$CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:dev-latest" - docker tag $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:dev-latest $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest - docker tag $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:dev-latest $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$RELEASE_VERSION - docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest - docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$RELEASE_VERSION after_script: - docker image rm -f $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$RELEASE_VERSION $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:dev-latest || true only: - main dependencies: Loading Loading
.gitlab-ci.yml +48 −9 Original line number Diff line number Diff line Loading @@ -22,15 +22,27 @@ 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/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" before_script: - docker info > /dev/null - apk add --no-cache curl script: - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - docker buildx build --network host --pull -t $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA . - docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA - docker rmi $CI_REGISTRY/$CI_PROJECT_PATH/$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 @@ -80,23 +92,47 @@ 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"' develop_image_build_job: stage: develop_image_build 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/$CI_PROJECT_PATH/$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 - docker buildx build --network host --pull -t $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest . - docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest - 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: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/node:lts tags: Loading Loading @@ -136,10 +172,13 @@ image_build_job: - if [ "$RELEASE_VERSION" = "no-release" ]; then exit 0; fi script: - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - docker buildx build --network host --pull -t $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest . - docker tag $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$RELEASE_VERSION - docker pull "$CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:dev-latest" - docker tag $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:dev-latest $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest - docker tag $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:dev-latest $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$RELEASE_VERSION - docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest - docker push $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$RELEASE_VERSION after_script: - docker image rm -f $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:$RELEASE_VERSION $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:latest $CI_REGISTRY/$CI_PROJECT_PATH/$IMAGE_NAME:dev-latest || true only: - main dependencies: Loading