使用centos7 + Jenkins + Docker + Git + Nodejs 实现自动编译发布VUE前端代码

前期准备:

docker安装看这篇:centos7安装docker及docker常用命令

jenkins安装看这篇: centos7 Jenkins 安装与卸载  建议选择 docker安装Jenkins

一、项目文件介绍

# 项目文件
├── /home/www/jenkins/front                           # 项目文件(把vue项目文件放里面)  
├── /home/www/jenkins/node-v10.15.1-linux-x64.tar.gz  # nodejs安装包
├── /home/www/jenkins/Dockerfile                      # 镜像文件
├── /home/www/jenkins/docker-compose.src.yml          # Docker 部署文件
├── /home/www/jenkins/deploy_jenkins.sh               # 部署脚本
├── /home/www/jenkins/Jenkinsfile                     # Jenkins Pipeline 文件
├── /home/www/jenkins/default.conf                    # nginx配置文件

#修改权限
chmod -R 755 /home/www/jenkins/*

# 仓库地址:ssh://[email protected]:29418/www/jenkins.git
# 在git创建仓库,并把/home/www/jenkins下的内容上传到git
cd /home/www/jenkins
git init
git remote add origin ssh://[email protected]:29418/www/jenkins.git
git add .
git commit -m 'first commit'
git push -u origin master

default.conf

server {
	listen       80;
	#listen       443;
	server_name  localhost;
	
	#ssl_certificate      mycert.crt;
	#ssl_certificate_key  mycert.key;
	
	#charset koi8-r;
	
	#access_log  logs/admin.access.log  main;
	
	location / {
		#前端vue服务端口3000
		proxy_pass  http://localhost:3000;
	}
	
	location ~ asset
	{
		#后端代码已经部署在81端口下,所以静态资源目录asset,反向代理到81
		expires 30d;
		proxy_pass  http://10.1.1.198:81;
	}
}

Dockerfile

FROM nginx

ENV REFRESHED_AT 2019-03-08

RUN mkdir -p /home/front

#WORKDIR 相当于cd
WORKDIR /home/front

#把编译的文件拷贝到容器中,并自动解压
ADD front /home/front

#把修改好的nginx配置文件拷贝到容器里面
COPY default.conf /etc/nginx/conf.d/default.conf

#ADD  文件放在当前目录下,拷过去会自动解压
ADD node-v10.15.1-linux-x64.tar.gz /home

RUN ln -s /home/node-v10.15.1-linux-x64/bin/node /usr/bin/node && ln -s /home/node-v10.15.1-linux-x64/bin/npm /usr/bin/npm 

#安装依赖包,如果你项目中已经存在node_modules依赖包这项可以注释掉
#RUN npm install

#编译
RUN npm build

RUN ln -s /home/front/node_modules/pm2/bin/pm2 /usr/bin/pm2

EXPOSE 91

STOPSIGNAL SIGTERM

CMD npm start && pm2 restart all && nginx -g "daemon off;"

docker-compose.src.yml

version: '3.4'
services:
  jenkins_demo:
    image: IMAGE_LATEST
    deploy:
      restart_policy:
        condition: on-failure
    expose:
      - "91"
    ports:
      - 91:80

deploy_jenkins.sh

#!/bin/bash

# 容器名称
CONTAINER="jenkins_demo"
# 镜像名称(以日期时间为镜像标签,防止重复)
IMAGE=$CONTAINER":"$(date -d "today" +"%Y%m%d_%H%M%S")

# 删除滚动更新残留的容器
docker rm `docker ps -a | grep -w $CONTAINER"_"$CONTAINER | awk '{print $1}'`
# 强制删除滚动更新残留的镜像
docker rmi --force `docker images | grep -w $CONTAINER | awk '{print $3}'`

# 创建新镜像
docker build -t $IMAGE . && \

# 删除 docker-compose.jenkins.yml 文件,防止使用相同镜像
rm -rf docker-compose.jenkins.yml && \

# 复制 docker-compose.src.yml 文件,防止污染原文件
cp docker-compose.src.yml docker-compose.jenkins.yml && \

# 替换镜像名标志位为最新镜像
sed -i s%IMAGE_LATEST%$IMAGE%g docker-compose.jenkins.yml && \

# 使用 docker stack 启动服务
docker stack deploy -c docker-compose.jenkins.yml $CONTAINER

Jenkinsfile

pipeline {
  agent none
  stages {
    stage('Deploy') {
      agent any
      steps {
        echo 'Deploying'
        sh './deploy_jenkins.sh'
      }
    }
  }
}

二、手动部署脚本--查看是否正常

cd /home/www/jenkins

./deploy_jenkins.sh

看到如图基本就部署完成了。 

查看容器启动成功

docker ps

然后访问 http://10.1.1.198:91/就可以看直接的项目了

 

三、配置jenkins 

1、jenkins安装看这篇 centos7 Jenkins 安装与卸载  建议选择 docker安装Jenkins 

2、新建项目,选择流水线--》然后点击下面 确定 按钮

3、设置,如果出现如下错误,是因为没有添加ssh证书。

4、解决报错

报错信息:

Failed to connect to repository : Command "git ls-remote -h ssh://[email protected]:29418/dahuasecurity/jenkins.git HEAD" returned status code 128:
stdout: 
stderr: Password authentication 
Password authentication 
Password authentication 
Permission denied, please try again. 
Permission denied, please try again. 
[email protected]: Permission denied (password,keyboard-interactive,publickey). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

 解决方法:

查看容器 找到  jenkins 容器id或者名称

docker ps

进入容器:

docker exec -it jenkins /bin/bash

然后执行:

git ls-remote -h ssh://[email protected]:29418/dahuasecurity/jenkins.git HEAD

然后:

cd ~/.ssh
ls

查看到目录下有  known_hosts 文件,然后

cat known_hosts

查看里面内容:

[10.1.0.37]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCi9OLXNPseWcwvBOPXpV4cCOgCc6/Rc2kTRnu6jW0iwfgm69sHEMc1iHvxIsmonntm4P4VQrz3jlU4q+2Uk6FrsQPYpYbKoLJ74vWWQOys3h1gWcshFHo49vnhZqBdvhRmsiwNYxLWo+AqQGjEJ68eXf6rKUKlLLE79ZuiOFJKLNikl00sBbbL4PV2HEDaQ42VMu8zXGAFF2xrIGcNVc1mNdL7vvdmKrR0W/e3dJlSgSGLlzYSoTVtqu0ZYztfZEFcVE62bF4ryCiCLkoM88weYGbO9avDwooTXyg7j4Z8QfgpJJOPTKvb2PCVwKWzzEYdqBbJjuquqgxwrF7KlFuj

然后把回到页面,点击Add

然后把秘钥和用户名,密码填入保存。

最后:

然后点击最底部的 Save 按钮保存。就设置完成了。

猜你喜欢

转载自blog.csdn.net/u011477914/article/details/88350491
今日推荐