docker + jenkins +net core自动化部署

开始安装jenkins

1.启动docker,下载Jenkins镜像文件

docker pull jenkins/jenkins

 

 

 

 2.创建Jenkins挂载目录并授权权限(我们在服务器上先创建一个jenkins工作目录 /var/jenkins_mount,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。 如果我们不这样做,那么如果需要修改容器配置文件,将会有点麻烦,因为虽然我们可以使用docker exec -it --user root 容器id /bin/bash 命令进入容器目录,但是连简单的 vi命令都不能使用)

mkdir -p /var/jenkins_mount
chmod 777 /var/jenkins_mount

3.创建并启动Jenkins容器

  -d 后台运行镜像

  -p 10240:8080 将镜像的8080端口映射到服务器的10240端口。

  -p 10241:50000 将镜像的50000端口映射到服务器的10241端口

  -v /var/jenkins_mount:/var/jenkins_mount /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /var/jenkins_mount目录

  -v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。

  --name myjenkins 给容器起一个别名

docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins

 

 

 

 4.查看jenkins是否启动成功,如下图出现端口号,就为启动成功了

docker ps -l

 

 

 

 5.查看docker容器日志。

docker logs myjenkins

 

 

 6.配置镜像加速,进入 cd /var/jenkins_mount/ 目录。

cd /var/jenkins_mount/

 

 

修改 vi  hudson.model.UpdateCenter.xml里的内容

修改前

将 url 修改为 清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

修改后

 

 7.访问Jenkins页面,输入你的ip加上10240

 

 8.管理员密码获取方法,编辑initialAdminPassword文件查看,把密码输入登录中的密码即可,开始使用。

vi /var/jenkins_mount/secrets/initialAdminPassword

 【注意 yum 安装不了 需要更换apt-get的源 但是后来发现是个坑装了yum也没用】

【apt-get 一般是ubuntu  或debian  ,不建议用yum 进行包管理】==》apt-get 的linux 版本,建议看本博客相邻文章

工作中,有时遇到linux操作系统没有安装yum 工具,导致工作不好向前开展,需要配置yum环境

  1. 查看系统版本,查看对应的source.list 源地址(cat /proce/Version)
  2. 更新源地址:(我的:/etc/apt/sources.list)
    1. Debian 国内常用镜像源
    2. 执行apt-get update
  3. 安装具体软件:apt-get install yum
    1. 用下面的方法安装net环境

      FROM jenkins/jenkins # Switch to root to install .NET Core SDK USER root # Show distro information! RUN uname -a && cat /etc/*release # Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current # Install dependency for .NET Core 2 RUN apt-get update RUN apt-get install -y curl libunwind8 gettext apt-transport-https # Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current # Install microsoft.qpg RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list' # Install the .NET Core framework RUN apt-get update RUN apt-get install -y dotnet-sdk-2.1.4 # Switch back to the jenkins user. USER jenkins

        

开始安装dotnet环境

上一步是在 Docker 安装的 Jenkins, 所以要在Jenkins容器里面再次安装 dotnet sdk 3.1

# 进入Jenkins容器
> docker exec -it -u root [containerid] /bin/bash

# 查看是否安装 dotnet sdk
> dotnet --info

# 安装dotnet 环境
> yum install dotnet-sdk-3.1

# 退出容器
> ctrl + P + Q

安装 git & publish over ssh 插件

1. git 插件用来获取代码
2. publish over ssh 用来将在Jenkins服务器打包的 artifacts 拷贝到 目标服务器

全局工具配置 Global Tool Configuration

  1. git: Path to Git executable:/usr/bin/git
  1. publish over ssh: (在系统管理-> 系统配置 中设置)

SSH Server

Name: myssh | ssh的名字,随便起的

Hostname: 118.31.227.53 | 目标主机的ip

Username: root | 主机的用户

Password: **** | 主机的密码

Remote Directory: /usr/commercial | 这个一定要注意,远程服务器的文件夹,该文件夹表示上传文件的存放目录,SSH上传的目录, 在这里遇到过坑

  •  新建任务

到这里,我们就可以开始新建 jenkins的构建任务了,我们可以点击新建任务,输入一个名字(gilead-commercial-portal-dev),选择自由风格的软件项目

  •  Step 1- 源码管理

在源码管理中,输入你项目的git 地址以及添加一个对应的git的用户名和密码凭据 信息, 并指定分支

Repository URL: http://sourcecode.gileadchina.cn:8080/GileadITGroup/CommercialPortal_SmallApp.git

Credentials: 新建一个可以访问的凭据

指定分支: */dev

  •  Step 2- 构建触发器

先忽略,这里手动构建

  •  Step 3- 构建环境

勾选 Delete workspace before build starts

勾选 Send files or execute commands over SSH after the build runs

SSH Server : 选择全局配置的ssh myssh
Transfers: 只填 Source files: **/.tar.gz

Source files 是我们需要上传的文件,这里我们利用 dotnet 命令发布 asp.net core 项目,然后压缩成 tar.gz 的压缩文件,所以这里配置 /.tar.gz ,/ 是你当前构建项目jenkins的

  •  Step 4- 构建

执行shell 脚本如下

cd /var/jenkins_home/workspace/gilead-commercial-portal-dev/03-Development/Src/WebAPI
dotnet publish -c Release -o published
tar -czvf published.tar.gz published

命令总共三行,1.首先进入jenkins的工作目录,2.然后在该目录下,执行dotnet 发布命令,发布到published 文件夹。3.最后将 published 文件夹 进行压缩成 published.tar.gz

特别注意:1. 这里的 /var/jenkins_home 是Jenkins容器内部的文件夹,映射到服务器磁盘的目录是 /data/jenkins_home 2. 目录要找到 .sln所在的目录,才能编译; 3. 可以看到工作目录 下面是任务文件夹,里面把git代码都pull下来了

  •  Step 5- 构建后操作

上一步结束之前,增加构建步骤,选择 Send build artifacts over SSH.

设置入下

# SSH Server
Name: myssh

# Transfers
Source files: 03-Development/Src/WebAPI/published.tar.gz (特别注意这里是相对工作目录的)

Remove prefix: 03-Development/Src/WebAPI (移除前缀目录,不然在你全局配置的SSH上传目录后面会加上这个目录)

Remote directory:不需要填

Exec commandcd /usr/commercial
tar -xvzf published.tar.gz
cd /usr/commercial/published
docker stop commercialportal
docker rm commercialportal
docker rmi gileadcommercialportalwebapi
docker build -t gileadcommercialportalwebapi .
docker run -d -p 5001:80 --name commercialportal gileadcommercialportalwebapi

到这里配置完成

FROM jenkins/jenkins # Switch to root to install .NET Core SDKUSER root # Show distro information!RUN uname -a && cat /etc/*release# Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current# Install dependency for .NET Core 2RUN apt-get updateRUN apt-get install -y curl libunwind8 gettext apt-transport-https# Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current# Install microsoft.qpgRUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpgRUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpgRUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'# Install the .NET Core frameworkRUN apt-get updateRUN apt-get install -y dotnet-sdk-2.1.4# Switch back to the jenkins user.USER jenkins

posted @ 2022-01-26 11:36  BK小鬼  阅读(738)  评论(0编辑  收藏  举报