Commit 0a24f143 authored by Nikos Psaromanolakis's avatar Nikos Psaromanolakis
Browse files

fix: Edit .gitlab-ci.yml

parent 77d28ad4
Loading
Loading
Loading
Loading
Loading
+48 −9
Original line number Diff line number Diff line
@@ -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
@@ -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:
@@ -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: