centos

Golang在CentOS上的CI/CD配置方法

小樊
75
2025-05-16 22:13:48
栏目: 编程语言

在CentOS上配置Golang项目的CI/CD(持续集成/持续部署)流程,通常涉及以下步骤:

1. 安装和配置Golang环境

首先,确保在CentOS系统上安装了Golang。可以通过以下命令安装:

sudo yum install golang

安装完成后,设置GOROOTGOPATH环境变量:

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

为了使这些变量永久生效,可以将它们添加到~/.bashrc文件中:

echo "export GOROOT=/usr/local/go" >> ~/.bashrc
echo "export GOPATH=$HOME/go" >> ~/.bashrc
echo "export PATH=$PATH:$GOROOT/bin:$GOPATH/bin" >> ~/.bashrc
source ~/.bashrc

2. 选择CI/CD工具

可以选择多种CI/CD工具,如Jenkins、GitLab CI/CD、GitHub Actions等。这里以GitHub Actions为例进行说明。

3. 创建GitHub Actions工作流

在项目根目录下创建一个.github/workflows目录,并在其中创建一个YAML文件,例如ci-cd.yml。以下是一个简单的示例:

name: CI/CD Pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

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: Install dependencies
      run: go mod download

    - name: Build
      run: go build -v ./...

    - name: Run tests
      run: go test -v ./...

    - name: Build Docker image
      run: |
        docker build -t my-go-app:latest .
        docker push my-go-app:latest

    - name: Deploy to Kubernetes
      run: |
        kubectl apply -f deployment.yaml

4. 配置Kubernetes部署

确保在GitHub仓库中有一个deployment.yaml文件,用于定义Kubernetes部署配置。以下是一个简单的示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-go-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-go-app
  template:
    metadata:
      labels:
        app: my-go-app
    spec:
      containers:
      - name: my-go-app
        image: my-go-app:latest
        ports:
        - containerPort: 8080

5. 触发CI/CD流程

将代码推送到GitHub仓库或触发Pull Request时,GitHub Actions将自动执行配置的工作流,完成构建、测试、构建Docker镜像并部署到Kubernetes集群。

6. 监控和日志

在GitHub Actions中,可以配置通知机制以便在CI/CD流程中的任何一步失败时获得提示,比如通过邮件、钉钉、微信、飞书等。

以上步骤展示了如何在CentOS上使用GitHub Actions配置Golang项目的CI/CD流程。根据具体需求,可以进一步定制和扩展这些步骤。

0
看了该问题的人还看了