Skip to content![]()
扫码开始移动端阅读
初尝actions
共
1089
字 需要≈
5.445
分钟 other
需求产生
我有一些脚本,是那种浏览器插件用的,多个设备同步的时候,需要存放到github上,防止代码丢失。
在脚本少的时候,还没什么感觉,但是现在已经有3个了。我想着像我这样的男人,以后肯定还会写很多很多脚本。所以我需要一个目录,在打开github的时候就可以看到我有那些脚本,这样岂不是妙哉。
说干就干,我想了一下,在古希腊掌握github的神,王先生说过,Actions
牛逼!
尝试
首先介绍一下Actions
,首先,如果你之前没听过,那么很正常,其次,如果你听过,那么也很正常,因为这是一个褒贬不一的东西,有的人爱的死去活来,有的人恨的牙痒痒,有的人爱恨交加。
它是用来做什么的呢,简单来说就是用来做持续集成和部署的。那么,持续集成和部署又是什么东西呢?哥们,如果你这都不知道。不可能,不会有人不知道的。不知道的自己百度去。
新建一个脚本
TIP
这两种方法都可以,但是推荐使用第一种方法。
你可以在你的GitHub 仓库
Actions
标签页直接创建新的工作流。选择Set up a workflow yourself
或者从模板中选择。或者也在你项目的目录中
.github/workflows
目录下创建YAML
文件
开始编写
yaml
# 首先定义一个名字
name: Update File List
# 设置触发钩子(这太直观了,当push main 分支的时候触发)
on:
push:
branches:
- main
workflow_dispatch:
# 设置任务
jobs:
# 定义一个任务
update-readme:
# 运行在ubuntu上
runs-on: ubuntu-latest
steps:
# 定义一个步骤
- name: Checkout repository
uses: actions/checkout@v2
# 提取代码
- name: Generate file list
# 通过echo 生成一个文件,并写入内容
run: |
echo "### 统计信息:" > FILE_LIST.md
echo "" >> FILE_LIST.md
echo "| 名称 | 匹配规则 | 文件 | 描述 |" >> FILE_LIST.md
echo "|-------------|-----------------|----------|-------------|" >> FILE_LIST.md
# 查找仓库里script目录下所有js文件
for file in script/*.js; do
if [[ -f "$file" ]]; then
# 读取文件
content=$(cat "$file")
# 提取信息
name=$(echo "$content" | awk -F'// @name ' '{print $2}' | awk '{print $1}' | xargs)
match=$(echo "$content" | sed -n 's/.*\/\/ @match[[:space:]]*\(.*\)/\1/p' | xargs)
filename=$(basename "$file")
description=$(echo "$content" | sed -n 's/.*\/\/ @description[[:space:]]*\(.*\)/\1/p' | xargs)
# 添加到表格
echo "| $name | $match | [script/$filename](./script/$filename)| $description |" >> FILE_LIST.md
fi
done
echo "" >> FILE_LIST.md
echo "更新于 $(TZ='Asia/Shanghai' date '+%Y年%m月%d日 %H:%M:%S')" >> FILE_LIST.md
- name: Update README.md
run: |
# 删除原有统计信息
sed -i '/^### 统计信息:/,$d' README.md
# 添加新文件列表
cat FILE_LIST.md >> README.md
rm FILE_LIST.md # 删除临时文件
# 添加git commit
- name: Commit changes
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add README.md
git commit -m "Update file list in README.md" || echo "No changes to commit"
git push
测试
当我运行的时候遇到了一些问题,不过问题不大,都解决了
- 权限问题,在储存库中
Settings
选项卡中选择Actions
=>General
Actions permissions
=Allow all actions and reusable workflows
Workflow permissions
=Read and write permissions
Access
=Accessible from repositories owned by the user [xxx]
- 脚本调试
- 可以在
git Bash
中直接运行部分代码 - 或者下载一个vscode插件,在里面直接运行
- 可以在
运行结果
md
| 名称 | 匹配规则 | 文件 | 描述 |
| ---------------- | ------------------------------ | ---------------------------------------------------- | ------------------- |
| 儿歌下载器 | https://**********/* | [script/getErGe.js](./script/getErGe.js) | 2024/5/26 13:24:54 |
| 视频去质器 | https://**********/* | [script/getVideo.js](./script/getVideo.js) | 2023/9/28 0:00:00 |
| 去掉微软邮箱广告 | https://**********/* | [script/rm-hotmail-ad.js](./script/rm-hotmail-ad.js) | 2024/10/12 17:46:56 |
| bt刮削器 | https://**********.top/search* | [script/tmdb.js](./script/tmdb.js) | 2024/10/10 15:20:39 |
更新于 2024年10月14日 17:46:12
预览效果
名称 | 匹配规则 | 文件 | 描述 |
---|---|---|---|
儿歌下载器 | https://*********/ | script/getErGe.js | 2024/5/26 13:24:54 |
视频去质器 | https://*********/ | script/getVideo.js | 2023/9/28 0:00:00 |
去掉微软邮箱广告 | https://*********/ | script/rm-hotmail-ad.js | 2024/10/12 17:46:56 |
bt刮削器 | https://*********.top/search | script/tmdb.js | 2024/10/10 15:20:39 |
更新于 2024年10月14日 17:46:12
总结
这玩意让我想起了Docker
的Dockerfile
,原理都是差不多的。但是不需要部署,不需要打包,直接运行。这种感觉还是挺神奇的。上次体会到这种感觉还是在使用Jenkins的时候,当然,因为我刚开始玩,所以对这个东西还不是很了解。如果你有更好的方案,也欢迎在评论区分享。
转载请注明来源:LeeDaisen : 《初尝actions》