Git Action 使用
1 views
前言
写这篇文章主要是用来记录下在使用 Git Action 中遇到的问题和解决方法。
最近在
GitHub Actions 是什么
将此工具与其他 GitHub 功能集成后,你可以转变你的项目管理程序,让每个参与其中的人都更加愉快,更加有参与感。
如何在你的仓库中设置 GitHub Actions

在你的 GitHub 仓库中,点击顶部 Actions 选项。可以看到官方提供了一些案列,也可以自己从头开始创建一个 workflow 。
-
使用
GitHub提供的flow:根据项目的性质,你可以选择从可用列表中选择一个已经创建的工作流,也可以选择自己创建一个。由于你了解项目的全部内容以及可能需要自动化的内容,因此我建议你自己设置一个新的工作流程。这将使你更好地了解正在发生的事情。 -
新建
flow:请单击 Set up a workflow yourself(自行设置工作流程)。这将带你进入一个工作流创建界面,其中包含一个名为main.yml的新YAML文件。既然你选择编写自己的工作流程,在这里,我应该提到了解YAML非常重要。
我的 yml 文件如下:
name: Generate Daily Markdown
on: schedule: - cron: '40 8 * * *' workflow_dispatch: # 手动触发
jobs: build: runs-on: ubuntu-latest
steps: - name: Checkout repository - name: Set up Python - name: Install dependencies - name: Generate Markdown env: GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} PH_CLIENT_ID: ${{ secrets.PH_CLIENT_ID }} PH_CLIENT_SECRET: ${{ secrets.PH_CLIENT_SECRET }} - name: Commit files run: | git config --local user.email "ph-actions[bot]@users.noreply.github.com" git config --local user.name "ph-actions[bot]" git add . git commit -m "Generated daily content" - name: Push changes run: | git push https://${{ secrets.PAT }}@github.com/LaughingZhu/My_DevNow.git HEAD:main实现的功能就是:
- 每天下午4:40 执行定时任务
- 读取
secrets的值 - 将脚本生成的文件
push到主分支上 - 触发重新部署,构建新的产物
如何设置 secrets ?

如上图进行需要的配置即可。
主要的目的是可以动态的管理这些变量、避免敏感数据出现在代码文件中,特别是开源项目。
如何设置 token ?
可以看到我的 yml 文件最后一步就是将 脚本 生成的文件推送到主分支上,执行的命令是 git push https://${{ secrets.PAT }}@github.com/LaughingZhu/My_DevNow.git HEAD:main
PAT(Fine-grained personal access tokens) 是一种生成令牌的简单方法,可用于调用 GitHub API 并通过 HTTP 建立 git 连接。
生成的步骤如下:
- 在个人设置页面,找到
Setting - 选择开发者设置
Developer setting - 选择个人访问令牌
Personal access tokens,然后选中生成令牌Generate new token

在设置 token 的过程中需要注意用途,需要把涉及到的权限都打开,避免因为权限导致无法使用。
修改 token 配置后记得重新生成,然后去更改 secrets 中对应的值。
到这里我们一个简单的 Action 就配置完了,我们先手动 run 一下看看效果,wtf ?
果然现实还是残酷的。


第一次咋也不知道啥错,就试着改啊改,token 的权限改了,yml 脚本也改了,为啥还不行啊,然后试着看看网上有没有解决方案,现在的文章是真的水,GPT 好像也不知道哪的的问题。
终于在几个小时的搜索后发现了一篇好文,和我遇到的情况大体差不多。文章中提到 出现这种情况是因为 GitHub Actions 试图将修改的操作提交到仓库,但是被拒绝 。
在 yml 中增加下边的配置
name: Generate Daily Markdownon: schedule: - cron: '40 8 * * *' # 每天UTC时间早上8:01(北京时间下午4:40自动运行) workflow_dispatch: # 手动触发
# 增加下方代码permissions: contents: write然后抱着试一试的心态重新 run 了一下,omg~ 成功了,感谢这位同学的好文章,哈哈~

参考文章:
关于 GitHub Actions Error: Process completed with exit code 128. 的解决方案