J

jenkins-pipeline

jenkins pipline codes

7171ebc9 打印结果 · by 黄高仁

jenkins pipeline 的介绍说明

对应的jenkins地址:http://jenkins.yohops.com/

现在支持的JOB类型如下:

支持的项目:

JOB名称 作用 支持类型
Docker-GitHook-Build-Deploy 构建,打包,部署 适用于自动回调,以及可以在docker.sh编译
Docker-Image-Deplopy 部 署 适用于镜像的部署,适配aws与qcloud
Docker-Java-Build-Deploy 构建,打包,部署 适用于需要打包替换的项目
Docker-Node-Build 构建,打包,上传CDN 适用于NODE相关的项目

DOCKREE_NODE_BUILD 介绍

  1. 主要用于node的镜像的构建,以及需要的项目的CDN上传,推送镜像到qcloud与aws。
  2. 与spinnaker平台结合使用,地址:http://spinnaker.dev.yohocorp.com/

JOB的参数介绍:

支持的参数:
string(name:'projectName', defaultValue: 'yoho-app-web', description: 'GITLAB应用名称')
string(name:'projectGitGroup', defaultValue: 'fe', description: 'GITLAB所在的组')
string(name:'projectBranch', defaultValue: 'release/1.0', description: 'git分支名称')
string(name:'deployName', defaultValue: 'yoho-app-web', description: '应用名称')
string(name:'imageSource', defaultValue: 'yoho-online', description: '镜像存储的仓库')
string(name:'imageVersion', defaultValue: 'release-1.0-20181227144324', description: '镜像存储的版本')
choice(name:'isNeedCdn',choices:'NO\nYES\n', description: '是否需要上传CDN')

支持的项目:

支持项目 已支持
yohobuywap-node 已支持
yohobuy-node 待项目组开发
yoho-web-app 已支持
ufo-web-app 已支持
yohoblk-wap 待项目组开发
yoho-activity-platform 已支持
yoho-shop-manage 已支持

pipeline特殊流程说明:

stage('upload to CDN and nfs')中主要将文件上传CDN此处使用了qshell进行文件的上传
sh "cp -r ${repalceDir} /nfs-ops/Data/app/node-ci/data"
此处使用了NFS盘(10.66.16.3),与yoho-ops集群中yoho-apm-dashboard服务共享。

Docker-Image-Deplopy

主要用于所有镜像aws与qcloud发布,可以被jenkins调用,也可以被工单系统调用,适用于所有的容器部署的项目,现在容器的发布均采用此JOB来进行发布。

实现说明

qcloud主要采用腾讯云的api进行更新,其中有600s的等待check时间.

aws主要采用aws cli进行更新,其中有600s的等待check时间.

参数说明:

string(name:'callBack', defaultValue: 'noNeedCallBack', description: '回调服务地址')
choice(name:'clusterId',choices:'aws\nyoho-web-gray\nyoho-ops\nyoho-web\nyoho-media\n', description: '集群的信息')
string(name:'serviceName', defaultValue: 'yoho-app-web', description: '服务名称 ')
string(name:'containerName', defaultValue: 'yoho-app-web', description: '容器名称')
string(name:'imageInfo', defaultValue: 'yohobuy-core/yohobuywap-node:hotfix-share-20181221134254', description: '镜像版本')
choice(name:'deployEnv',choices:'aws\nqcloud\nall\n', description: '部署的集群信息')

支持的项目

现在aws容器只接受灰度的发布,原先的服务需要在项目中创建好,此JOB只是起到更新容器中镜像的作用,不会修改其中的其他配置信息。

Docker-GitHook-Build-Deploy

主要用于项目的打包与发布构建,其中项目的根目录中需要存在docker.sh与Dockerfile文件。

docker.sh 此文件会接受一个参数为:${workspace},以及构建的基础脚本。

Dockerfile 此文件用于构建对应的镜像描述。

参数说明:

