Jenkins-在Centos上配置自动化部署(Jenkins+Gitlab+Rancher)

环境:centos7

首先在服务器上安装好Jenkins和Gitlab和Rancher

Gitlab安装:https://www.cnblogs.com/1285026182YUAN/p/10726539.html

Jenkins安装:https://www.cnblogs.com/1285026182YUAN/p/11791171.html

Rancher安装:https://www.cnblogs.com/1285026182YUAN/p/11546743.html

打开Jenkins,地址:http://192.168.122.199:8078/

添加凭据

增加全局凭据

类型:SSH类型

username:自定义

Key:C:\Users\lihongyuan\.ssh\id_rsa(如何生成 SSH 密钥可在网上查到)

确定后,添加成功

创建一个新任务

项目配置General

配置源码管理

注意提前安装GitLab 插件。

Repository URL:GitLab中的项目地址

credentials:凭据

获取代码的分支 此处以 master 为例

构建触发器

记下 这个地址,配置到 GitLab中 (当有分支有提交时,自动推送代码过来,自动构建)

GitLab 中的配置方式:https://www.cnblogs.com/1285026182YUAN/p/10726539.html

点击高级,生成密钥,密钥配置到 GitLab中 (当有分支有提交时,自动推送代码过来,自动构建)

构建 执行shell脚本。

需安装dotnet core 环境:https://www.cnblogs.com/1285026182YUAN/p/11833674.html

也可在服务器上 /var/lib/jenkins/workspace 目录下 运行下面的语句。

Jenkins在shell脚本运行docker权限报错解决,参考:https://www.cnblogs.com/morang/p/9536622.html

Jenkins在执行shell脚本时可能会报类似如下的错误,是由于Jenkins没有docker权限

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/create?name=my-node-8: dial unix /var/run/docker.sock: connect: permission denied.

解决方法

将jenkins用户加入docker组
重启Jenkins服务

  1. sudo gpasswd -a jenkins docker
  2. systemctl restart jenkins

查看权限组

  1. cat /etc/group

OK 配置完成,可重新构建测试。

Jenkins自动部署Rancher:

获取Rancher API调用的语句,填写在Execute Shell 中。如下:

Rancher API调用的语句,请查询:https://www.cnblogs.com/1285026182YUAN/p/11546743.html

