如何使用Github Action自动更新项目文件

如何使用 GitHub Action 自动更新项目文件

温馨提示:本文使用 ChatGPT 润色

参考链接:

GitHub Actions 文档:docs.github.com/zh/actions

管理个人资料自述文件:docs.github.com/zh/account-…

草梅友仁的自述文件:github.com/CaoMeiYouRe…

前言

利用GitHub Action的自动化能力,实现对项目内的文件自动同步,从github上的公开项目中同步所需文件到自己的项目中。

本例中为了实现对privacy-protection-tools/anti-AD中的anti-ad-surge.txt文件转换为clash支持的list格式。

正文

基础介绍

在此之前,需要先了解下什么是GitHub Actions 文档 - GitHub 文档,对此不太了解的可点击参考链接了解详细内容。

GitHub Action

目的和好处

使用 GitHub Actions 则是为了借助 GitHub 提供的免费 CI/CD 能力,自动同步博客或其他内容,从而减少工作量。

详细步骤

使用 GitHub Action 可以更新仓库的指定文件,在此以anti-ad-clash这个仓库为例。

  1. 新建一个公共仓库

  2. 在Actions中新增一个workflow

  3. 配置好action,设置好定时任务,自动执行更新。

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
35
36
37
38
39
40
41
42
43
44
45
name: sync anti-ad from privacy-protection-tools/anti-AD

on:
workflow_dispatch:
push:
branches: [ master ]
schedule:
- cron: '30 19 * * *'

permissions:
contents: write

jobs:
build:

runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: download the ad-list
# run: git clone --depth 1 https://github.com/privacy-protection-tools/anti-AD.git ~/temp
run: |
wget -q https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-surge.txt
- name: rename tile to list
run: |
mv -f anti-ad-surge.txt anti-ad-clash.list
- name: Commit files
id: commit-files
run: |
if [ -n "$(git status --porcelain anti-ad-clash.list)" ]; then
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add .
git commit -m "pull newest list"
echo "hasChange=true" >> $GITHUB_OUTPUT
else
echo "No changes detected"
fi
- name: Push changes
uses: ad-m/github-push-action@master
if: ${{ steps.commit-files.outputs.hasChange == 'true' }}
with:
github_token: ${{ secrets.PERSON_TOKEN }}
branch: 'main'
repository: 'conscloud/anti-ad-clash'

请注意 Commit files 部分,这里只指定了在更新 anti-ad-clash.list 文件时才会进行 commit,否则不会 commit。而在 Push changes 部分,只有在 hasChange 的情况下才会执行,避免了在没有更新时提交 commit 导致出错的问题。


如何使用Github Action自动更新项目文件
http://www.okko.tk/2023/12/17/如何使用Github-Action自动更新项目文件/
作者
ZhJy
发布于
2023年12月17日
许可协议