string(name:'callBack', defaultValue: 'noNeedCallBack', description: '回调服务地址')
choice(name:'clusterId',choices:'aws\nyoho-web-gray\nyoho-ops\nyoho-web\nyoho-media\n', description: '集群的信息')
string(name:'projectName', defaultValue: 'yoho-api-doc', description: 'GITLAB应用名称')
string(name:'projectGitGroup', defaultValue: 'fe', description: 'GITLAB所在的组')
string(name:'deployName', defaultValue: 'yoho-api-doc', description: '应用名称')
string(name:'userMail', defaultValue: 'hua.qu@yoho.cn', description: '触发的人员邮箱')
string(name:'imageSource', defaultValue: 'yoho-ops', description: '镜像存储的仓库')
string(name:'branch', defaultValue: 'master', description: 'git分支名称')

支持的项目

只要项目中存在docker.sh与Dockerfile,即可以完成对应的部署,可以适配于GITHOOK与工单平台的调用。

Docker-Java-Build-Deploy

此JOB主要适用于现阶段JAVA打包替换,需要在git中http://git.yoho.cn/yohoops/auto_deploy_docker,存在对应的配置文件

string(name:'callBack', defaultValue: 'noNeedCallBack', description: '回调服务地址')
choice(name:'clusterId',choices:'aws\nyoho-media\nyoho-ops\nyoho-web\nyoho-web-gray', description: '集群的信息')
string(name:'projectName', defaultValue: 'yoho-now', description: 'GITLAB应用名称')
string(name:'projectGitGroup', defaultValue: 'YOHONow', description: 'GITLAB所在的组')
string(name:'deployName', defaultValue: 'java-yoho-now', description: '应用名称')
string(name:'branch', defaultValue: 'master', description: 'git分支名称')
string(name:'userMail', defaultValue: 'hua.qu@yoho.cn', description: '触发的人员名单')
choice(name:'nodeEnv',choices:'yoho-gray\nyoho-online\n', description: '选择环境')
string(name:'imageSource', defaultValue: 'yoho-ops', description: '镜像存储的仓库')

支持的项目

支持项目 已支持
yoho-now 已支持
yohonow-platform 已支持
yohomars-platform 已支持
yohomars-search-service 已支持

jenkins节点预置条件

master 节点

基础键安装: java,maven,node,docker,aws cli,python,git,qshell JAVA

[root@VM_102_17_centos ~]# java  -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

MAVEN

[root@VM_102_17_centos ~]# mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /home/soft/apache-maven-3.3.9
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: /opt/jdk1.8.0_65/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-123.el7.x86_64", arch: "amd64", family: "unix"

DOCKER

[root@VM_102_17_centos ~]# docker version
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
 Go version:      go1.7.4
 Git commit:      88a4867/1.12.6
 Built:           Mon Jul  3 16:02:02 2017
 OS/Arch:         linux/amd64

Server:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
 Go version:      go1.7.4
 Git commit:      88a4867/1.12.6
 Built:           Mon Jul  3 16:02:02 2017
 OS/Arch:         linux/amd64

AWS CLI

#如果您已经有 pip 和支持的 Python 版本,则可以使用以下命令安装 AWS CLI:
$ pip install awscli --upgrade --user
[root@VM_102_17_centos ~]# aws --version
aws-cli/1.16.81 Python/2.7.15 Linux/3.10.0-123.el7.x86_64 botocore/1.12.71
#需要使用AWS账户来认证后即可使用
$ aws configure

NODE

[root@VM_102_17_centos ~]# node -v
v10.3.0

Python

下载的版本为:Python-2.7.15
1.下载python2.7.x

wget https://www.python.org/ftp/python/2.7.x/Python-2.7.x.tgz

2.解压并编译安装

tar -zxvf Python-2.7.x.tgz && cd Python-2.7.x && ./configure && make all && make install && make clean  && make distclean 

3.检查安装

/usr/local/bin/python2.7 -V

需要配置环境变量,且jenkins中执行命令能够正常的使用。 git

[root@localhost ~]# git version
git version 2.9.5
同时需要配置密钥支持,ssh方式下载

qshell

[root@localhost qiniu]# qshell -v
QShell/v2.1.8 (linux; amd64; go1.9)
可参见七牛的帮助文本,需要根据ak与sk将认证配置完成