Jenkins + Docker + Github 自动部署

涉及docker jenkins

服务器信息: centos 7.6

安装docker

yum install gcc c++
sudo yum remove docker
安装软件包和国内的镜像仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
下载阿里云仓库
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
install docker
sudo yum install docker-ce docker-ce-cli containerd.io -y
启动docker
sudo systemctl start docker
腾讯云配置镜像加速源
vim /etc/docker/daemon.json

添加配置:

{   "registry-mirrors": [       "https://mirror.ccs.tencentyun.com" ] 
}
重启docker
sudo systemctl restart docker

安装Jenkins

安装git
sudo yum install git
安装jdk
cd /home 

mkdri jdk

cd jdk

通过wget下载压缩包
wget \ --no-check-certificate \ --no-cookies \ --header \ "Cookie: oraclelicense=accept-securebackup-cookie" \ http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

解压
tar xvf jdk-8u131-linux-x64.tar.gz

配置环境变量
vim /etc/profile

文件最后追加
export JAVA_HOME=/home/jdk/jdk1.8.0_131 export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin

srouce一下:
source /etc/profile

检查是否成功:
java -version

image.png

使用docker拉取Jenkins镜像
docker pull jenkins/jenkins:2.426.2-lts
创建挂载目录
mkdir -p /usr/docker/jenkins_data

启动
docker run -d -p 8082:8080 -p 50000:50000 -v /usr/docker/jenkins_data:/var/jenkins_home  -v /etc/localtime:/etc/localtime -v /usr/bin/docker:/usr/bin/docker     -v /var/run/docker.sock:/var/run/docker.sock   --restart=on-failure  -u 0 --name myjenkins jenkins/jenkins:2.426.2-lts

启动指令解析:

-d :后台运行容器

-p:端口映射, 左边是本地端口,右边是docker容器端口 ,8080是Jenkins Web 界面的工作端口,50000是JNLP(Java Network Launch Protocol)工作端口。这个端口用于 Jenkins 节点和主控节点之间的通信。

-v :目录挂载,将主机上的 /usr/docker/jenkins_data 目录挂载到容器内的 /var/jenkins_home 目录,用于持久化 Jenkins 的数据。/etc/localtime:/etc/localtime:将本地主机上的时区信息文件挂载到容器内的 /etc/localtime 文件中,确保容器内的时间与主机上的时间一致

-v /usr/bin/docker:/usr/bin/docker: 将主机上的 /usr/bin/docker 文件挂载到容器中的 /usr/bin/docker,这样容器内的 Jenkins 可以直接使用宿主机上的 Docker 命令。在使用 GitLab/Jenkins 等 CI 软件的时候需要使用 Docker 命令来构建镜像,需要在容器中使用 Docker 命令;通过将宿主机的 Docker 共享给容器

-v /var/run/docker.sock:/var/run/docker.sock: 将主机上的 Docker socket 文件挂载到容器中的相同位置,这样容器内的 Jenkins 可以与宿主机上的 Docker 引擎进行通信。

–restart=on-failure:设置容器的重启策略为在容器以非零状态退出(异常退出)时重启。

-u 0:将容器内进程的用户身份设置为 root 用户,等同于-u root。

–name myjenkins:给容器指定一个名称为 myjenkins。

验证Jenkins容器是否启动成功
docker ps
查看Jenkins初始密码
docker logs myjenkins

输出内容中Please use the following password to proceed to installation下一行就是

image.png

也可以在文件中查看

cat /usr/docker/jenkins_data/secrets/initialAdminPassword 

e 这就是
修改插件源
cd /usr/docker/jenkins_data/updates

替换default.json文件中指定的源

sed -i 's|http://updates.jenkins-ci.org/|https://mirrors.tuna.tsinghua.edu.cn/jenkins/|g' default.json

sed -i 's|http://www.google.com/|https://www.baidu.com/|g' default.json

修改下载地址
vim /usr/docker/jenkins_data/hudson.model.UpdateCenter.xml 

修改xml文件为:

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
  </site>
</sites>

登录Jenkins web页面

服务器IP:8082
如下图:
image.png

注意:因为是docker启动,所以目录/var/jenkins_home/secrets/initialAdminPassword 中的var/jenkins_home要替换为我们的实际映射地址:/usr/docker/jenkins_data/

进入后安装推荐的插件:
image.png

创建用户选择使用admin登录
image.png
点击左侧 Manage Jenkins -> Plugins -> 左侧 Available Plugins 安装插件

下面是一些常用插件

Locale(中文插件)

Gitlab(拉取 gitlab 中的源代码)

Maven Integration(maven构建工具)

Publish Over SSH(远程推送工具)

Role-based Authorization Strategy(权限管理)

Deploy to container(自动化部署工程所需要插件,部署到容器插件)

git parameter(用户参数化构建过程里添加git类型参数)

安装NodeJS插件

配置NodeJS

image.png

拉动滚动条到最下方,点击新增NodeJS

image.png

配置github

点击manage Jenkins时会提醒配置 URL 进入那个页面,找到github

在凭据下方点击添加
image.png

去github 获取秘钥

github -> setting -> developer setting -> personal access tokens -> tokens(classic)
image.png
生成完成后 复制到jenkins secret
image.png

然后点击高级,生成一个hook url
image.png

在github中找到目标仓库,点击setting
image.png

jekins那边记得点击保存

配置前端项目

前端项目中新建DockerFIle:

FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY nginx/default.conf /etc/nginx/conf.d/default.conf

/nginx/default.conf

server {  
    listen       80;  
    server_name  localhost;  
  
    #charset koi8-r;  # 如果不需要这个字符集,可以注释掉  
    access_log  /var/log/nginx/host.access.log  main;  
    error_log  /var/log/nginx/error.log  error;  
  
    location / {  
        root   /usr/share/nginx/html;  
        index  index.html index.htm;  
    }  
  
    #error_page  404              /404.html;  # 如果需要自定义404页面,可以取消注释  
  
    # redirect server error pages to the static page /50x.html  
    #  
    error_page   500 502 503 504  /50x.html;  
    location = /50x.html {  
        root   /usr/share/nginx/html;  
    }  
}


image.png

jenkins 创建项目

image.png
image.png

点击确定

image.png

项目url: github项目地址

源码管理:
image.png

image.png

Build Steps 中点击增加构建步骤, 选择执行shell

输入命令后点击保存

npm install npm run build rm -rf /home/nginx/html/* docker stop vueApp docker rm vueApp docker build -t vuenginxcontainer . docker image ls | grep vuenginxcontainer docker run \ -p 3000:80 \ -d --name vueApp \ vuenginxcontainer
npm install npm run build rm -rf /home/nginx/html/* docker build -t vuenginxcontainer . docker image ls | grep vuenginxcontainer docker run \ -p 3000:80 \ -d --name vueApp \ vuenginxcontainer
  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值