Jenkins+Docker+Git实现自动化部署
1.安装Git
yum update
yum install-y git
2.git生成SSH Key
[root@iZwz925p95hhdeZDocument]# git config--global user.name"zzt"[root@iZwz925p95hhdeZDocument]# git config--global user.email"xxxxxx@qq.com"[root@iZwz925p95hhdeZDocument]# ssh-keygen-t rsa-C"xxxxxx@qq.com"Generatingpublic/private rsa keypair.
Enter file in whichtosave the key(/root/.ssh/id_rsa):Enter passphrase(emptyfor no passphrase):Enter same passphrase again:Your identification has been saved in/root/.ssh/id_rsa.
Yourpublic key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:BzQkCx5nZTBY4JrjXQ9hPtEDbTYLR/XXTCK8ZoKOAnE xxxxxx@qq.comThe key's randomart image is:+---[RSA3072]----+| o+OOB......||..E==*O....=||=.+.B.=... o||== o..+.||.+.*S.+||. o. o.||.|||||+----[SHA256]-----+[root@iZwz925p95hhdeZ secrets]# cd/root/.ssh[root@iZwz925p95hhdeZ .ssh]# ll
total8-rw-------1 root root0Jun2813:44 authorized_keys-rw-------1 root root2602Aug314:45 id_rsa-rw-r--r--1 root root570Aug314:45 id_rsa.pub
#id_rsa里存的是私钥,id_rsa.pub里存的是公钥 将公钥添加到github项目里。私钥添加到Jenkins配置中,后面会讲到。 路径:setting->SSH and GPG keys->New SSH key
3.安装Jenkins
这里使用Docker来安装Jenkins,也可以直接安装到Linux中。
注意拉取jenkins/jenkins镜像而不是jenkins,Jenkins官方最新镜像现在已改为jenkins/jenkins的了
docker pull jenkins/jenkins:lts
创建Jenkins工作目录和配置访问权限
mkdir/usr/local/jenkins
chown777/usr/local/Jenkins
chown777/var/run/docker.sock
运行Jenkins
docker run-itd-p8080:8080-p50000:50000--name jenkins--privileged=true-v/usr/local/jenkins:/var/jenkins_home-v/usr/bin/docker:/bin/docker-v/var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
#参数说明 参数解释:
#-p 8080:8080 -p 50000:50000 --映射jenkins端口
#–name jenkins --容器名称自己命名
#privileged=true --授予容器管理员权限
#-v /usr/local/jenkins:/var/jenkins_home --映射jenkins目录
#-v /usr/bin/docker:/bin/docker --映射docke目录 到时候需要在容器里执行docker命令
#-v /var/run/docker.sock:/var/run/docker.sock --映射docker执行命令 到时候需要容器里执行docker命令
#运行后用docker ps查看是否正常运行 运行起来后在浏览器直接输入IP:8080即可访问Jenkins
4.配置Jenkins
首次登录需要密码。
在这里插入图片描述
密码存放路径图中有提示,但由于我们是用Docker安装的,所以我们的密码存放在映射的目录下。
5.插件安装
登录进去以后这里默认选择推荐的插件。安装完全后有可能会有一些安装失败的,直接选择跳过,然后根据提示创建用户,不创建下次登录还是用之前的密码。进入主界面->系统管理->插件管理->高级->升级站点,将https改为http,完成后重启Jenkins再在可选插件里面搜索想要的插件安装。Git plugin需要安装,其他的看情况。
6.修改时区
将Jenkins时区设置为北京时间 打开Jenkins主页 ->【系统管理】->【脚本命令行】运行下面的命令
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai')
7.新建任务
源码管理选择Git
将Git的私钥填入凭据中。
脚步如下:
#!/bin/bash
#获取版本号
Githash=`git rev-parse--short HEAD`
docker stop demo
docker rm demo
echo--------------BuildingDockerImage-------------
echo $Githash
docker build-t demo:$Githash.
docker tag demo:$Githash demo:latest
echo--------------LaunchingContainer---------------
docker run--name demo-d-p80:80 demo:latest
设置完成后点击保存就完成了新建任务。
8.构建项目
点击立即构建,蓝色代表成功,失败可以查看控制台输出查看原因。
构建成功后可以在docker容器中查看是否已经运行。
9.踩坑系列
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
解决方案: 查看docker.sock是否具有访问权限,没有则添加访问权限。
ERROR: Timeout after 10 minutes
解决方案:
1.提高网络带宽。
2.设置浅克隆。
3.Dockerfire配置有需要依赖镜像的可以先提前在docker中拉取下来。
ERROR: Error cloning remote repo ‘origin’
解决方案:
1.检查git是否有拉取项目的权限。
2.检查项目地址是否正确。dockerfile 中执行过慢导致超时 解决方案:
Dockerfire配置有需要依赖镜像的可以先提前在docker中拉取下来,例如“FROM
mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS
base”执行太慢,则在docker中直接拉取,有可能docker拉取也会很慢,这时需要使用国内镜像去拉取,
10.dockerfile内容
#See https://aka.ms/containerfastmodetounderstand howVisualStudiousesthisDockerfiletobuild your imagesfor faster debugging.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR/app
EXPOSE80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR/src
COPY["WebAPI/WebAPI.csproj","WebAPI/"]
COPY["Common/Common.csproj","Common/"]
RUN dotnet restore"WebAPI/WebAPI.csproj"
COPY..
WORKDIR"/src/WebAPI"
RUN dotnet build"WebAPI.csproj"-cRelease-o/app/build
FROM build AS publish
RUN dotnet publish"WebAPI.csproj"-cRelease-o/app/publish
FROM base ASfinal
WORKDIR/app
COPY--from=publish/app/publish.
ENTRYPOINT["dotnet","WebAPI.dll"]