安装
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
在/etc/apt/sources.list尾巴上添加如下:
deb https://pkg.jenkins.io/debian-stable binary/
执行命令
sudo apt-get update
sudo apt-get install jenkins
修改用root用户启动Jenkins
vim /etc/defalut/jenkins
修改如下两行
JENKINS_USER=root
JENKINS_GROUP=root
修改后,执行命令:
service jenkins start
自己的项目参考
Jenkinsfile如下:
pipeline {
agent any
environment {
zycloud_path = '/zycloud'
repo = 'git@10.10.1.58:zycloud_web'
version = '1.0.0'
ip = "127.0.0.1"
MYSQL_ROOT_PASSWORD = "admin"
}
stages {
stage('init') {
steps {
script {
if (!fileExists('/zycloud')) {
sh 'mkdir /zycloud'
}
}
}
}
stage("uninstall") {
steps {
script {
def images = ["zycloud-admin", "zycloud-license", "zycloud-auth", "zycloud-center", "zycloud-gate", "zycloud-client", "zycloud-desktop"]
for (int i = 0; i < images.size(); i++) {
try {
sh "docker rm -f ${images[i]}"
} catch (ex) {}
try {
sh "docker rmi zycloud/${images[i]}:${version}"
sh "docker rmi zycloud/${images[i]}:latest"
} catch (ex) {}
}
def baseImages = ["zycloud-mysql", "zycloud-redis", "zycloud-rabbitmq"]
baseImages.each {
try {
sh "docker rm -f ${it}"
} catch (ex) {}
}
}
}
}
stage("fetch code") {
parallel {
stage('zycloud-server') {
steps {
script {
if (fileExists('/zycloud/zycloud-server')) {
dir ("/zycloud/zycloud-server") {
sh 'git pull'
}
} else {
dir("/zycloud") {
sh "git clone ${repo}/zycloud-server.git"
}
}
}
}
}
stage('zycloud-license') {
steps {
script {
if (fileExists('/zycloud/zycloud-license')) {
dir ("/zycloud/zycloud-license") {
sh 'git pull'
}
} else {
dir("/zycloud") {
sh "git clone ${repo}/zycloud-license.git"
}
}
}
}
}
stage('zycloud-client') {
steps {
script {
if (fileExists('/zycloud/zycloud-client')) {
dir ("/zycloud/zycloud-client") {
sh 'git pull'
}
} else {
dir("/zycloud") {
sh "git clone ${repo}/zycloud-client.git"
}
}
}
}
}
stage('zycloud-desktop') {
steps {
script {
if (fileExists('/zycloud/zycloud-desktop')) {
dir ("/zycloud/zycloud-desktop") {
sh 'git pull'
}
} else {
dir("/zycloud") {
sh "git clone ${repo}/zycloud-desktop.git"
}
}
}
}
}
}
}
stage('build') {
parallel {
stage('build server') {
steps {
dir("${zycloud_path}/zycloud-server") {
sh 'mvn clean package -DskipTests'
}
}
}
stage('build license') {
steps {
dir("${zycloud_path}/zycloud-license") {
sh 'mvn clean package docker:build'
}
}
}
stage('build desktop') {
steps {
script {
dir ("${zycloud_path}/zycloud-desktop") {
try {
sh "npm install . --registry=https://registry.npm.taobao.org"
sh "npm run build:prod"
} catch (ex) {
sh "npm rebuild node-sass --force"
sh "npm install --registry=https://registry.npm.taobao.org"
sh "npm run build:prod"
}
sh "docker build -t zycloud/zycloud-desktop:${version} -f hack/Dockerfile.zycloud-desktop ."
}
}
}
}
stage('build client') {
steps {
script {
dir ("${zycloud_path}/zycloud-client") {
try {
sh "npm install . --registry=https://registry.npm.taobao.org"
} catch (ex) {
sh "npm rebuild node-sass --force"
sh "npm install --registry=https://registry.npm.taobao.org"
}
sh "docker build -t zycloud/zycloud-client:${version} -f hack/Dockerfile.zycloud-client ."
}
}
}
}
}
}
stage('package') {
steps {
script {
if (fileExists("${zycloud_path}/zycloud.tar")) {
sh "rm -rf ${zycloud_path}/zycloud.tar"
}
def images = ["zycloud-admin", "zycloud-license", "zycloud-auth", "zycloud-center", "zycloud-gate", "zycloud-client", "zycloud-desktop"]
def baseImages = ["zycloud-node", "zycloud-mysql", "zycloud-redis", "zycloud-nginx", "zycloud-rabbitmq"]
def all = images + baseImages;
def commands = "";
all.each {
commands = commands + "zycloud/" + "${it}:${version} "
}
echo "package images"
sh "docker save ${commands} > ${zycloud_path}/zycloud.tar"
}
}
}
stage('install') {
steps {
echo "install mysql"
sh "docker run -d --name zycloud-mysql --net=host -v zycloud-mysql:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-mysql:${version}"
sh "while ! nc -z ${ip} 3306 </dev/null >/dev/null; do sleep 5; done"
sh "mysql -uroot -p${MYSQL_ROOT_PASSWORD} -h${ip} -e 'source /var/lib/jenkins/workspace/build/zycloud.sql'"
echo "install zycloud-rabbitmq"
sh "docker run -d --name zycloud-rabbitmq --net=host -v zycloud-rabbitmq:/var/lib/rabbitmq -v /etc/localtime:/etc/localtime:ro --restart=always zycloud/zycloud-rabbitmq:${version}"
echo "install zycloud-redis"
sh "docker run -d --name zycloud-redis --net=host -v zycloud-redis:/var/lib/redis -v /etc/localtime:/etc/localtime:ro --restart=always zycloud/zycloud-redis:${version}"
echo "install zycloud-center"
sh "docker run -d --name zycloud-center --net=host -v /zycloud/:/zycloud -v /etc/localtime:/etc/localtime:ro -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-center:${version}"
echo "install zycloud-auth"
sh "docker run -d --name zycloud-auth --net=host -v /zycloud/:/zycloud -v /etc/localtime:/etc/localtime:ro -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-auth:${version}"
sh "sleep 10"
echo "install zycloud-admin"
sh "docker run -d --name zycloud-admin --net=host -v /zycloud/:/zycloud -v icon:/opt/zycloud/ui/app-icon -v /etc/localtime:/etc/localtime:ro -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-admin:${version}"
echo "install zycloud-gate"
sh "docker run -d --name zycloud-gate --net=host -v /zycloud/:/zycloud -v /etc/localtime:/etc/localtime:ro -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-gate:${version}"
echo "install zycloud-license"
sh "docker run -d --name zycloud-license --net=host --privileged=true -v /zycloud/:/zycloud -v /etc/localtime:/etc/localtime:ro -v /dev/mem:/dev/mem -v license:/config/zyc -e MYSQL_HOST=${ip} -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} --restart=always zycloud/zycloud-license:${version}"
echo "install zycloud-desktop"
sh "docker run -d --name zycloud-desktop --net=host -v icon:/usr/local/zycloud-desktop/static/tinymce/icon -v /etc/localtime:/etc/localtime:ro -e ZYCLOUD_IP=${ip} --restart=always zycloud/zycloud-desktop:${version}"
echo "install zycloud-client"
sh "docker run -d --name zycloud-client --net=host -v icon:/usr/local/zycloud-client/resources/icon -v /etc/localtime:/etc/localtime:ro --restart=always zycloud/zycloud-client:${version}"
}
}
}
}