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环境
- 查看系统版本,查看对应的source.list 源地址(cat /proce/Version)
- 更新源地址:(我的:/etc/apt/sources.list)
- Debian 国内常用镜像源
- 执行apt-get update
- 安装具体软件:apt-get install yum
-
用下面的方法安装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
- git: Path to Git executable:/usr/bin/git
- 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 command:
cd /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