具体如下命令如下:

  1. #!/bin/bash
  2.  
  3. var=`date +%Y%m%d%H%M%S`
  4.  
  5. #发布
  6. dotnet publish ProjNetCore2/ProjNetCore2.csproj -c Release -o ../publish/
  7. #打镜像
  8. docker build -t mestest.cn:/proj_netcore2:$var publish/.
  9. #tag
  10. docker tag mestest.cn:/proj_netcore2:$var mestest.cn:/proj_netcore2:latest
  11. #登录
  12. docker login -p -u admin mestest.cn:
  13. #推送
  14. docker push mestest.cn:/proj_netcore2:$var
  15. docker push mestest.cn:/proj_netcore2:latest
  16.  
  17. curl -k -u "token-lgwv7:dvrkw5498mhlpczf8zn2sl99bbfgq69qhcfl2wblt4qtgsrhdh6fws" \
  18. -X PUT \
  19. -H 'Accept: application/json' \
  20. -H 'Content-Type: application/json' \
  21. -d '{
  22. "annotations": {
  23. "cattle.io/timestamp": "2019-11-21T00:58:54Z",
  24. "workload.cattle.io/state": "{\"bWVzdGVzdA==\":\"c-gqr2n:m-8e84afdc263f\"}"
  25. },
  26. "containers": [{
  27. "allowPrivilegeEscalation": false,
  28. "image": "mestest.cn:8085/proj_netcore2:'$var'",
  29. "imagePullPolicy": "IfNotPresent",
  30. "initContainer": false,
  31. "name": "mycoreweb",
  32. "ports": [{
  33. "containerPort": ,
  34. "dnsName": "mycoreweb-nodeport",
  35. "kind": "NodePort",
  36. "name": "8089tcp300051",
  37. "protocol": "TCP",
  38. "sourcePort": ,
  39. "type": "/v3/project/schemas/containerPort"
  40. }],
  41. "privileged": false,
  42. "readOnly": false,
  43. "resources": {
  44. "type": "/v3/project/schemas/resourceRequirements"
  45. },
  46. "restartCount": ,
  47. "runAsNonRoot": false,
  48. "stdin": true,
  49. "stdinOnce": false,
  50. "terminationMessagePath": "/dev/termination-log",
  51. "terminationMessagePolicy": "File",
  52. "tty": true,
  53. "type": "/v3/project/schemas/container"
  54. }],
  55. "created": "2019-11-13T05:21:50Z",
  56. "creatorId": null,
  57. "deploymentConfig": {
  58. "maxSurge": ,
  59. "maxUnavailable": ,
  60. "minReadySeconds": ,
  61. "progressDeadlineSeconds": ,
  62. "revisionHistoryLimit": ,
  63. "strategy": "RollingUpdate"
  64. },
  65. "deploymentStatus": {
  66. "availableReplicas": ,
  67. "conditions": [{
  68. "lastTransitionTime": "2019-11-20T12:05:09Z",
  69. "lastTransitionTimeTS": ,
  70. "lastUpdateTime": "2019-11-20T12:05:09Z",
  71. "lastUpdateTimeTS": ,
  72. "message": "Deployment has minimum availability.",
  73. "reason": "MinimumReplicasAvailable",
  74. "status": "True",
  75. "type": "Available"
  76. }, {
  77. "lastTransitionTime": "2019-11-21T00:43:28Z",
  78. "lastTransitionTimeTS": ,
  79. "lastUpdateTime": "2019-11-21T00:58:56Z",
  80. "lastUpdateTimeTS": ,
  81. "message": "ReplicaSet \"mycoreweb-74797bc87\" has successfully progressed.",
  82. "reason": "NewReplicaSetAvailable",
  83. "status": "True",
  84. "type": "Progressing"
  85. }],
  86. "observedGeneration": ,
  87. "readyReplicas": ,
  88. "replicas": ,
  89. "type": "/v3/project/schemas/deploymentStatus",
  90. "unavailableReplicas": ,
  91. "updatedReplicas":
  92. },
  93. "dnsConfig": {
  94. "type": "/v3/project/schemas/podDNSConfig"
  95. },
  96. "dnsPolicy": "ClusterFirst",
  97. "gids": [],
  98. "hostAliases": [],
  99. "hostIPC": false,
  100. "hostNetwork": false,
  101. "hostPID": false,
  102. "imagePullSecrets": [],
  103. "labels": {
  104. "workload.user.cattle.io/workloadselector": "deployment-default-mycoreweb"
  105. },
  106. "name": "mycoreweb",
  107. "namespaceId": "default",
  108. "nodeId": "",
  109. "ownerReferences": [],
  110. "paused": false,
  111. "projectId": "c-gqr2n:p-4zqh9",
  112. "publicEndpoints": [],
  113. "readinessGates": [],
  114. "restartPolicy": "Always",
  115. "scale": ,
  116. "schedulerName": "default-scheduler",
  117. "scheduling": {
  118. "node": {
  119. "nodeId": "c-gqr2n:m-8e84afdc263f"
  120. }
  121. },
  122. "selector": {
  123. "matchLabels": {
  124. "workload.user.cattle.io/workloadselector": "deployment-default-mycoreweb"
  125. },
  126. "type": "/v3/project/schemas/labelSelector"
  127. },
  128. "state": "active",
  129. "sysctls": [],
  130. "terminationGracePeriodSeconds": ,
  131. "transitioning": "no",
  132. "transitioningMessage": "",
  133. "uuid": "7ede4f06-05d5-11ea-b16e-000c296c6b53",
  134. "volumes": [],
  135. "workloadAnnotations": {
  136. "deployment.kubernetes.io/revision": "",
  137. "field.cattle.io/creatorId": "user-257tk"
  138. },
  139. "workloadLabels": {
  140. "cattle.io/creator": "norman",
  141. "workload.user.cattle.io/workloadselector": "deployment-default-mycoreweb"
  142. },
  143. "workloadMetrics": []
  144. }' \
  145. 'https://192.168.122.199:8443/v3/project/c-gqr2n:p-4zqh9/workloads/deployment:default:mycoreweb'

保存。

