轻量化 CI/CD 流程设计
GitHub Actions 为 Spring Boot 项目提供了一种无需第三方工具的轻量化 CI/CD 解决方案。核心流程包含代码检查、构建、测试和部署四个阶段,通过 YAML 文件定义工作流。
基础环境配置
在项目根目录创建 .github/workflows/ci-cd.yml 文件。配置 Java 环境并缓存依赖加速构建:
name: Spring Boot CI/CD
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
构建与测试阶段
添加自动化测试和构建步骤,确保代码质量:
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Run Tests
run: mvn test
- name: Verify Code Quality
run: mvn checkstyle:check
自动化部署配置
针对不同分支设置差异化部署策略。生产环境部署示例:
deploy:
needs: build
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
- name: Build JAR
run: mvn -B package -DskipTests
- name: SSH Deployment
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SSH_USER }}
password: ${{ secrets.SSH_PASS }}
script: |
systemctl stop springboot-app
rm -rf /opt/app/*.jar
mv target/*.jar /opt/app/
systemctl start springboot-app
关键优化技巧
- 矩阵构建:同时测试多版本 JDK 兼容性
strategy:
matrix:
java: [ '11', '17', '21' ]
- Artifact 存储:打包重要产物供下载
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: springboot-app
path: target/*.jar
- Docker 集成:添加容器化构建步骤
- name: Build Docker Image
run: docker build -t ${{ secrets.DOCKER_USER }}/springboot-app .
- name: Push to Docker Hub
run: |
echo ${{ secrets.DOCKER_PASS }} | docker login -u ${{ secrets.DOCKER_USER }} --password-stdin
docker push ${{ secrets.DOCKER_USER }}/springboot-app
安全最佳实践
- 使用 GitHub Secrets 管理敏感信息
- 为生产部署配置审批工作流
environment:
name: production
url: https://yourapp.com
- 添加漏洞扫描步骤
- name: Dependency Check
uses: dependency-check/Dependency-Check@main
with:
project: 'springboot-app'
format: 'HTML'
该方案完整实现从代码提交到生产部署的自动化流程,平均构建时间可控制在 3-5 分钟。通过 GitHub Marketplace 的 4000+ 现成 Action,可进一步扩展通知、监控等功能。
910

被折叠的 条评论
为什么被折叠?



