GitHub Actions自动化工作流

跑单元测试、打包代码、部署到服务器、发布版本号,能在代码提交的一瞬间自动完成。

什么是 GitHub Actions?

简单来说,GitHub Actions 是一个事件驱动的自动化平台。
事件 (Event):当你推送代码(push)、发起合并请求(pull request)或者给仓库打星(star)时。
动作 (Action):它会自动触发预先定义好的任务。
它直接集成在 GitHub 中,无需像 Jenkins 那样额外部署服务器,而且对于开源项目是完全免费的。

场景一:Python 项目——从测试到 Release 自动发布

对于 Python 开发者,最优雅的工作流是:推送到主分支跑测试 -> 打版本标签(Tag)自动生成 Release 并上传 Wheel 包。

name: Python Release Pipeline

on:
push:
branches: [ main ]
tags: [ 'v*' ] # 匹配 v1.0.0, v2.1.0 等

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- run: pip install pytest && pytest

publish:
needs: test
if: startsWith(github.ref, 'refs/tags/') # 只有推标签时才执行
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Wheel
run: |
pip install build
python -m build
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: dist/* # 自动将打包后的 whl 和 tar.gz 上传到 Release 附件
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

场景二:前端项目——自动构建并部署到 GitHub Pages

如果你有一个 React、Vue 或静态博客(Hexo/Hugo),你一定希望代码一提交,网站就自动更新。

  • 核心逻辑:安装依赖 -> 构建静态文件 -> 推送到 gh-pages 分支。
name: Deploy Website

on:
push:
branches: [ main ]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- run: npm install
- run: npm run build # 产出通常在 dist 文件夹

- name: Deploy to GitHub Pages
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: dist # 部署构建后的文件夹
branch: gh-pages # 部署到的目标分支

场景三:DevOps 进阶——自动构建 Docker 镜像并推送到仓库

对于微服务开发者,自动更新 Docker 镜像并推送到 Docker Hub 或阿里云镜像服务是刚需。

  • 亮点:利用 secrets 保护账号密码,利用 tags 自动给镜像打版本。
name: Docker Build and Push

on:
push:
tags: [ 'v*' ]

jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v5
with:
push: true
tags: user/my-app:latest, user/my-app:${{ github.ref_name }} # 同时打 latest 和版本号标签

场景四:定时任务(Cron Jobs)——你的云端小秘书

GitHub Actions 不仅能跟随代码变动触发,还能定时运行。比如:每天早上 8 点抓取天气、自动签到、或者定时清理数据库。

name: Daily Cron Job

on:
schedule:
- cron: '0 0 * * *' # 每天北京时间上午 8 点运行 (UTC 0:00)
workflow_dispatch: # 允许手动在页面点击运行

jobs:
morning-task:
runs-on: ubuntu-latest
steps:
- name: Run my script
run: curl https://my-api.com/daily-checkin?token=${{ secrets.MY_TOKEN }}

总结

GitHub Actions 的强大之处在于它消除了“环境一致性”的问题。无论是 Python 的打包、前端的部署,还是 Docker 的分发,你只需要在 .github/workflows 下写好那几十行 YAML 脚本,剩下的就交给 GitHub 的服务器去处理。


相关资源

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