在CentOS上配置Golang项目的CI/CD(持续集成/持续部署)流程,通常涉及以下步骤:
首先,确保在CentOS系统上安装了Golang。可以通过以下命令安装:
sudo yum install golang
安装完成后,设置GOROOT和GOPATH环境变量:
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
可以选择多种CI/CD工具,如Jenkins、GitLab CI/CD、GitHub Actions等。这里以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
确保在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
将代码推送到GitHub仓库或触发Pull Request时,GitHub Actions将自动执行配置的工作流,完成构建、测试、构建Docker镜像并部署到Kubernetes集群。
在GitHub Actions中,可以配置通知机制以便在CI/CD流程中的任何一步失败时获得提示,比如通过邮件、钉钉、微信、飞书等。
以上步骤展示了如何在CentOS上使用GitHub Actions配置Golang项目的CI/CD流程。根据具体需求,可以进一步定制和扩展这些步骤。