Git Action 使用

1 views

Git Action 使用
Loading...

前言

写这篇文章主要是用来记录下在使用 Git Action 中遇到的问题和解决方法。 最近在 项目中增加了 每日热榜内容,来给大家提供下来自海外一些比较好的项目和 灵感 ,希望大家可以从中找到一些可以帮助自己的项目。有项目出海计划的也可以在上边发布下,一个是作为产品宣发的渠道,一个是据说这里有很多 VC 😏。

GitHub Actions 是什么

是一种工具,可让你在 GitHub 仓库中执行不同的自动化操作。它允许你创建自定义工作流,你可以使用这些工作流来自动化开发过程,例如构建、测试和部署代码。

将此工具与其他 GitHub 功能集成后,你可以转变你的项目管理程序,让每个参与其中的人都更加愉快,更加有参与感。

如何在你的仓库中设置 GitHub Actions

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

实现的功能就是:

  1. 每天下午4:40 执行定时任务
  2. 读取 secrets 的值
  3. 将脚本生成的文件 push 到主分支上
  4. 触发重新部署,构建新的产物

如何设置 secrets ?

配置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 连接。

生成的步骤如下:

  1. 在个人设置页面,找到 Setting
  2. 选择开发者设置 Developer setting 
  3. 选择个人访问令牌 Personal access tokens ,然后选中生成令牌 Generate new token

PAT

在设置 token 的过程中需要注意用途,需要把涉及到的权限都打开,避免因为权限导致无法使用。

修改 token 配置后记得重新生成,然后去更改 secrets 中对应的值。

到这里我们一个简单的 Action 就配置完了,我们先手动 run 一下看看效果,wtf ? 果然现实还是残酷的。

run action

error

第一次咋也不知道啥错,就试着改啊改,token 的权限改了,yml 脚本也改了,为啥还不行啊,然后试着看看网上有没有解决方案,现在的文章是真的水,GPT 好像也不知道哪的的问题。

终于在几个小时的搜索后发现了一篇好文,和我遇到的情况大体差不多。文章中提到 出现这种情况是因为 GitHub Actions 试图将修改的操作提交到仓库,但是被拒绝

yml 中增加下边的配置

name: Generate Daily Markdown
on:
schedule:
- cron: '40 8 * * *' # 每天UTC时间早上8:01(北京时间下午4:40自动运行)
workflow_dispatch: # 手动触发
# 增加下方代码
permissions:
contents: write

然后抱着试一试的心态重新 run 了一下,omg~ 成功了,感谢这位同学的好文章,哈哈~

成功

参考文章: