cicd-s2e-runner 是二次封装的容器化gitlab-runner/action-runner/jenkins-agent镜像,集成一系列命令行工具,包括原生 CI 工具,原生CD工具,云平台工具,以及s2i CD 工具。
- 基于CentOS;
- 原生 CI 命令行工具;
- 集成了主流编译运行环境,支持c/c++(make/gcc/binutils), java(openjdk, maven), go, python2(pip2), python3(pip3)等
- 原生 CD 命令行工具;
- 集成了容器化编译部署cli,docker,kubernetes(kubectl/helm)。
- 公有云 命令行工具;
- 集成了阿里云命令行 aliyun;
- 集成了腾讯云命令行 tccli coscmd;
- 源码 命令行工具;
- git 命令行;
- gitlab 命令行;
- s2i CD 命令行工具;
- 集成了环境变量注入工具 s2ectl;
- 集成了开箱即用的cicd命令行工具 s2i;
根据源码,提取语言特征,判断 java,go,nodejs等,调用对应构建命令,存在Dockerfile则调用docker build
根据源码,取name,解析Dockerfile等,以及注入进runner的环境变量,自动生成 helm value.yaml 部署目的地由kubectl配置决定; 参考 s2i 实现 参考 helm chart 模板实现 参考 value.yaml 自动生成实现 k8s-app-import
根据源码,取name,解析Dockerfile等,以及注入进runner的环境变量,自动生成 helm value.yaml 参考 s2i 实现
- s2i 的 usage
usage:
A cicd tool, from src to artifact, to docker img, deploy into kubernetes:
I. default do all action(artifact,docker,deploy):
s2i /path/to/srctop
II. only do specify action:
s2i /path/to/srctop [ analysis|artifact|docker|deploy|deploy-update-blue ]
1. only do artifact
s2i /path/to/srctop artifact
2. only do docker build push
export DOCKER_REPO=harbor.benload.com
export DOCKER_NS=bu5
s2i /path/to/srctop docker
3. only do kubernetes deploy
export K8S_KUBECONFIG=/root/.kube/config
export K8S_NS_SUFFIX=-dev
export K8S_NS=default
export K8S_DOMAIN_INTERNAL=benload.cn
export K8S_DOMAIN_PUBLIC=bu5-dev.tx
export INGRESS_INTERNAL_ENABLED=1
export INGRESS_PUBLIC_ENABLED=1
export INGRESS_CLASS_INTERNAL=nginx
export INGRESS_CLASS_PUBLIC=nginx
s2i /path/to/srctop deploy
III. do exec cmd:
s2i /path/to/rundir exec wrappercmd [...]
1. do ls on /root directory
s2i /root ls
-
下载 cicd-s2e-runner,解压
-
启动runner
docker-compose up -d
- 登陆runner容器 shell
docker-compose exec runner /bin/bash
- java CI demo:生成 jar, Docker Img
cd /root/democode/cicd-java-refer
s2i .
- nodejs CI demo,生成 jar, Docker Img
cd /root/democode/cicd-nodejs-refer
s2i .
- 注册runner到 gitlab server
gitlab-runner register --non-interactive --name s2erunner --executor shell --url https://git.gitlab.com --registration-token 123123dafeafeQ-ZyXgLmb
- 使用简单版流水线 .gitlab-ci.yml
只支持单kubernetes部署,复制以下内容到 .gitlab-ci.yml
#s2i:1
stages:
- s2i
s2i:
stage: s2i
script:
- s2i .
- 使用进阶版流水线 .gitlab-ci.yml
支持多kubernetes部署,支持多kubernetes蓝绿部署
# 请查看
s2i 可以
#例子
s2i . exec ls
- docker-compose.yaml 本runner的容器部署文件,docker-compose 方式
- runner/secrets 目录, runner里各个cmd 工具的配置,挂载进容器里
- templates 目录, CI、CD过程中用到的默认模板
- runner/tools 目录, cmd 目录挂载进容器,在容器里环境变量 PATH 最前
s2erunner/
├── democode
│ └── cicd-java-refer
├── docker-compose.yaml
└── runner
├── secrets
│ ├── acli
│ │ └── acli.properties
│ ├── cloud-aliyun
│ │ └── README.md
│ ├── cloud-tencent
│ │ └── README.md
│ ├── docker
│ │ └── config.json
│ ├── email
│ │ └── mail.rc
│ ├── gitlab
│ ├── gitlab-runner
│ │ ├── config.toml
│ │ └── gitlab-runner.repo
│ ├── jira
│ │ ├── acli.properties
│ │ └── README.md
│ ├── k8s/.kube
│ ├── maven
│ │ └── settings.xml
│ ├── profile.d
│ │ └── env.sh
│ ├── rancher
│ │ └── cli2.json
│ └── s2ectl
│ └── config.yaml
├── templates
│ ├── dockerfile
│ │ └── Dockerfile
│ └── gitlab
│ └── merge-request-template.md
└── tools
└── your-tool.sh