Jenkins+Docker+Git实现自动化部署

2022-08-23 08:37:48

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"]
  • 作者: Admin
  • 原文链接:https://blog.csdn.net/weixin_43618209/article/details/119727236
    更新时间:2022-08-23 08:37:48