在上篇[hugo博客百度必应提交url]()提到了本地运行脚本的方案还不够优雅,也提了一嘴终极的优化方案。那就是将脚本运行这个活自动化,交给github的ci去跑。如此依赖对于写博客,这个url提交就变得无感,只需要专心写博客,然后推送上去发布就可以。下面介绍一下实现方法
github action
需要借助的工具是github的action工具,大多数用到hugo做博客的几乎都会用github,甚至有很多人都是直接把博客部署在github。所以基于github action比较方便,首先介绍一下github action:
GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI/CD 服务。之前一直都是 Beta 版本,正式版于 2019 年 11 月正式推出。
CI/CD 是三个过程的缩写,包括持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)。这三个过程的目标是提高软件开发的效率和代码的质量。
GitHub Action 可以帮助开发者自动化这三个过程,包括代码的编译、测试、部署等。用户可以在 GitHub 上创建自己的工作流,通过触发器(Triggers)和步骤(Steps)来自动化整个过程。
说人话就是这个工具可以把很多原本需要手动执行的工作任务给自动化了,比如支持推送代码到仓库后自动打包、测试和发布。总之放仓库里面的自动化脚本都可以借助这个服务进行自动化。
GitHub教程文档写的非常好,快速入门可以参考文档
https://docs.github.com/zh/actions/quickstart
我这里直接贴好我的工作流配置,直接拿去用就可以了
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: Python application
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: current commit
run: |
git show --pretty="" --name-only ${{ github.sha }}
- name: Push Urls
run: |
# run push url to baidu and bing
python3 push_url.py
然后,在仓库根目录准备好脚本文件push_url.py,以及脚本文件的依赖requirements.txt。脚本文件依赖为
Requests==2.31.0
脚本内容关注公众要回复“hugo自动化推送”获取脚本,每次提交推送后,执行的效果为