Uploaded image for project: 'CKI Project'
  1. CKI Project
  2. CKI-56

speed up the sync code from kernel repository to my private repository

      Background:
      tmt does take so long (30 minutes) to clone the code from https://gitlab.cee.redhat.com/kernel-qe/kernel/-/tree/master/networking?ref_type=heads.

      So I create a repository(https://gitlab.cee.redhat.com/kernel-qe/networking/sync_kernel_networking) to sync code from kernel.

      I try to write a gitlab-ci.yml in sync_kernel_networking.
      ```
      variables:
      OLD_REPO_URL: "https://gitlab.cee.redhat.com/kernel-qe/kernel.git"
      SYNC_BRANCH: "master"
      NEW_REPO_URL: "https://gitlab.cee.redhat.com/kernel-qe/networking/sync_kernel_networking.git"
      default:
      artifacts:
      expire_in: 1 week

      stages:

      • sync

      workflow:
      rules:

      • if: '$CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_BRANCH == "master"'
      • when: never

      sync_from_kernel_qe_repo:
      stage: sync
      before_script:

      • export PATH=$HOME/.local/bin:$PATH
      • git config --global user.email "mhou@redhat.com"
      • git config --global user.name "Minxi Hou"
      • mkdir -p ~/.ssh
      • echo "$NEW_REPO_SSH_PRIVATE_KEY" | base64 -d > ~/.ssh/id_rsa
      • chmod 600 ~/.ssh/id_rsa
      • ssh-keyscan -H gitlab.cee.redhat.com >> ~/.ssh/known_hosts
        script:
      • git clone --no-tags --single-branch --branch ${SYNC_BRANCH} ${OLD_REPO_URL} old-repo
        echo "Syncing networking directory from old repository"
        pushd old-repo
        echo "Extracting networking subtree..."
        git subtree split --prefix=networking -b networking-sync
        git remote add new-repo ${NEW_REPO_URL}
        git fetch new-repo main || true
        LATEST_REMOTE=$(git rev-parse new-repo/main || echo "")
        LATEST_SUBTREE=$(git rev-parse networking-sync)
        echo "kernel-qe/networking/sync_kernel_networking.git latest: $LATEST_REMOTE"
        echo "kernel-qe/kernel.git latest: $LATEST_SUBTREE"
        if [ "$LATEST_REMOTE" = "$LATEST_SUBTREE" ]; then
        echo "No new networking commits, skipping push."
        else
        echo "New commits detected, pushing..."
        git push new-repo networking-sync:master --force
        fi
        echo "Complete history with original authors has been pushed to the new repository."
        popd
        rm -rf old-repo
        only:

      • master
        timeout: 2h

      ```

      Jira: CKI-56

              Unassigned Unassigned
              rh-ee-tdaapare Tales Lelo da Aparecida
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: