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服务

sudo gpasswd -a jenkins docker
systemctl restart jenkins

查看权限组

cat /etc/group

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

Jenkins自动部署Rancher:

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

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

具体如下命令如下:

#!/bin/bash

var=`date +%Y%m%d%H%M%S`

#发布
dotnet publish ProjNetCore2/ProjNetCore2.csproj -c Release -o ../publish/
#打镜像
docker build -t mestest.cn:/proj_netcore2:$var publish/.
#tag
docker tag mestest.cn:/proj_netcore2:$var mestest.cn:/proj_netcore2:latest
#登录
docker login -p -u admin mestest.cn:
#推送
docker push mestest.cn:/proj_netcore2:$var
docker push mestest.cn:/proj_netcore2:latest curl -k -u "token-lgwv7:dvrkw5498mhlpczf8zn2sl99bbfgq69qhcfl2wblt4qtgsrhdh6fws" \
-X PUT \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"annotations": {
"cattle.io/timestamp": "2019-11-21T00:58:54Z",
"workload.cattle.io/state": "{\"bWVzdGVzdA==\":\"c-gqr2n:m-8e84afdc263f\"}"
},
"containers": [{
"allowPrivilegeEscalation": false,
"image": "mestest.cn:8085/proj_netcore2:'$var'",
"imagePullPolicy": "IfNotPresent",
"initContainer": false,
"name": "mycoreweb",
"ports": [{
"containerPort": ,
"dnsName": "mycoreweb-nodeport",
"kind": "NodePort",
"name": "8089tcp300051",
"protocol": "TCP",
"sourcePort": ,
"type": "/v3/project/schemas/containerPort"
}],
"privileged": false,
"readOnly": false,
"resources": {
"type": "/v3/project/schemas/resourceRequirements"
},
"restartCount": ,
"runAsNonRoot": false,
"stdin": true,
"stdinOnce": false,
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"tty": true,
"type": "/v3/project/schemas/container"
}],
"created": "2019-11-13T05:21:50Z",
"creatorId": null,
"deploymentConfig": {
"maxSurge": ,
"maxUnavailable": ,
"minReadySeconds": ,
"progressDeadlineSeconds": ,
"revisionHistoryLimit": ,
"strategy": "RollingUpdate"
},
"deploymentStatus": {
"availableReplicas": ,
"conditions": [{
"lastTransitionTime": "2019-11-20T12:05:09Z",
"lastTransitionTimeTS": ,
"lastUpdateTime": "2019-11-20T12:05:09Z",
"lastUpdateTimeTS": ,
"message": "Deployment has minimum availability.",
"reason": "MinimumReplicasAvailable",
"status": "True",
"type": "Available"
}, {
"lastTransitionTime": "2019-11-21T00:43:28Z",
"lastTransitionTimeTS": ,
"lastUpdateTime": "2019-11-21T00:58:56Z",
"lastUpdateTimeTS": ,
"message": "ReplicaSet \"mycoreweb-74797bc87\" has successfully progressed.",
"reason": "NewReplicaSetAvailable",
"status": "True",
"type": "Progressing"
}],
"observedGeneration": ,
"readyReplicas": ,
"replicas": ,
"type": "/v3/project/schemas/deploymentStatus",
"unavailableReplicas": ,
"updatedReplicas":
},
"dnsConfig": {
"type": "/v3/project/schemas/podDNSConfig"
},
"dnsPolicy": "ClusterFirst",
"gids": [],
"hostAliases": [],
"hostIPC": false,
"hostNetwork": false,
"hostPID": false,
"imagePullSecrets": [],
"labels": {
"workload.user.cattle.io/workloadselector": "deployment-default-mycoreweb"
},
"name": "mycoreweb",
"namespaceId": "default",
"nodeId": "",
"ownerReferences": [],
"paused": false,
"projectId": "c-gqr2n:p-4zqh9",
"publicEndpoints": [],
"readinessGates": [],
"restartPolicy": "Always",
"scale": ,
"schedulerName": "default-scheduler",
"scheduling": {
"node": {
"nodeId": "c-gqr2n:m-8e84afdc263f"
}
},
"selector": {
"matchLabels": {
"workload.user.cattle.io/workloadselector": "deployment-default-mycoreweb"
},
"type": "/v3/project/schemas/labelSelector"
},
"state": "active",
"sysctls": [],
"terminationGracePeriodSeconds": ,
"transitioning": "no",
"transitioningMessage": "",
"uuid": "7ede4f06-05d5-11ea-b16e-000c296c6b53",
"volumes": [],
"workloadAnnotations": {
"deployment.kubernetes.io/revision": "",
"field.cattle.io/creatorId": "user-257tk"
},
"workloadLabels": {
"cattle.io/creator": "norman",
"workload.user.cattle.io/workloadselector": "deployment-default-mycoreweb"
},
"workloadMetrics": []
}' \
'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. 简单模拟IOC容器:返回对象并能抛出异常

    本次要求:已知com.zzj.vo包下分别有Tiger.lion.Elephant三个Java源文件,请据此实现以下功能:①.自定义一个名为Component的注解,要求该注解只能用于类且代码运行时该 ...

  2. vue-router 一个十分简单的应用场景

    时间:2018-03-28 关于vue-router: 这里只大致说一下构建过程和使用情况,将就看看!! 我使用的是vue-cli脚手架+webpack构建的项目 安装vue-cli脚手架 npm i ...

  3. docker学习笔记-03:docker的镜像原理

    镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件.它包含运行某个环境所需的所有内容,包括代码.库.环境变量和配置文件. 一.镜像是什么 (一).联合文件系统(Unio ...

  4. 字符串题汇总(python3)

    1.最小编辑距离 假设有两个字符串s1和s2,计算通过增添.删除.替换三种操作后,从s1转变为s2所需要的操作次数. #coding=utf-8 class Solution: def editDis ...

  5. 杭电oj1859:最小长方形(水题)

    最小长方形 题目链接 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...

  6. Vue2.x双向数据绑定

    1.vue双向绑定原理 vue.js 则是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给 ...

  7. Maven的原理和使用

    一.Maven能做什么 1.假设我们有10个项目,都需要引入spring core模块,那么需要十份重复的Spring Core.jar和commons-logging.jar 使用Maven:mav ...

  8. Centos7安装mysql5.7.21

    1.卸载系统自带的 MariaDB [root@CentOS ~]# rpm -qa | grep mariadb mariadb-libs--.el7.x86_64 [root@CentOS ~]# ...

  9. UVA - 122 Trees on the level (二叉树的层次遍历)

    题意:给定结点值和从根结点到该结点的路径,若根到某个叶结点路径上有的结点输入中未给出或给出超过一次,则not complete,否则层次遍历输出所有结点. 分析:先建树,建树的过程中,沿途结点都申请了 ...

  10. Fedora 19安装以后的优化

    Fedora 19安装以后的优化 转载自 http://www.zhukun.net/archives/6614 最近安装了Fedora 19 32bit,以下是一些优化配置,使之更适合国人使用. 1 ...