centos7下jenkins部署donetcore 程序

1.在centos7下安装docker,通过yum来安装docker,执行如下命令

# yum install docker            --安装docker,最好不要安装最新版本的Docker,最新版本的docker不稳定可能存在bug

# systemctl start docker      --启动docker服务

# systemctl enable docker  --设置开机启动docker,防止机器关机后,docker服务需要手动启动

2.安装完docker后,接下来安装jdk(因为jenkins是java开发的)以及从网络下载jenkins安装包,注意 /data/software为我的系统保存jenkins包的路径,用户可以自行设置,注意jenkins的rpm包地址可能失效,失效的话,请登录jenkins官网进行下载,如果嫌网络下载速度慢,可以将离线下载的包,通过sftp工具拷贝到主机上进行安装

# yum install java  或者 # yum install java-1.8.0-openjdk

wget -P  /data/software https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.138.3-1.1.noarch.rpm

3.转到/data/software 下,安装jenkins包

# cd /data/software
# rpm -ivh jenkins-2.138.3-1.1.noarch.rpm

4.启动jenkins服务,并通过 http://localhost:8080 访问启动的jenkins(默认jenkins管理页面是ip:8080)

# systemctl start jenkins  //启动jenkins服务

# systemctl enable jenkins //开机启动jenkins服务

5.不出意外将通过地址能够访问jenkins,但是也不排除无法访问jenkins,因为centos7默认防火墙是开启,导致无法通过浏览器访问jenkins,我们可以通过在执行下面的命令,关闭系统的防火墙

# systemctl stop  firewalld.service  --关闭防火墙服务

# systemctl disable  firewalld.service  --取消开机启动防火墙服务

6.解决无法访问的问题后,通过地址访问到如下的页面

7.在centos7中执行下面的命令得到初始密码,进行登录操作

# vi /var/lib/jenkins/secrets/initialAdminPassword

8.输出密码后,进入如下界面,选择安装推荐插件

9.安装完推荐的插件后,进入创建管理员用户

10.设置完所有的步骤后,终于进入jenkins的管理界面,如下图

11.jenkins安装成功后,下面将继续介绍使用jenkins自动构建自己github上dotnet core程序

12.在jenkins主界面选择创建新任务,如下图

12.输入任务名称和选择构建咋样的风格的任务,选择完毕后,确定保存

13.确定后,进入任务配置页面,在general页面填写任务说明与描述,以及设置其他参数信息

14.填写general页面,进行源码管理,在这里我选择github,用户可以选择其他代码管理方式

15.进入centos7中执行命令,安装git

16.安装完成git后,再次查看之前报错的页面,错误消失了

17.因为在general页面配置了参数,我们将在源码管理页面使用,如下图所示

18.构建触发器页面,我这里不进行任何设置,用户可以凭借自己的需求自行设置

19.构建环境页面,因为想在构建环境页面,能够设置Version Number 的信息,在jenkins的系统设置中,插件管理安装Version Number 插件如下图,安装完成后,就可以在构建环境页面通过Version Number Plug插件生成优雅的版本号

20.构建页面,这里选择“执行shell”,填写shll脚本(这里最好将shell脚本命令写到文件中,以便后续的修改),在这里使用shell脚本,有利于后面的维护操作,不出问题,项目将构建成功

21.保存后,构建任务,发生错误(在jenkins任务控制台输出页面),输出如下图,执行 dotnet restore 命令失败,主要是系统中没有安装dotnet环境

22.在centos7中安装dotnet core运行环境

# rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm  --在安装Net之前,我们需要安装微软key以及依赖,这个命令每台机器只要执行一次就行,安装dotnet sdk时,根据项目的版本选择特定的sdk进行安装

#  yum install libunwind libicu --dotnet-sdk需要依赖“libunwind”和“libicu”

#  yum install dotnet-sdk-2.0.0   --安装dotnet-sdk 版本2.0.0

23.在执行构建的过程中出现了“sudo: no tty present and no askpass program specified”的错误,原因在于在shell脚本中,使用sudo命令来提升执行权限,因为Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行的异常,以下为解决方式

     在Jenkins宿主服务器上运行如下命令 
     # sudo visudo
     在文件的末尾加上一行 
     jenkins ALL=(ALL) NOPASSWD: ALL
     重启Jenkins服务 
     # systemctl restart jenkins
     最后,重新执行构建任务,不会出现先前的错误。

     如果误操作修改了/etc/sudoers的权限来修改上述文件,则会导致如下所示的错误:

      sudo :/etc/sudoers is world writable 
      sudo : no valid sudoers source found, quitting 
      sudo : unable to initialize poling plugin

       这是Linux的一种保护机制。因此,如果出现上述误操作,则需要执行如下命令来解决: 
       # pkexec chmod 0440 /etc/sudoers

24.在构建过程中,出现错误  shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory,具体的解决方案可以参考如下文章

https://blog.csdn.net/juyin2015/article/details/79233815

25.在执行shell脚本的过程,执行镜像启动的过程,容器启动后马上就关闭了,可以参考下面的文章

https://www.jianshu.com/p/f1e7a1630c64

26.下面是shell文件的具体内容,供大家参考

27.下面是Dockerfile文件的内容,供大家参考

28.使用docker exec 命令出现如下的错误

rpc error: code = 2 desc = oci runtime error: exec failed: 
container_linux.go:247: starting container process caused "process_linux.go:110: 
decoding init error from pipe caused \"read parent: connection reset by peer\""

用户可以通过以下的命令来进行处理

# yum update

# yum downgrade docker docker-client docker-common     --before and no idea for what the old version of docker, just run

以上就是完整的过程,总算写完了,花了不少时间,不足之处,还往大家的见谅。

猜你喜欢

转载自blog.csdn.net/dog123xuheyin/article/details/84781715