温馨提示×

CentOS Golang打包如何自动化

小樊
50
2026-01-10 23:42:15
栏目: 编程语言

在 CentOS 上自动化 Golang 项目的打包过程可以通过编写 shell 脚本或使用持续集成/持续部署(CI/CD)工具来实现。以下是两种常见的方法:

方法一:编写 Shell 脚本

  1. 创建一个 shell 脚本文件: 在你的项目根目录下创建一个名为 build.sh 的脚本文件。

    #!/bin/bash
    
    # 设置项目路径和输出目录
    PROJECT_DIR=$(pwd)
    OUTPUT_DIR="build"
    
    # 创建输出目录
    mkdir -p $OUTPUT_DIR
    
    # 切换到项目目录
    cd $PROJECT_DIR
    
    # 获取当前版本号(假设版本号在 go.mod 文件中)
    VERSION=$(grep -oP 'module \K[^ ]+' go.mod)
    
    # 打包命令
    GOOS=linux GOARCH=amd64 go build -o $OUTPUT_DIR/myapp-$VERSION-linux-amd64
    
    # 可选:压缩打包文件
    cd $OUTPUT_DIR
    zip -r myapp-$VERSION-linux-amd64.zip myapp-$VERSION-linux-amd64
    
    echo "Build completed: $OUTPUT_DIR/myapp-$VERSION-linux-amd64.zip"
    
  2. 赋予脚本执行权限

    chmod +x build.sh
    
  3. 运行脚本

    ./build.sh
    

方法二:使用 CI/CD 工具

你可以使用 Jenkins、GitLab CI、GitHub Actions 等 CI/CD 工具来自动化打包过程。以下是一个简单的 GitHub Actions 示例:

  1. 创建 .github/workflows/build.yml 文件: 在你的项目根目录下创建一个名为 .github/workflows/build.yml 的文件。

    name: Build and Package
    
    on:
      push:
        branches:
          - main
      pull_request:
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
        - name: Checkout code
          uses: actions/checkout@v2
    
        - name: Set up Go
          uses: actions/setup-go@v2
          with:
            go-version: 1.17
    
        - name: Build
          run: |
            GOOS=linux GOARCH=amd64 go build -o ./build/myapp-linux-amd64
    
        - name: Zip build artifacts
          run: |
            cd build
            zip -r myapp-linux-amd64.zip myapp-linux-amd64
    
        - name: Upload artifacts
          uses: actions/upload-artifact@v2
          with:
            name: myapp
            path: build/myapp-linux-amd64.zip
    
  2. 提交并推送文件: 将 .github/workflows/build.yml 文件提交并推送到你的 GitHub 仓库。

    git add .github/workflows/build.yml
    git commit -m "Add CI/CD workflow for building and packaging"
    git push origin main
    

这样,每次你向 main 分支推送代码或发起 pull request 时,GitHub Actions 将自动执行打包流程,并将生成的压缩包上传为构建产物。

选择适合你项目的方法,可以大大提高打包过程的自动化程度和效率。

0