当Jenkins重新构建时,会自动调用Rancher的API,使Rancher项目重新部署。

Jenkins-在Centos上配置自动化部署(Jenkins+Gitlab+Rancher)的更多相关文章

  1. Jenkins-在windows上配置自动化部署(Jenkins+Gitblit)

    Jenkins-在windows上配置自动化部署(Jenkins+Gitblit) 1. 安装好 Jenkins(注:安装目录需没有空格,否则安装gitlab hook 插件时会报错,安装在c盘跟目录 ...

  2. Jenkins-在windows上配置自动化部署(Jenkins+Gitlab+IIS)

    Jenkins-在windows上配置自动化部署(Jenkins+Gitlab+IIS) web部署样例 windows服务部署样例 系统备份 在服务器上创建后缀名为.ps1的文件,例:BackUpD ...

  3. Jenkins-在windows上配置自动化部署(Jenkins+Bonobo.Git.Server)

    本文配置Jenkins.git服务器采用 Bonobo.Git.Server 1. 登录后,打开Jenkins界面,新建一个任务 2. 配置信息 3. 配置git项目地址,我们先进行其他配置,等会再继 ...

  4. 持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本

    持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本 一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负 ...

  5. jenkins结合脚本实现代码自动化部署及一键回滚至上一版本

    持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本 一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负 ...

  6. Windows+.Net Framework+svn+IIS在Jenkins上的自动化部署入门

    关于Jenkins的使用及安装,上一篇文章我已经介绍过了,Windows+.NetCore+git+IIS在Jenkins上的自动化部署入门.这篇主要是在jenkins如何安装SVN和MSBuild. ...

  7. Jenkins+windows+.netcore+git+iis自动化部署入门

    什么是自动化部署,就不介绍了,喜欢直接进入主题. 一. 所需环境: 1.系统为windows10 . 2.asp.net core3.1 runtime必须安装,因为我的代码是asp.net core ...

  8. AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署

    AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署 Amazon ElastiCache 连接至 Redis 节点 通过 AWS Command Line Inter ...

  9. Laravel学习笔记(三)--在CentOS上配置Laravel

    在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚.     今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下.     1)系统 ...

随机推荐

  1. VS 右键属性闪一下啥也打不开问题

    unity项目,从vs项目右键属性闪一下啥也打不开的问题这个是因为工程是unity管理的,里面有个插件默认设定不可查看修改属性修改:vs中打开“工程”->"选项"中(修改后这 ...

  2. Xeon 第一次训练赛 苏州大学ICPC集训队新生赛第二场(同步赛) [Cloned]

    A.给出一个字符串,求出连续的权值递增和,断开以后权值重新计数,水题 #include<iostream> #include<string> #include<cmath ...

  3. CSS-fontface

    @font-face { font-family: <identifier>; src: <fontsrc> [, <fontsrc>]*; <font> ...

  4. 二 SVN代码冲突的解决

    问题: A和B都是最新的代码,A修改了代码提交了,B也修改了代码,但是B提交的时候出现冲突的问题. 解决方案:编辑冲突 解决冲突: 方法一:将文件里面冲突的描述去掉,重新提交 方法二:软件解决冲突

  5. Html5 -- 语义标签兼容性处理

    方法一:通过js处理 方法二:完美的处理方式 no.1 !--[if lte IE 8]> <script type="text/javascript" src=&qu ...

  6. POJ 3685:Matrix 二分

    Matrix Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 5489   Accepted: 1511 Descriptio ...

  7. '/'和‘/*’差异造成的No mapping found for HTTP request with URI [/springMVC/welcome.jsp] in DispatcherServlet with name 'springmvc'

    在采用springMVC框架的时候所遇到的一个小问题,其中web.xml中关于servlet的配置如下: <servlet> <servlet-name>springmvc&l ...

  8. spring-页面模板配置

    一个可用的freemaker配置: ... @Bean public ViewResolver viewResolver() { FreeMarkerViewResolver fr = new Fre ...

  9. Day7 - F - C Looooops POJ - 2115

    A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != ...

  10. Java基础学习总结(一)——Java开发学习介绍

    Java平台: 1.J2SE java开发平台标准版 2.J2EE java开发费平台企业版 Java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序.不同的系统上要安装对 ...