惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享
L
LangChain Blog
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
F
Full Disclosure
T
The Blog of Author Tim Ferriss
月光博客
月光博客
有赞技术团队
有赞技术团队
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
博客园 - Franky
B
Blog
博客园_首页
C
CERT Recently Published Vulnerability Notes
Hugging Face - Blog
Hugging Face - Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
Kaspersky official blog
I
Intezer
P
Proofpoint News Feed
博客园 - 叶小钗
S
Schneier on Security
P
Privacy & Cybersecurity Law Blog
Recorded Future
Recorded Future
NISL@THU
NISL@THU
A
Arctic Wolf
Know Your Adversary
Know Your Adversary
C
Cyber Attacks, Cyber Crime and Cyber Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Register - Security
The Register - Security
C
Cisco Blogs
大猫的无限游戏
大猫的无限游戏
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
Forbes - Security
Forbes - Security
Project Zero
Project Zero
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Cisco Talos Blog
Cisco Talos Blog
D
Docker
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理

阿猪的博客

如何使用CNB构建Hexo项目并部署到腾讯云COS 好坑爹!派息后买入的股票怎么也扣股息税? 游哈尔滨 跨年往事 安装Ta-Lib时报错"Could not build wheels" 网站被恶意镜像了该怎么办 延迟退休正式到来!来看看有什么规定 我的基金怎么就被强制卖出了? Hexo-AlgoliaSearch插件报错“Error has occurred during indexing posts” 找工作避坑不完全指南 办理信用卡应该注意什么 华为Pad开启了“共享至电脑”,但是Windows下无法正常访问 webdriver-manager报错一例 Windows无法从环境变量中找到Python的正确位置 习大大2024年新年贺词 号外!号外!Twikoo可以直接屏蔽垃圾评论啦! 博客被攻击了 华为Pad开启了“共享至电脑”,但是Ubuntu下无法正常访问 如何恢复Etcher刻录过的U盘 如何在Ubuntu下快速切换网络代理状态 在腾讯云函数中使用Pandas报错`No module named 'numpy.core._multiarray_umath'` 对空的DataFrame使用apply方法未得到预期结果 SQLite中使用关键字作为列名称导致报错 Logging模块重复输出内容的原因及解决方法 如何在Selenium中保持网站的登录状态 如何下载与Chrome浏览器的版本相匹配的ChromeDriver 如何下载旧版本Python的安装包 如何为不同的Python项目自动选择不同的解释器 使用腾讯云函数搭建Web站点 WordPress CORS问题一例 踩坑阿里云函数计算搭建WordPress 在AWS Amplify中部署Jekyll站点 让Chirpy主题支持折叠展示代码块 实现ChatGPT的文字输出效果 python中使用'''注释代码后引起报错 使用python自带的email模块解析邮件 使用pandas_bokeh在地图上显示数据 如何通过复权因子计算复权价格 国内量化平台不完全汇总
如何将Coding的代码仓同步到Github
阿猪 · 2023-12-28 · via 阿猪的博客

  本文介绍使用Coding.Net的持续集成功能自动将Coding.Net的代码仓同步到GitHub的代码仓中的操作步骤。

一、需求

  小站前几天遭受境外攻击。为了应对再次出现类似的情况,阿猪在Vercel创建了一个镜像站点,专门用于分流境外的访问请求。为了保持镜像站与国内站点的同步,需要解决从Coding.Net向GitHub推送代码仓更新的问题。

  因为阿猪没有在coding.Net中找到类似GtiLab的”Mirroring repositories”这样现成的同步功能,所以想到了借助coding.Net的持续集成功能创建一个CI/CD脚本来实现需求。

  本着“有现成的就不要重复造轮子”的原则,阿猪决定先在网上查阅一下有没有现成的解决方案。但遗憾的是coding.Net比较小众,这方面的现成资料很少,好不容易在CSDN上找到一篇和我需求相符的文章,但是原作者提供的代码无法使用,会报错。(参考链接

  最后阿猪在群友和Chat GPT的帮助下,在原作者代码的基础上进行了多次修改、调试,终于成功搞定。

二、步骤1:在GitHub中新建一个代码仓并创建token

  首先新建一个代码仓,用于与coding.Net中的代码仓同步。

  因为GitHub已经禁止直接使用账号和密码的组合访问代码仓,所以我们还需要生成一个用于读写GitHub代码仓的token。

  依次点击页面右上角的头像 - “Settings”,进入“Settings”页面。然后点击页面左侧底部的“Developer Settings”,进入“Developer Settings”页面。

  接着依次点击左侧的“Personal access tokens” - “Tokens(classic)”,然后点击页面右侧的“Generate new token”按钮,并选择“Generate new toke (calssic)”。

  此时GitHub可能会要求你再次输入账号的密码来验证你的身份,接着会进入创建新Token的页面。

  在“Note”中随意填写一个名称,用于备注这个token。

  在“Expiration”中选择一个token有效期。阿猪因为懒,所以选择了“No expiration”永不过期。

  在“Select scopes”中配置你需要的权限。如果没有其他用途的话,只需要勾选“repo”这个大项即可。

  接着滑动到页面的最底端,点击“Generate token”按钮。此时,一个新的Token就诞生了。

  请注意,token只会显示一次,所以我们需要复制这个Token并将它保存到安全的地方,以便稍后使用。

三、步骤2:在Coding.Net中创建构建计划

  首先在Coding.Net中打开要同步的代码仓,或者该代码仓所属的项目,进入“项目概览”或者“代码仓库”界面,如下图所示:

  然后依次点击左侧导航栏中的“持续集成” - “构建计划”,并在出现的页面中点击“创建构建计划”。

  在接下来的“选择构建计划模板”页面中,滑动到页面的最底端,选择“自定义构建过程”。

  在接下来的“自定义构建过程”页面中,代码源选择“Coding”,代码仓选择要同步的代码仓,其他地方无需改动,然后点击底部的“确定”按钮。

  在接下来的“流程配置”页面中,点击“文本编辑器”按钮,将初始生成的Jenkins脚本替换为以下内容,然后点击“保存”按钮。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pipeline {
agent any
stages {
stage('检出') {
steps {
checkout([
$class: 'GitSCM',
branches: [[name: GIT_BUILD_REF]],
userRemoteConfigs: [[url: GIT_REPO_URL, credentialsId: CREDENTIALS_ID]]
])
}
}
stage('推送部署') {
steps {
echo '正在推送文件...'
sh 'git push -f https://$github_username:$github_token@github.com/<你的GitHub账号>/<你的GitHub代码仓名称>.git HEAD:refs/heads/master' # 此处替换为你的信息
echo '已完成文件推送.'
}
}
}
}

  接下来点击“保存”按钮旁边的“环境变量”按钮,创建两个环境变量,变量名称分别为github_usernamegithub_token,默认值中分别填入你的GitHub账号和先前创建的GitHub代码仓token,类型选择“字符串”,建议同时勾选“保密”,然后点击“确认”按钮。

  所有的设置到此为止就完成了,我们可以手动点击“立即构建”按钮来看看效果。顺利的话,可以看到“构建成功”的提示。再打开GitHub看看,新建的空代码仓也同步成功了。大功告成!

  手动点击“立即构建”的时候,可能会弹出窗口要求你确认启动参数(就是之前设置的环境变量)。后续代码仓有新的commit时,会自动触发运行这个Jenkins脚本,无需人工干预,从而实现将Coding.Net的代码仓自动同步到GitHub的需求。