GoCD自动化流水线部署-以docker部署django为例
OS:CentOS Stream8
Docker version:24.0.7
Docker Compose version:v2.21.0
go-service、go-agent:23.4.0
GoCD安装
安装可以直接使用yum,但是过程出现了几个错误,所以换了一个方法,直接使用RPM安装。yum安装可以参考官方文档:https://docs.gocd.org/current/installation/install/server/linux.html
RPM文件下载地址(找到对应的操作系统):https://www.gocd.org/download/#redhat
1、go-server 安装
确认 go-server-23.4.0-17731.noarch.rpm 在路径下,执行 sudo rpm -i go-server-23.4.0-17731.noarch.rpm
完成后执行 service go-server start
查看状态 service go-server status
浏览器输入 http://xxx.x.xxx.xxx:8153/
就可以访问到GoCD的页面
2、go-agent 安装
确认 go-agent-23.4.0-17731.noarch.rpm 在路径下,执行 sudo rpm -i go-agent-23.4.0-17731.noarch.rpm
完成后执行 service go-agent start
查看状态 service go-agent status
可以在刚才的页面 AGENT下面看到当前agent信息
这个路径就是后续部署的地址
项目及docker配置
项目结构
└── SnowflakeService
├── docker-compose.yml
├── Dockerfile
├── manage.py
├── README.en.md
├── README.md
├── requirements.txt
├── restart.sh
├── SnowflakeService
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── start.sh
└── stop.sh
Dockerfile
FROM python:3.11
ENV PYTHONUNBUFFERED 1
RUN mkdir -p /home/RunKits/SnowflakeServiceRun
WORKDIR /home/RunKits/SnowflakeServiceRun
COPY . /home/RunKits/SnowflakeServiceRun
RUN pip install -r /home/RunKits/SnowflakeServiceRun/requirements.txt -i https://mirrors.tencent.com/pypi/simple
docker-compose.yml
version: "3"
services:
SnowflakeService:
image: "snowflake-service:latest"
container_name: snowflake-service
restart: always
command: "python manage.py runserver 0.0.0.0:8000"
ports:
- "8000:8000"
流水线配置
进入到前面安装GoCD的地址http://xxx.x.xxx.xxx:8153/ ,点击dashboard,如果没有管道会进入管道创建页面。
1、Material
常规的git地址,用户名、密码、分支等。Alternate Checkout Path 填写路径(相对前面给的sandbox),后续项目会放置在该路径下。
以下还有管道名称,阶段名称,任务名称,可以填上,点解按钮 Save + Edit Full Config进入详细配置
各阶段配置如下:
Stop:
Build:
Start:
其中Stop阶段的 pwd、whoami是调试时用的,因为在路径上遇到了挺多麻烦,最后结论是,前面配置的那个相对路径就是默认的工作目录,此处的Working Directory不需要改动(执行文件没有路径变动的话,按上面的结构目录是不用变动的)。
有些时候一些命令报错可能是一些编码、转义字符问题,实在解决不了就重新创建管道试试。
执行运行
回到GoCD主页面的dashboard
点击这两个三角形就能运行,第一个三角形直接运行,第二个修改配置,比如可以选择git分支。