From c5874cf685890f4c167f0d6647d81f9da4d3d9e1 Mon Sep 17 00:00:00 2001 From: Fahim Date: Fri, 28 Jan 2022 20:08:39 +0600 Subject: [PATCH] 4074-add_update_with_upstream_pipeline issue: https://gitlab.e.foundation/e/backlog/-/issues/4074 Add new gitlab pipeline stage `update-from-upstream` to update main branch with the upstream's main branch using gitlab's schedule feature. --- .gitlab-ci.yml | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ac3fb49212..4328109cf3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ image: "registry.gitlab.e.foundation:5000/e/apps/docker-android-apps-cicd:latest" stages: +- update-from-upstream - build before_script: @@ -19,3 +20,55 @@ build: artifacts: paths: - app/k9mail/build/outputs/apk/ + +.update-from-upstream: + image: registry.gitlab.e.foundation/e/tools/docker-tools:latest + stage: update-from-upstream + rules: + - if: '$CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_REF_NAME == $LOCAL_BRANCH' + variables: + CI_PROJECT_SSH_URL: git@gitlab.e.foundation:$CI_PROJECT_PATH + GIT_STRATEGY: none + before_script: + - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )' + - eval $(ssh-agent -s) + - echo "${SSH_E_ROBOT_PRIVATE_KEY}" | tr -d '\r' | ssh-add - + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + - echo "${SSH_KNOWN_HOSTS}" > ~/.ssh/known_hosts + - echo "${SSH_KNOWN_HOSTS}" + - chmod 644 ~/.ssh/known_hosts + - git config --global user.email $GITLAB_USER_EMAIL + - git config --global user.name "$GITLAB_USER_NAME" + - cd $CI_BUILD_DIR + - rm -rf $CI_PROJECT_DIR + - git clone $CI_PROJECT_SSH_URL $CI_PROJECT_DIR + - cd $CI_PROJECT_DIR + script: +# update $UPSTREAM_BRANCH & tags + - git fetch origin + - git checkout $UPSTREAM_BRANCH + - git remote add upstream $UPSTREAM_URL + - git fetch upstream + - git pull upstream $UPSTREAM_DEFAULT_BRANCH + - git push origin $UPSTREAM_BRANCH + - git push origin --tags +# checkout to latest tag commit to $TEMP_LATEST_TAG_BRANCH + - git checkout $(git describe --tags --abbrev=0) + - git checkout -b $TEMP_LATEST_TAG_BRANCH +# merge $LOCAL_BRANCH with $TEMP_LATEST_TAG_BRANCH & push + - git checkout --track origin/$LOCAL_BRANCH + - git merge $TEMP_LATEST_TAG_BRANCH + - git push +# remove unwanted local branch & remote + - git branch -D $TEMP_LATEST_TAG_BRANCH + - git remote remove upstream + +update-default-branch: + extends: .update-from-upstream + variables: + LOCAL_BRANCH: main + UPSTREAM_BRANCH: upstream/master + UPSTREAM_DEFAULT_BRANCH: main + UPSTREAM_URL: https://github.com/k9mail/k-9.git + TEMP_LATEST_TAG_BRANCH: latest_upstream_tag_branch \ No newline at end of file -- GitLab