Loading .gitlab-ci.yml +74 −20 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ stages: # - test # - analyze - dev_image_build #- dev_deploy #- dev_workflows - develop_image_tag - validate_main_source - release - image_build Loading Loading @@ -44,8 +48,11 @@ lint: artifacts: paths: - ${SONAR_GO_COVERAGE} rules: - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "main"' except: - main - tags - develop dev_image_build_job: stage: dev_image_build Loading @@ -53,9 +60,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 - echo -n "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" - apk add --no-cache curl script: - > docker build Loading @@ -67,8 +77,57 @@ dev_image_build_job: -t "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" -f "$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"' 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: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/node:lts Loading @@ -93,8 +152,9 @@ semantic_versioning_job: artifacts: paths: - release_version.txt rules: - if: '$CI_COMMIT_BRANCH == "main"' only: - main image_build_job: stage: image_build Loading @@ -110,21 +170,15 @@ image_build_job: - if [ "$RELEASE_VERSION" = "no-release" ]; then exit 0; fi - 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 "$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 Loading
.gitlab-ci.yml +74 −20 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ stages: # - test # - analyze - dev_image_build #- dev_deploy #- dev_workflows - develop_image_tag - validate_main_source - release - image_build Loading Loading @@ -44,8 +48,11 @@ lint: artifacts: paths: - ${SONAR_GO_COVERAGE} rules: - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "main"' except: - main - tags - develop dev_image_build_job: stage: dev_image_build Loading @@ -53,9 +60,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 - echo -n "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" - apk add --no-cache curl script: - > docker build Loading @@ -67,8 +77,57 @@ dev_image_build_job: -t "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" -f "$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"' 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: labs.etsi.org:5050/osl/hypo/code/org.etsi.osl.hypo.ops/cicd/integration.tests/node:lts Loading @@ -93,8 +152,9 @@ semantic_versioning_job: artifacts: paths: - release_version.txt rules: - if: '$CI_COMMIT_BRANCH == "main"' only: - main image_build_job: stage: image_build Loading @@ -110,21 +170,15 @@ image_build_job: - if [ "$RELEASE_VERSION" = "no-release" ]; then exit 0; fi - 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 "$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