password
URL
type
status
date
slug
summary
tags
category
icon
周起始
标签
是否汉化
系统之思
对于一个系统来说,整体大于部分之和。任何一个系统都包括三种构成要件:要素、连接、功能或目标。它具有适应性、动态性、目的性,并可以自组织、自我保护与演进。
Github Action 简单实践
目标
假定当前项目下有一个
script.py
爬虫脚本,我们想要定期执行这个 Python 爬虫,并将运行结果(JSON 文件)推送回仓库。编写
首先需要在项目的根目录下创建
.github/workflows
文件夹,并且在文件夹下创建 YAML 文件用于编写执行脚本,如 action.yml
。名称
首先先要给整个工作流程设置一个名称:
触发条件
接着设定该 Github Action 要在什么时候触发。我需要这个爬虫脚本每天 12 点自动运行,于是:
这里要注意的是时区问题,cron 用的是 UTC 时间,所以我们通常需要用北京时间减 8 小时。
触发条件还有许多种,例如推送时运行
push:
等。环境变量
这里设定环境变量是因为接下去需要用到本地时间的设定。
工作指令
接下去就要正式设定整个工作流程的具体命令了。格式如下:
jobs
下可以包含一个或多个任务,任务之间可以顺序的执行,也可以同时执行。这里我只需要执行一个任务即可。运行环境
在单个任务中,首先需要设置的是虚拟的运行环境,如:
步骤
接下来就要设置每个步骤的指令,首先要 checkout the repository under
$GITHUB_WORKSPACE
:因为是 Python 爬虫,所以需要安装对应的依赖:
最后,需要把生成的文件提交回仓库:
这里有几点需要注意:
- 首先,很多教程里 git 的名字和邮箱都是直接明文写在了配置文件里,这样其实有隐私泄露的风险。正确的做法应该是将信息写入到仓库的
Setting
-Secrets
中并在运行时读取。
- 如果不想把提交设置为自己,可以配置成:
完整的配置代码
GitHub Actions 中 python 脚本获取仓库 secrets
GitHub Actions 提供的 CI/CD(持续集成/持续部署) 服务非常方便,可以帮助我们自动完成一些功能。但是当我们在跑一些脚本的时候,不免会存放一些密码、密钥之类的内容。我们期望跑脚本的同时,不以明文的方式存储这类密码
将 GitHub Actions 与 GitHub 仓库的 Secrets 结合,可以轻松帮助我们满足这项需求
下面以基于 ServerChan 的 LeetCode 周赛提醒功能为例
添加 Secrets
ServerChan 的推送功能需要设置 SCKEY 字段,但是该字段不应以明文方式存储
打开仓库「Settings」中的「Secrets」,点击「New secret」
配置 GitHub Actions
用来向 ServerChan 接口发送请求的文件名为 main.py
git bash 中键入命令,新建文件
编辑 leetcode-weekly.yml,键入以下内容
其中,在 Working 步骤中,指定了环境变量 SCKEY,并将它的 value 设为 secrets.SCKEY
python 脚本中获取环境变量
import os
同理,对于一些需要登录的脚本也可以使用以上方式实现加密
自动将所有GitHub secrets设置为环境变量
要将所有GitHub secrets设置为环境变量,可以使用GitHub的API来获取存储库的secrets列表,并将每个secret设置为本地环境变量。
以下是一个示例Python代码,使用GitHub的REST API v3来获取存储库的secrets列表,并将每个secret设置为环境变量:
在上面的代码中,
access_token
是你的GitHub访问令牌,repo_owner
是存储库的所有者,repo_name
是存储库的名称。请确保将这些值替换为你自己的信息。代码中的
requests.get()
方法发送一个GET请求来获取存储库的secrets列表。然后,通过循环遍历secrets列表,并使用os.environ
将每个secret设置为本地环境变量。最后,我们可以使用
os.environ['SECRET_NAME']
来访问设置的环境变量。请将SECRET_NAME
替换为你想要访问的特定secret的名称。离开乏味的皮囊,自由的灵魂在路上
- Name: Alan Hsu
- Tag: 随感、技术、经验、旅行、推荐、生活、音乐、电影 etc.
- Email:xulanzhong521gmail.com
- Twitter:@AlanHsu521
- Telegram:@AlanHsu521
- WeChat: Alan_Hsu_521
- Github: https://github.com/xsoway/
- Author:Alan_Hsu
- URL:https://xmylog.com/article/articles_github_action
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!