程序员的时间都去哪了?手动同步两个代码仓库,重复拉取再推送,不仅枯燥还容易出错。用持续集成(CI)的定时触发功能,一次配置永久生效,这才是真正的“一劳永逸”。
申请项目令牌
在开始配置自动化同步之前,你需要先创建一个项目令牌。这个令牌的作用是让持续集成任务拥有操作代码仓库的权限,相当于给机器人发了一张门禁卡。
进入你的项目页面,在左下角找到【项目设置】。点击后选择【开发者选项】,再进入【项目令牌】页面。点击右上角的「新建项目令牌」,输入一个你记得住的名称,比如“sync-token”,然后勾选“文件”和“持续集成”这两个权限。
创建成功后,系统会立刻生成一串用户名和密码。这个组合非常重要,你需要把它复制下来并妥善保存。同时,务必留意令牌的过期时间,如果令牌过期了,你配置好的自动化同步任务就会失效,到时候又得手动操作了。
创建持续集成任务
令牌准备好之后,我们就可以来创建真正干活的持续集成任务了。在你的项目里找到“持续集成”模块,新建一个构建计划,记得选择“自定义构建过程”这个选项。
给你的构建计划起一个清晰的名字,比如“代码仓库定时同步”。在“代码源”这一步,要选择你打算作为源头的那个代码仓库。接着,在“配置来源”那里勾选“使用静态配置的YAML”,然后就可以去编写具体的执行脚本了。
在流程配置界面,选择“文本编辑器”。你需要参考官方文档或者社区里通用的YAML示例,把拉取代码和推送代码的命令写进去。这个过程就像写一个简单的自动化脚本,告诉机器每一步该做什么。
添加环境变量
我们刚才申请的令牌信息,现在要派上用场了。为了保证安全,令牌的用户名和密码不能直接明文写在配置文件里,而是要通过环境变量的方式注入到构建任务中。
在持续集成任务的环境变量设置里,你可以添加两个变量。一个用来存放令牌的用户名,另一个用来存放密码。把变量名设置得规范一些,比如“REPO_USERNAME”和“REPO_PASSWORD”,然后在“默认值”里分别粘贴你之前复制的用户名和密码。
这样一来,在YAML配置文件里,你就可以通过引用这两个变量名来使用令牌信息。代码仓库的推送验证会通过这个令牌自动完成,既安全又方便,你也不用担心敏感信息会泄露。
pipeline {
agent any
stages {
stage('检出 CODING') {
steps {
checkout([
$class: 'GitSCM',
branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
])
}
}
stage('拉取 GitHub') {
steps {
sh "git remote add github https://github.com/phodal/ledge.git" // 此处需替换为您需要同步的 GitHub 代码仓库地址。
sh "git remote update github"
sh "git merge github/master"
}
}
stage('推送到 CODING') {
steps {
// 使用项目令牌环境变量 PROJECT_TOKEN_GK 和 PROJECT_TOKEN 来作为推送至 CODING 代码仓库所需的用户名和密码。
// 若希望推送到非本项目的代码仓库或第三方平台的代码仓库,需要自行更换为有效的凭据信息
sh "git push https://${PROJECT_TOKEN_GK}:${PROJECT_TOKEN}@e.coding.net/coding-public/ledge.git HEAD:master"
}
}
}
}
设置触发规则
自动化任务的核心在于“自动”二字,这就要靠触发规则来实现。在持续集成任务的设置页面里,找到“触发规则”这一项,然后添加一个新的“定时触发”规则。
你可以根据自己的需求来设定同步的频率。比如,如果你的团队提交代码很频繁,可以设置每隔一小时同步一次;如果只是想每天备份一次,设置成每天凌晨两点执行即可。GitHub的Web界面通常会提供Cron表达式或者简单的下拉选项供你选择。
除了定时触发,你还可以在这个页面探索其他的触发方式,比如当代码有新的提交时自动触发。将这些规则组合起来,就能把CI任务无缝地嵌入到你现有的开发工作流中,不需要任何人去手动点击。
触发持续集成任务
所有的配置都完成之后,我们先来手动测试一下,确保整个流程是通的。找到你刚刚创建好的构建计划,点击“立即构建”按钮,系统就会立刻开始执行你配置好的同步脚本。
在构建过程中,你可以实时查看控制台输出的日志。如果脚本编写正确,你会看到从源仓库拉取代码、然后向目标仓库推送代码的每一条命令记录。等待几分钟,如果构建状态显示为“成功”,那就大功告成了。
这时,你去检查一下目标代码仓库,会发现里面的代码已经和源仓库完全保持一致了。往后,这个同步任务就会按照你设定的时间规则,在后台静默执行,你再也不用为这件事分心了。
你是否也曾在手动同步代码时出过错?欢迎在评论区分享你的经历,点赞并转发这篇文章,让更多同事告别重复劳动。





