使用github actions,将私有仓库的构建文件发布到另一个公开仓库,并同步到gitee

简介: 使用github actions,将私有仓库的构建文件发布到另一个公开仓库,并同步到gitee

github actions

语法格式,编写自己的actions,会用到@actions/core用来和actions交互。

其实这些action的逻辑也不是非常难,都是一些本地的读写操作,没有什么黑科技,可以认为GitHub在执行这些action的时候,会分配一台真正的物理机来执行这些action的代码,至于和GitHub仓库的交互,都是通过api完成的。

需求

仓库A是不开源的,是我的项目源码,但是我想要将仓库A的build文件,上传到另外一个GitHub公开仓库B的main分支,同时仓库B的main分支已经设置为pages,这样就能方便别人访问和使用。

设置仓库B的pages

image.png

编写仓库A的actions文件
yaml
复制代码
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: install
        run: npm run installForce
      - name: pack web
        run: npm run ccp-pack
      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with: 
          personal_token: ${{ secrets.PERSONAL_TOKEN }} # 令牌
          publish_dir: ./web # 构建后的文件目录
          external_repository: tidys/bmfont-online # 仓库B,格式为:user/repo
          publish_branch: main # 仓库B的分支

我使用的是peaceiris/actions-gh-pages@v3,其他也尝试了,并不是很好用。

部署到其他仓库的配置里面,我使用的是person_token,文档上用的是ACTIONS_DEPLOY_KEY,没整明白怎么搞这个key,但是人家说person_token也支持,所以我就使用的是这个,并且人家也说了自己支持的token类型

配置person_token

生成token

点击头像/Settings,在左侧最下边找到Developer settings,选择Tokens (classic)/Generate new token

image.png

注意过期时间选择为不过期,并且追加repo的权限

image.png

此时会生成一个新的token,并且之后展示一次,记得保存,后续会使用到。

image.png

设置token

回到仓库A中,配置新的secrets

image.png

secret.name为PERSONAL_TOKEN,value就是刚刚生成的token值

image.png

验证

再次执行acions,如果一切顺利的话,如下图所示:

image.png

回到仓库B,可以看到仓库B已经被正确同步了

image.png

遇到的问题

github actions 报错nodejs /usr/bin/env: ‘node\r’: No such file or directory Error: Process completed with exit code 127.

因为我的nodejs cli是通过windows打包的,而actions使用Ubuntu,换成windows即可

在cc-plugin v2.1.26修复了该问题

同步到Gitee

发现会删除所有的文件,可以通过该选项规避,这也是通过看这个action的源码发现的逻辑。

vbnet

复制代码

keep_files: true

同步gitee使用的是gitee-pages-action,举例:

gitee的克隆地址为:git@gitee.com:tidys/bmfont-online.git

配置gitee的公钥,使用ssh-keygen生成SSH Key

GIThub仓库一共需要配置3个变量

  • GITEE_PWD:your password
  • GITEE_REPO: tidys
  • GITEE_RSA_PRIVATE_KEY: private key,也就是.ssh/id_rsa这个文件里面的内容,前提是需要将你本机的ras也配置到git仓库中。

readme有详细的参数介绍



目录
相关文章
|
1月前
|
网络协议 Linux Android开发
解决GitHub无法访问的问题:手动修改hosts文件与使用SwitchHosts工具
解决GitHub无法访问的问题:手动修改hosts文件与使用SwitchHosts工具
113 1
|
1月前
GitHub和Gitee的基本使用和在IDEA中的集成
GitHub和Gitee的基本使用和在IDEA中的集成
26 0
|
1月前
|
数据采集 人工智能 Rust
『GitHub项目圈选周刊01』一款构建AI数字人项目开源了!自动实现音视频同步!
『GitHub项目圈选周刊01』一款构建AI数字人项目开源了!自动实现音视频同步!
209 0
|
16天前
|
存储 安全 Serverless
用 Github Actions 自动部署阿里云函数计算 FC
介绍了如何配置阿里云函数计算(FC)与GitHub Actions集成以实现自动部署。首先在阿里云创建函数,然后在项目根目录创建`s.yaml`文件配置Serverless Devs。接着在GitHub仓库中设置 Secrets 存储阿里云账号信息,并创建名为`aliyun-fc-deploy.yaml`的工作流文件来定义GitHub Actions。当代码推送到`master`分支时,Actions会自动部署到函数计算。最后,成功配置后,提交代码会触发自动部署,并可在GitHub Actions和阿里云控制台查看部署状态。
409 3
|
2月前
|
安全 Shell 网络安全
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
131 0
|
2月前
|
网络安全
github或gitee配置ssh
github或gitee配置ssh
23 0
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
|
存储 Linux API
如何在GitHub正确地使用 Curl 下载文件?
Curl是在 Linux 终端中下载文件的绝佳工具。
658 0
|
JavaScript 开发工具 git
Git 技术篇 - Github在项目分支里下载某个文件方法,Github项目里的单个js文件下载实例演示
Git 技术篇 - Github在项目分支里下载某个文件方法,Github项目里的单个js文件下载实例演示
395 0
Git 技术篇 - Github在项目分支里下载某个文件方法,Github项目里的单个js文件下载实例演示