def git_remote = "https://git.arti24.eu/gitea" def projects = [ "proxy-nginx", "arti24", "angular-services", "arti-angular-app" ] def programs = "/_sd_/_programs_" def git_take(projects, git_remote) { withCredentials([usernamePassword(credentialsId: '9e8daaa4-8c14-41ae-947b-65ba47965dfe', usernameVariable: 'GIT_USER', passwordVariable: 'GIT_PASS')]) { dir(programs) { projects.each { project -> if (fileExists(project)) { dir(project) { sh """ echo "=== Updating ${project} ===" git config --global --add safe.directory \$(pwd) git remote set-url origin https://${GIT_USER}:${GIT_PASS}@git.arti24.eu/gitea/${project}.git git fetch --prune origin git checkout -B main origin/main """ } } else { sh """ echo "=== Cloning ${project} (last year only) ===" git clone --shallow-since="1 year ago" https://${GIT_USER}:${GIT_PASS}@git.arti24.eu/gitea/${project}.git ${project} """ dir(project) { sh "git config --global --add safe.directory \$(pwd)" } } dir(project) { sh "git --no-pager log -n 1 --pretty=format:'%h %ad %s' --date=short" } } } } } pipeline { agent any stages { stage('Update from git') { steps { script { git_take(projects, git_remote) } } } } }