在 Ubuntu 上为 C++ 项目搭建持续集成
一 方案总览与选型
二 快速上手 GitHub Actions
name: C++ CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y g++ cmake
- name: Configure
run: |
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
- name: Build
run: cmake --build build -j$(nproc)
- name: Test
run: cd build && ctest --output-on-failure
三 自托管 Jenkins 流水线
sudo apt update
sudo apt install -y openjdk-11-jre
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install -y jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins
pipeline {
agent any
stages {
stage('Checkout') {
steps { git url: 'https://github.com/your-org/your-cpp-project.git', branch: 'main' }
}
stage('Install deps') {
steps { sh 'sudo apt-get update && sudo apt-get install -y g++ cmake' }
}
stage('Configure') {
steps {
sh 'mkdir -p build && cd build && cmake -DCMAKE_BUILD_TYPE=Release ..'
}
}
stage('Build') {
steps { sh 'cmake --build build -j$(nproc)' }
}
stage('Test') {
steps { sh 'cd build && ctest --output-on-failure' }
}
}
}
四 其他托管与自建选项
五 质量门禁与最佳实践