1. 首页 > IT综合教程 > 正文

it教程FG127-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

  1. 访问Jenkins web界面:http://your-server-ip:8080
  2. 获取初始管理员密码:
#

cat /var/lib/jenkins/secrets/initialAdminPassword

$

1234567890abcdef1234567890abcdef

  1. 输入初始密码,然后按照向导安装推荐插件
  2. 创建管理员用户
  3. 配置Jenkins URL
  4. 完成配置,进入Jenkins dashboard

3. Jenkins Pipeline

3.1 创建Pipeline项目

  1. 在Jenkins dashboard中点击「新建项目」
  2. 输入项目名称,选择「Pipeline」类型
  3. 点击「确定」进入配置页面
  4. 在Pipeline部分,选择「Pipeline script from SCM」
  5. 选择Git作为SCM,输入仓库URL和凭证
  6. 指定Jenkinsfile路径(默认为Jenkinsfile)
  7. 点击「保存」

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

  1. 在项目页面点击「立即构建」
  2. 查看构建过程和日志
  3. 检查构建结果

4. GitHub Actions

4.1 创建GitHub Actions工作流

  1. 在GitHub仓库中创建 .github/workflows 目录
  2. 在该目录中创建 ci.yml 文件
  3. 编写工作流配置

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 配置密钥

  1. 在GitHub仓库中点击「Settings」
  2. 选择「Secrets and variables」→「Actions」
  3. 点击「New repository secret」
  4. 输入密钥名称和值,点击「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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息