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

Edited by CKI Bot