持续集成与持续部署(四)05-Jenkins——Jenkins在前端项目中的应用-Jenkins发布到Nginx Docker容器

持续集成与持续部署(四)05-Jenkins——Jenkins在前端项目中的应用-Jenkins发布到Nginx Docker容器

前端项目中的应用

插件推荐:

  • nodejs插件

    主要是用于不同版本的Node打包

    特别需要注意的是,使用jenkinsci/blueocean镜像的同学,需要重新运行新的容器,以便nodejs插件生效。

    docker run \
      -itd \
      -u root \
      -p 8080:8080 \
      -v /var/jenkins_home:/var/jenkins_home \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v /usr/bin/docker:/usr/bin/docker \
      --name jenkins-master \
      jenkins/jenkins
    

    注意:docker stop 容器名称 去停止之前的容器!

  • Publish Over SSH

    用于构建完成之后,推送到远程的web服务器

Jenkins发布到Nginx Docker容器:

# !bin/bash
node -v
cnpm install
npm run build
ls -la
if [ "$(docker inspect -f '{{.State.Running}}' nginx)" = "true" ]; then
	docker stop nginx && docker rm nginx;
fi

docker run -itd --name nginx -v `pwd`/dist:/usr/share/nginx/html -p 20000:80 nginx

Pipleline演示:

pipeline {
  agent {
    docker {
      image 'node:10'
      args '-p 20000:8080'
    }

  }
  stages {
    stage('Build') {
      steps {
        sh 'yarn install'
      }
    }
    stage('Deploy') {
      steps {
        sh './scripts/deploy.sh'
        input 'Finished using the web site? (Click "Proceed" to continue)'
        sh './scripts/kill.sh'
      }
    }
  }
}

deploy.sh文件

#!/usr/bin/env sh
set -x
npm run serve &
sleep 1
echo $! > .pidfile
set +x

echo 'Now...'
echo 'Visit http://localhost:8080 to see your Node.js/Vue application in action.'

set命令用法:

set指令能设置所使用shell的执行方式,可依照不同的需求来做设置
 -a  标示已修改的变量,以供输出至环境变量。
 -b  使被中止的后台程序立刻回报执行状态。
 -C  转向所产生的文件无法覆盖已存在的文件。
 -d  Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。
 -e  若指令传回值不等于0,则立即退出shell。  
 -f   取消使用通配符。
 -h  自动记录函数的所在位置。
 -H Shell  可利用"!"加<指令编号>的方式来执行history中记录的指令。
 -k  指令所给的参数都会被视为此指令的环境变量。
 -l  记录for循环的变量名称。
 -m  使用监视模式。
 -n  只读取指令,而不实际执行。
 -p  启动优先顺序模式。
 -P  启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。
 -t  执行完随后的指令,即退出shell。
 -u  当执行时使用到未定义过的变量,则显示错误信息。
 -v  显示shell所读取的输入值。
 -x  执行指令后,会先显示该指令及所下的参数。

+<参数>  取消某个set曾启动的参数。

kill.sh文件:

#!/usr/bin/env sh

echo 'The following command terminates the "npm run serve" process using its PID'
echo '(written to ".pidfile"), all of which were conducted when "deloy.sh"'
echo 'was executed.'
set -x
kill $(cat .pidfile)

思路:

  1. 使用一台单独的Nginx服务器发布,使用Publish Over SSH插件上传
  2. 使用Docker在本地发布或者远程发布
  3. 使用Dockerfile进行镜像内的构建,使用docker镜像进行发布
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值