jekins部署

1、使用xshell 登录服务器。

2、使用流水线构建。

点击 “新建任务”,输入自定义任务名称,选择 “流水线”,点击确定。

配置示例如下:

流水线:从版本控制库拉取pipeline。本例为,让Jenkins从Git仓库拉取pipeline并执行。注意项目的可见性选为 公开,并且需要将Git私钥放到Jenkins上,这样Jenkins才有权限从Git仓库拉取代码。

[图片上传失败...(image-e3473a-1620376972062)]

3、项目根目录新建 Jenkins文件夹,里面新建Jenkinsfile 文件。

执行 npm install 命令时,timeout。最后配合Dockerfile解决了该问题。

阅读pipeline文件,需要了解必要的Groovy知识。定义变量,定义方法,单引号,双引号和三引号。

agent:指定流水线的执行位置,其必须在某个地方(物理机、虚拟机或Docker容器)执行。

pipeline支持的指令

{
 node {
 label 'jdk8'
 }
 }

 agent {
 docker {
 label 'docker'
 image '15.14.0-alpine3.10'
 }
 }

参考文章:

https://hub.docker.com/_/node

https://www.jenkins.io/zh/doc/book/pipeline/docker/

https://www.jenkins.io/zh/doc/book/pipeline/jenkinsfile/#using-multiple-nodes

// 三个阶段

pipeline {
 agent any
 options {
 disableConcurrentBuilds()
 }
 environment {
 CI = 'true'
 }
 stages {
 // 阶段1 发送邮件
 stage('get GIT_COMMIT_EMAIL') {
 agent any
 steps {
 checkout scm
 script {
 // Git committer email
 env.git_commit_email = sh (script: "git --no-pager show -s --format='%ae' $GIT_COMMIT",returnStdout: true).trim()
 echo "Git committer email: ${GIT_COMMIT_EMAIL}"
 }
 }
 }
 // 阶段2 构建
 stage('Build') { 
 steps{
 sh 'docker build -t site:${BUILD_NUMBER} ./'
 sh 'docker tag site:${BUILD_NUMBER} 172.27.24.217:5000/site:${BUILD_NUMBER}'
 sh 'docker push 172.27.24.217:5000/site:${BUILD_NUMBER}'
 }
 }
 // 阶段3 部署
 stage('Deploy') { 
 steps{
 script {
 try {
 sh 'docker stop site'
 sh 'docker rm site'
 }
 catch (exc) {
 echo 'site not exist, create now'
 }
 }
 // 将项目启动的4500端口映射到4600端口,最终访问172.27.24.217:4600
 sh 'docker run -p 4600:4500 -d --restart=always --name site 172.27.24.217:5000/site:${BUILD_NUMBER}'
 }
 }
 }
}

4、项目根目录下新建Dockerfile文件


FROM node:15-alpine3.10 as builder

ENV NODE_ENV production

RUN mkdir -p /usr/src/app 

WORKDIR /usr/src/app

COPY package.json /usr/src/app

RUN npm i --registry=http://172.27.24.217:4873/ 

COPY . /usr/src/app

RUN npm run build

// 复制打包后的.next和public文件夹到/app/.next和/app/public文件夹下。
// 复制package.json到/app文件夹下
// 设置npm代理
// 将项目启动在 4500 端口
// --from=builder 中的builder 和第一行的as builder关键字对应

FROM node:15-alpine3.10 

RUN mkdir -p /app

WORKDIR /app

COPY --from=builder /usr/src/app/.next /app/.next

COPY --from=builder /usr/src/app/package.json /app

COPY --from=builder /usr/src/app/public /app/public

RUN npm i next --registry=http://172.27.24.217:4873/

EXPOSE 4500

CMD npm run start

5、docker 命令

https://yeasy.gitbook.io/docker_practice/appendix/command/docker#ke-hu-duan-ming-ling

docker images
history | grep xxx
docker ps //查看container
docker exec -it 301b /bin/sh  //进入到301b容器,301b是container id 前4位 /bin/sh可能是别的值
docker inspect containerId 查看容器相关信息,"Cmd"属性中的脚本名称即上一步中的 /bin/sh

docker container run -p 8000:80 nginx:v3 -d 
-d 后台运行
docker logs f626 查看日志 , f626是日志文件的前几位
docker logs --tail 5 f626 查看日志的前5位

直接用huiyun用户登入,无法执行构建指令,docker image build
需要通过su命令切换到root目录,然后再进入到huiyun目录。
删除镜像

docker rmi $(docker images | grep "none")
docker image rm $(docker image ls -q -f before=REPOSITORY:TAG)

你可能感兴趣的:(jekins部署)