GitHub Actions 是一个强大的自动化工具,可以帮助开发者在 GitHub 上实现持续集成(CI)和持续部署(CD)流程。本文将详细介绍如何使用 GitHub Actions 实现 CI/CD 流程,包括创建仓库、配置工作流、编写工作流文件、触发和运行工作流、部署应用等内容。
GitHub Actions 简介
创建仓库
2. 点击右上角的
+
按钮,选择 New repository
。 3. 输入仓库名称、描述等信息,选择公开或私有仓库。
4. 点击
Create repository
按钮。 配置工作流
.github/workflows
目录。 2. 在该目录下创建一个 YAML 文件,文件名可以是
ci.yml
或其他有意义的名称。 3. 编写工作流文件,定义工作流的各个步骤。
示例工作流文件
name: Python application
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: pytest
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Deploy to production
run: |
# 部署命令
echo 'Deploying to production...'
触发和运行工作流
git add .github/workflows/ci.yml
git commit -m "Add CI/CD workflow"
git push origin main
- 在 GitHub 仓库页面,点击
Actions
标签页,查看工作流的运行状态。 - 可以手动触发工作流,或者等待代码推送到指定分支时自动触发。
部署应用
- 创建 Heroku 应用。
- 获取 Heroku API 密钥。
- 在 GitHub 仓库的
Settings
-> Secrets
中添加 HEROKU_API_KEY
和 HEROKU_APP_NAME
。 - 修改工作流文件,添加部署步骤:
- name: Deploy to Heroku
run: |
heroku container:login
heroku container:push web --app ${{ secrets.HEROKU_APP_NAME }}
heroku container:release web --app ${{ secrets.HEROKU_APP_NAME }}
- 部署到 AWS:
- 创建 AWS 账户和 S3 存储桶。
- 获取 AWS Access Key ID 和 Secret Access Key。
- 在 GitHub 仓库的
Settings
->Secrets
中添加AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
。 - 修改工作流文件,添加部署步骤:
- name: Deploy to AWS S3
run: |
aws s3 sync ./dist s3://${{ secrets.AWS_S3_BUCKET }}/
最佳实践
2. 分阶段部署:将部署过程分为多个阶段,如测试环境、预生产环境和生产环境。
3. 使用缓存:利用 GitHub Actions 的缓存功能,加快构建和测试速度。
4. 并行运行:使用
matrix
关键字并行运行多个任务,提高效率。 5. 定期运行:使用
schedule
关键字定期运行工作流,进行定期测试和部署。 总结
使用 GitHub Actions 可以轻松实现 CI/CD 流程。