Fortran在Debian上如何进行版本控制
导读:Debian上Fortran的版本控制实践 一 语义化版本与Git分支策略 采用语义化版本号(如:v1.2.3),在 Git 标签中打版本,便于回溯与发布。 分支策略建议: main:稳定发布线,仅通过合并请求(Merge Reques...
Debian上Fortran的版本控制实践
一 语义化版本与Git分支策略
- 采用语义化版本号(如:v1.2.3),在 Git 标签中打版本,便于回溯与发布。
- 分支策略建议:
- main:稳定发布线,仅通过合并请求(Merge Request)更新。
- develop:日常开发线,集成特性分支。
- feature/x、bugfix/y:短生命周期分支,完成后合并回 develop。
- 打标签与生成变更日志的常用流程:
- 打标签:
git tag -a v1.2.3 -m "Release 1.2.3" - 推送标签:
git push origin v1.2.3 - 生成简要变更:
git log --oneline v1.2.2..v1.2.3
- 打标签:
二 编译器与依赖的版本固定
- 使用 APT 安装与更新 gfortran,并固定版本以避免构建漂移:
- 更新索引:
sudo apt update - 安装/升级:
sudo apt install gfortran或sudo apt install --only-upgrade gfortran - 安装特定版本:
sudo apt install gfortran-< 版本号>(如:gfortran-12) - 验证版本:
gfortran --version
- 更新索引:
- 固定编译器版本(示例思路,写入构建脚本或 CI 环境):
- 在 Debian 12 上可用
update-alternatives管理默认gfortran:sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-12 100 sudo update-alternatives --config gfortran # 交互选择 - 在 CI 中显式设置环境变量:
FC=gfortran-12
- 在 Debian 12 上可用
- 依赖库建议固定版本或在 CI 中显式安装,例如:
- 数值库:
libblas-dev、liblapack-dev - MPI:
libopenmpi-dev(并行构建时使用mpif90) - 其他:
libfftw3-dev、hdf5-dev
- 数值库:
- 在仓库根目录提供可复现脚本(如 Makefile 或 fpm.toml),并在 CI 中使用相同的脚本,确保本地与 CI 一致。
三 构建与测试的矩阵化验证
- 使用 Make + gfortran 的最小示例:
构建与运行:# Makefile FC = gfortran FFLAGS = -O2 -Wall -Wextra OBJS = utils.o main.o app: $(OBJS) $(FC) $(FFLAGS) -o $@ $^ %.o: %.f90 $(FC) $(FFLAGS) -c $< -o $@ clean: rm -f *.o app .PHONY: cleanmake ./app - 使用 fpm(Fortran Package Manager)的最小示例:
构建与运行:# fpm.toml name = "mylib" version = "0.1.0" license = "MIT" author = "Your Name" [build] auto-executables = false [library] source-dir = "src" [test] source-dir = "test"fpm build fpm test fpm run - 单元测试可选 FRUIT 或 pFUnit,在 CI 中以脚本退出码作为质量门禁(测试失败即阻断合并)。
四 持续集成中的版本控制与矩阵构建
- 自建 Jenkins 流水线示例(矩阵覆盖多版本 gfortran 与 MPI 开关):
pipeline { agent any tools { tool 'Default' } 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 示例(使用官方 fortran 镜像或 Debian 镜像):
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 - 要点:在 CI 中显式指定 FC、FFLAGS,对 MPI 场景使用 mpif90;测试脚本以退出码判定成功/失败,形成可重复的质量门禁。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Fortran在Debian上如何进行版本控制
本文地址: https://pptw.com/jishu/787235.html
