Commit 4599e5c1 authored by Miguel Angel Reina Ortega's avatar Miguel Angel Reina Ortega
Browse files

Add support to update externals folder

parent 712953b3
Loading
Loading
Loading
Loading
+63 −5
Original line number Diff line number Diff line
@@ -21,12 +21,14 @@ variables:
  LOGFILE_LINT: "yang-linting.txt"
  LOGFILE_OPENAPI: "openapi-validation.txt"
  DRY_RUN: "true"
  TAG_5G_APIs: "None"

stages:
  - checking
  - validation
  - generation
  - maintenance
  - update
  
Checking modified files:
  stage: checking
@@ -49,7 +51,7 @@ Checking modified files:
YANG Validation Strict:
  stage: validation
  rules:
    - if: $CI_PIPELINE_SOURCE != "schedule"
    - if: $CI_PIPELINE_SOURCE != "schedule" && $TAG_5G_APIs == "None"
      changes:
        - yang-models/*
  before_script:
@@ -69,7 +71,7 @@ YANG Validation Strict:
YANG Additional 3GPP Checks:
  stage: validation
  rules:
    - if: $CI_PIPELINE_SOURCE != "schedule"
    - if: $CI_PIPELINE_SOURCE != "schedule" && $TAG_5G_APIs == "None"
      changes:
        - yang-models/*
  allow_failure: true
@@ -90,7 +92,7 @@ YANG Additional 3GPP Checks:
Validate OpenAPI:
  stage: validation
  rules:
    - if: $CI_PIPELINE_SOURCE != "schedule"
    - if: $CI_PIPELINE_SOURCE != "schedule" && $TAG_5G_APIs == "None"
      changes:
        - OpenAPI/*
  before_script:
@@ -110,7 +112,7 @@ Validate OpenAPI:
.Validate ASN.1 files:
  stage: validation
  rules:
    - if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE != "schedule"
    - if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE != "schedule" && $TAG_5G_APIs == "None"
      changes:
        - ASN/*
  before_script:
@@ -166,7 +168,7 @@ Delete old branches:
    # Installation of required software
    - apt-get update -qq && apt-get -qq install -y git curl jq > /dev/null
    - |
     curl "${CI_API_V4_URL}/projects/$TOOLS_3GPP_SCRIPTS_PROJECT_ID/repository/files/sa5%2Fdelete_old_branches%2Esh/raw?ref=oldBranches" >> delete_old_branches.sh
     curl "${CI_API_V4_URL}/projects/$TOOLS_3GPP_SCRIPTS_PROJECT_ID/repository/files/sa5%2Fdelete_old_branches%2Esh/raw?ref=master" >> delete_old_branches.sh
    - chmod +x delete_old_branches.sh
  script:
    - echo 'Delete old branches'
@@ -176,3 +178,59 @@ Delete old branches:
    paths:
      - logs/

Update externals:
  stage: update
  image: alpine:3.19
  tags:
    - docker
  
  allow_failure: true

  rules:
    - if: '$CI_COMMIT_BRANCH && $TAG_5G_APIs != "None" && $CI_PROJECT_NAME == "CH"' 
    
  before_script:
    - apk add --no-cache git bash
    - git config user.email "${GITLAB_USER_EMAIL}"
    - git config user.name "${GITLAB_USER_NAME}"

    # clone using OAuth / token
    - |
      git clone "https://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_HOST}/rep/${CI_PROJECT_PATH}.git" ${CI_PROJECT_NAME}

    - cd ${CI_PROJECT_NAME}
    - git checkout ${CI_COMMIT_BRANCH}

    - git submodule update --init OpenAPI/externals

  script:
    - |
      set -e

      echo "Requested 5G_APIs tag: $TAG_5G_APIs"

      cd OpenAPI/externals
      git fetch --tags

      if ! git rev-parse "refs/tags/$TAG_5G_APIs" >/dev/null 2>&1; then
        echo "WARNING: externals could not be updated — tag '$TAG_5G_APIs' not found"
        exit 1
      fi

      NEW_SHA=$(git rev-list -n 1 "$TAG_5G_APIs")
      CURRENT_SHA=$(git rev-parse HEAD)

      if [ "$NEW_SHA" = "$CURRENT_SHA" ]; then
        echo "externals already up to date at tag $TAG_5G_APIs"
        exit 0
      fi

      git checkout "$TAG_5G_APIs"
      cd ../..
      echo "externals has been updated to tag $TAG_5G_APIs"
      git add externals
      git commit -m "Update externals to tag $TAG_5G_APIs"
      git push origin HEAD:$CI_COMMIT_BRANCH

      echo "externals has been updated to tag $TAG_5G_APIs"
    
 No newline at end of file