10分钟上手:用免费GitHub Actions搭建你的第一个CI/CD流水线
零基础学会用GitHub Actions自动构建和部署应用,10分钟跑通第一个CI/CD流水线。
你是不是也遇到过这种情况:手动部署应用花了好几个小时,结果漏了一个步骤,部署失败,心态爆炸?别怕,今天教你用免费的GitHub Actions(GitHub提供的一种自动化工具,可以帮你自动执行代码构建、测试、部署等任务)搭建一个CI/CD流水线,10分钟搞定,以后代码一推送,自动部署,省时省力。
准备工作
- 一个GitHub账号(全球最大的代码托管平台,用来存代码和运行自动化任务)。如果没有,先去github.com注册,免费。
- 一个代码仓库(Repository),里面有你想要部署的应用代码。可以是任意Python项目,比如一个简单的Flask应用。
- 一台服务器或者云主机(可选,但推荐用Vultr或DigitalOcean的免费试用额度,后面会讲)。
第一步:创建GitHub Actions工作流文件
在GitHub仓库中,点击顶部“Actions”标签,然后点击“New workflow”。你会看到一些模板,我们选择“Simple workflow”或者直接自己写。在仓库根目录下创建.github/workflows/deploy.yml文件,内容如下:
name: Deploy to Server
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run deployment script
run: python deploy.py这个文件的意思是:每次你推送代码到main分支(仓库的主分支,通常用来放稳定代码),GitHub就会自动在Ubuntu虚拟机上运行这些步骤。
第二步:配置环境变量
为了避免把密码、密钥直接写在代码里,我们需要设置环境变量(一种存储在运行环境中的变量,可以安全地保存敏感信息)。在GitHub仓库的“Settings” -> “Secrets and variables” -> “Actions”中,点击“New repository secret”,添加你的服务器IP、用户名、密码或SSH密钥等。然后在工作流文件中引用它们,比如:
- name: Deploy
env:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
PASSWORD: ${{ secrets.PASSWORD }}
run: python deploy.py第三步:编写部署脚本
在仓库根目录创建一个deploy.py文件,内容大致是:连接服务器,上传代码,重启服务。下面是一个简单的示例(假设你用的是SSH和scp):
import os
import subprocess
host = os.environ['HOST']
username = os.environ['USERNAME']
password = os.environ['PASSWORD']
# 打包代码
subprocess.run(['tar', '-czf', 'app.tar.gz', '.'])
# 上传到服务器
subprocess.run(['sshpass', '-p', password, 'scp', 'app.tar.gz', f'{username}@{host}:/home/{username}/'])
# 在服务器上解压并重启服务
subprocess.run(['sshpass', '-p', password, 'ssh', f'{username}@{host}', 'tar -xzf app.tar.gz && systemctl restart myapp'])注意:生产环境建议使用SSH密钥而不是密码,这里为了演示简单用了密码。实际使用时,强烈建议用SSH密钥(一种更安全的登录方式,不需要输入密码)。
第四步:测试流水线
将代码推送到GitHub仓库的main分支:
git add .
git commit -m "Add CI/CD pipeline"
git push origin main然后去GitHub仓库的“Actions”标签页,你会看到一个新的工作流正在运行。点击进去可以查看实时日志。如果一切顺利,你的应用就自动部署到服务器上了!
常见坑与提醒
- 权限问题:确保你的服务器允许SSH登录,并且防火墙开放了相关端口。
- 依赖安装失败:检查
requirements.txt文件是否包含了所有依赖,并且Python版本与服务器一致。 - 环境变量未设置:如果脚本报错找不到变量,记得在GitHub Secrets中添加对应的键值对。
下一步可以做什么
现在你已经有了一个基础的CI/CD流水线,可以进一步扩展:
- 添加自动化测试:在部署前运行单元测试,确保代码质量。
- 部署到云服务器:试试Vultr或DigitalOcean的免费额度(链接见原文),把应用部署到云端。
- 部署机器学习模型:将训练好的模型打包成API,用这个流水线自动更新。
学会自动化部署,你就告别了手动上传文件的痛苦,把时间花在更有价值的事情上吧!
内容来源
DEV Tutorial
发布时间
2026-07-11 01:32