首页主机资讯Fortran在Debian上如何进行版本控制

Fortran在Debian上如何进行版本控制

时间2026-01-20 14:05:04发布访客分类主机资讯浏览1070
导读:Debian上Fortran的版本控制实践 一 语义化版本与Git分支策略 采用语义化版本号(如:v1.2.3),在 Git 标签中打版本,便于回溯与发布。 分支策略建议: main:稳定发布线,仅通过合并请求(Merge Reques...

Debian上Fortran的版本控制实践

一 语义化版本与Git分支策略

  • 采用语义化版本号(如:v1.2.3),在 Git 标签中打版本,便于回溯与发布。
  • 分支策略建议:
    • main:稳定发布线,仅通过合并请求(Merge Request)更新。
    • develop:日常开发线,集成特性分支。
    • feature/xbugfix/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 gfortransudo 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
  • 依赖库建议固定版本或在 CI 中显式安装,例如:
    • 数值库:libblas-devliblapack-dev
    • MPI:libopenmpi-dev(并行构建时使用 mpif90
    • 其他:libfftw3-devhdf5-dev
  • 在仓库根目录提供可复现脚本(如 Makefilefpm.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: clean
    
    构建与运行:
    make
    ./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
    
  • 单元测试可选 FRUITpFUnit,在 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 中显式指定 FCFFLAGS,对 MPI 场景使用 mpif90;测试脚本以退出码判定成功/失败,形成可重复的质量门禁。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Fortran在Debian上如何进行版本控制
本文地址: https://pptw.com/jishu/787235.html
ubuntu邮件服务器DKIM验证 Debian上Fortran图形界面如何开发

游客 回复需填写必要信息