Knight000's Blog

随缘写写,不定时更新

0%

GithunActionAutoSync2Gitee

GithubAction的创建

仓库内点击Actions,然后点击New workflow,里面有很多已经写好的,如果点击set up a workflow yourself的话,在右侧有Marketplace,可以直接搜索并添加别人的actions

另一种方法是在仓库的根目录/.github/workflows/内创建一个yml,里面写入action内容。

自动同步fork

正在使用的Workflow

虽然Github自带一个Sync Fork的按钮,但是每次都自己点总是麻烦的,所以有人搞了个Github Action来做这件事,https://github.com/tgymnich/fork-sync

创建新的workflow后输入里面的内容,以trackerlist为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
name: Sync Fork

on:
push: # push 时触发, 主要是为了测试配置有没有问题
schedule:
- cron: '* */24 * * *' # 每天一次
jobs:
repo-sync:
runs-on: ubuntu-latest
steps:
- uses: tgymnich/[email protected]
with:
token: ${{ secrets.TOKEN }} #Github Token,记得加入secrets
owner: ngosang # fork 的上游仓库 user
head: master # fork 的上游仓库 branch
base: master # 本地仓库 branch

settings/secrets(Secrets and variables)/actions里把Github的Token设置上,比如workflow写的是secrets.TOKEN,所以添加的时候Name填写TOKEN,Secret里填写Token内容

注意Token创建的时候要选择持续时间,然后权限要开启repoworkflow的权限

如果部署完成之后,运行显示错误是

repo-sync
Failed to create or merge pull request: HttpError: Validation Failed: {“resource”:”PullRequest”,”code”:”custom”,”message”:”No commits between knight000:master and ngosang:master”}

就证明初步成功了,因为你部署了workflow所以比原仓库新,等原仓库更新后点Re-run jobs就可以测试是否正确部署了。

自动提交修改到Gitee

以下action文件来自https://juejin.cn/post/6894928345830522887

把GITEE_PRIVATE_KEY、GITEE_TOKEN、GITEE_USER都添加到secrets里,然后Gitee内从URL导入仓库,创建同名仓库即可同步。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 通过 Github actions, 在 Github 仓库的每一次 commit 后自动同步到 Gitee 上
name: sync2gitee
on:
push:
branches:
- master
jobs:
repo-sync:
env:
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
gitee_user: ${{ secrets.GITEE_USER }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false

- name: sync github -> gitee
uses: Yikun/hub-mirror-action@master
if: env.dst_key && env.dst_token && env.gitee_user
with:
# 必选,需要同步的 Github 用户(源)
src: 'github/${{ github.repository_owner }}'
# 必选,需要同步到的 Gitee 用户(目的)
dst: 'gitee/${{ secrets.GITEE_USER }}'
# 必选,Gitee公钥对应的私钥,https://gitee.com/profile/sshkeys
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
# 必选,Gitee对应的用于创建仓库的token,https://gitee.com/profile/personal_access_tokens
dst_token: ${{ secrets.GITEE_TOKEN }}
# 如果是组织,指定组织即可,默认为用户 user
# account_type: org
# 直接取当前项目的仓库名
static_list: ${{ github.event.repository.name }}

因为有if: env.dst_key && env.dst_token && env.gitee_user这一句所以信息不足的情况下是会跳过执行,显示执行成功而不是显示错误,请注意。