内容大纲
- 1. CI/CD简介
- 2. Jenkins安装与配置
- 3. Jenkins Pipeline
- 4. GitHub Actions
- 5. GitLab CI/CD
- 6. CI/CD最佳实践
- 7. CI/CD安全
- 8. CI/CD监控与优化
1. CI/CD简介
CI/CD是持续集成(Continuous Integration)和持续部署(Continuous Deployment)的缩写,是一种软件开发实践,旨在通过自动化流程提高软件开发和交付的效率和质量。
- 持续集成(CI):开发人员频繁地将代码集成到共享仓库中,每次集成都会触发自动化构建和测试,以尽早发现问题。
- 持续部署(CD):通过自动化流程将通过测试的代码部署到生产环境,实现快速、可靠的软件交付。
CI/CD的主要优势包括:
- 提高代码质量和可靠性
- 减少手动错误和部署风险
- 加快开发和交付速度
- 提高团队协作效率
- 实现版本控制和回滚能力
风哥风哥提示:CI/CD是现代DevOps实践的核心组成部分,对于提高软件交付质量和速度至关重要。
2. Jenkins安装与配置
2.1 安装Jenkins
#
# 更新包管理器
#
apt update
#
# 安装Java
#
apt install -y openjdk-11-jdk
#
# 添加Jenkins仓库
#
wget -q -O – https://pkg.jenkins.io/debian/jenkins.io.key | apt-key add –
#
sh -c ‘echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list’
#
# 安装Jenkins
#
apt update && apt install -y jenkins
#
# 启动Jenkins服务
#
systemctl start jenkins
#
# 启用Jenkins服务自启动
#
systemctl enable jenkins
2.2 配置Jenkins
- 访问Jenkins web界面:
http://your-server-ip:8080 - 获取初始管理员密码:
#
cat /var/lib/jenkins/secrets/initialAdminPassword
$
1234567890abcdef1234567890abcdef
- 输入初始密码,然后按照向导安装推荐插件
- 创建管理员用户
- 配置Jenkins URL
- 完成配置,进入Jenkins dashboard
3. Jenkins Pipeline
3.1 创建Pipeline项目
- 在Jenkins dashboard中点击「新建项目」
- 输入项目名称,选择「Pipeline」类型
- 点击「确定」进入配置页面
- 在Pipeline部分,选择「Pipeline script from SCM」
- 选择Git作为SCM,输入仓库URL和凭证
- 指定Jenkinsfile路径(默认为Jenkinsfile)
- 点击「保存」
3.2 编写Jenkinsfile
pipeline {
agent any
stages {
stage('检出代码') {
steps {
checkout scm
}
}
stage('构建') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('测试') {
steps {
sh 'npm run test'
}
}
stage('部署') {
steps {
sh 'npm run deploy'
}
}
}
post {
success {
echo '构建成功!'
}
failure {
echo '构建失败!'
mail to: 'admin@fgedu.net.cn', subject: '构建失败', body: '构建失败,请查看Jenkins日志'
}
}
}
3.3 运行Pipeline
- 在项目页面点击「立即构建」
- 查看构建过程和日志
- 检查构建结果
4. GitHub Actions
4.1 创建GitHub Actions工作流
- 在GitHub仓库中创建
.github/workflows目录 - 在该目录中创建
ci.yml文件 - 编写工作流配置
4.2 编写工作流配置
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: 设置Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- name: 安装依赖
run: npm install
- name: 构建
run: npm run build
- name: 测试
run: npm run test
- name: 部署
if: github.ref == 'refs/heads/main'
run: npm run deploy
env:
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
4.3 配置密钥
- 在GitHub仓库中点击「Settings」
- 选择「Secrets and variables」→「Actions」
- 点击「New repository secret」
- 输入密钥名称和值,点击「Add secret」
5. GitLab CI/CD
5.1 创建.gitlab-ci.yml文件
stages:
- build
- test
- deploy
build:
stage: build
script:
- npm install
- npm run build
artifacts:
paths:
- dist/
test:
stage: test
script:
- npm run test
deploy:
stage: deploy
script:
- npm run deploy
only:
- main
5.2 配置GitLab Runner
#
# 下载GitLab Runner
#
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | bash
#
# 安装GitLab Runner
#
apt install gitlab-runner
#
# 注册GitLab Runner
#
gitlab-runner register
$
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
$
https://gitlab.com/
$
Please enter the gitlab-ci token for this runner:
$
your-token-here
$
Please enter the gitlab-ci description for this runner:
$
My Runner
$
Please enter the gitlab-ci tags for this runner (comma separated):
$
node, docker
$
Please enter the executor: docker, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine, custom:
$
docker
$
Please enter the default Docker image (e.g. ruby:2.6):
$
node:16
6. CI/CD最佳实践
生产环境建议
- 保持构建过程的一致性和可重复性
- 使用容器化技术(如Docker)确保环境一致性
- 编写全面的测试用例,确保代码质量
- 使用版本控制管理所有配置文件
- 实施代码审查和静态代码分析
- 使用环境变量管理敏感信息
- 建立清晰的分支策略(如Git Flow)
- 实施蓝绿部署或金丝雀发布策略
- 建立完善的监控和告警机制
- 定期备份和灾难恢复演练
7. CI/CD安全
- 密钥管理:使用密钥管理服务(如Vault)存储敏感信息
- 权限控制:实施最小权限原则,限制CI/CD系统的访问权限
- 代码安全:集成静态代码分析工具(如SonarQube)检测安全漏洞
- 依赖安全:使用依赖扫描工具(如OWASP Dependency Check)检测依赖漏洞
- 容器安全:扫描容器镜像中的安全漏洞
- 网络安全:确保CI/CD系统的网络隔离和安全
- 审计日志:记录所有CI/CD操作,便于安全审计
8. CI/CD监控与优化
8.1 监控指标
- 构建时间:监控构建和部署的时间,及时发现性能问题
- 构建成功率:监控构建成功率,及时发现代码质量问题
- 部署频率:监控部署频率,评估CI/CD的有效性
- 失败率:监控失败率,分析失败原因并改进
- 回滚率:监控回滚率,评估部署质量
8.2 优化策略
- 并行构建:利用并行构建加速构建过程
- 缓存策略:缓存依赖和构建产物,减少重复工作
- 增量构建:只构建变更的部分,提高构建速度
- 资源优化:合理分配CI/CD资源,提高资源利用率
- 自动化测试:优化测试策略,减少测试时间
- 流水线优化:优化流水线设计,减少不必要的步骤
更多学习教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
学习交流加群风哥QQ113257174
更多学习教程公众号风哥教程itpux_com
author:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
