Debian 上 Fortran 项目的持续集成实践
一、环境与工具选型
二、本地可复现的构建与测试
三、Jenkins 自建 CI 流水线
pipeline {
agent any
tools { tool 'Default' } // 确保已配置好 gfortran 工具
stages {
stage('Build and Test') {
matrix {
axes {
axis { name 'GFORTRAN'; values '10', '11', '12' }
axis { name 'MPI'; values 'no', 'yes' }
}
stages {
stage('Install deps') {
steps { sh 'sudo apt-get update && sudo apt-get install -y gfortran-$GFORTRAN libblas-dev liblapack-dev' }
when { expression { env.MPI == 'yes' } }
steps { sh 'sudo apt-get install -y libopenmpi-dev' }
}
stage('Build') {
steps {
sh '''
if [ "$MPI" = "yes" ]; then
FC=mpif90 FFLAGS="-O2 -fopenmp" make -f Makefile.mpi
else
FC=gfortran FFLAGS="-O2" make
fi
'''
}
}
stage('Test') {
steps {
sh './run_tests.sh'
}
}
}
}
}
}
post {
always { echo 'CI finished.' }
failure { echo 'Build or tests failed.' }
}
}
四、GitLab CI 示例
image: fortran:latest # 或 debian:stable-slim
before_script:
- apt-get update -qq && apt-get install -y -qq gfortran libblas-dev liblapack-dev make
build:
script:
- make
artifacts:
paths:
- app
expire_in: 1 week
test:
script:
- ./run_tests.sh
五、质量门禁与交付建议