wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
在/etc/apt/sources.list尾巴上添加以下:javascript
deb https://pkg.jenkins.io/debian-stable binary/
執行命令java
sudo apt-get update sudo apt-get install jenkins
vim /etc/defalut/jenkins
修改以下兩行node
JENKINS_USER=root JENKINS_GROUP=root
修改後,執行命令:mysql
service jenkins start
Jenkinsfile以下:nginx
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}" } } } }