# httpd-demo **Repository Path**: wezhai/httpd-demo ## Basic Information - **Project Name**: httpd-demo - **Description**: Jenkins 流水线演示项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-01-23 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 环境准备 * Docker Swarm集群搭建 * NFS Server搭建 Swarm 集群 节点名称|IP地址|说明 ---|---|--- node1|10.250.190.126|Docker Master节点 node2|10.250.190.127|Docker Worker节点 node3|10.250.190.128|Docker Worker节点 nfsserver|10.250.218.51|Nfs Server节点 #### 创建Jenkins Master卷 在Docker Master节点上创建持久化存储卷 ``` docker volume create --driver local \ --opt type=nfs \ --opt o=addr=10.250.218.51,nolock,soft,rw \ --opt device=:/opt/swarm/jenkins/jenkins_home \ jenkins_home ``` 为节点创建存放配置使用的存储卷(所有节点操作) ``` docker volume create --driver local \ --opt type=nfs \ --opt o=addr=10.250.218.51,nolock,soft,rw \ --opt device=:/opt/jenkins/soft/init_scripts \ config_center ``` #### 创建devops网络 创建网络可使在该网络下的容器使用服务名称进行通讯。 ``` docker network create -d overlay devops ``` ### 启动Jenkins Master节点 为避免在同一个节点上运行多个Jenkins节点,在选择节点时应将其固定在某一个节点上运行```Jenkins Master```或```Jenkins Slave```节点 在node1节点上启动Jenkins Master节点。 * ```--network devops```表示创建的服务属于devops网络 * ```--mount``` 将宿主机资源挂载到容器内,Jenkins-master节点挂载了Jenkins主目录```/var/jenkins_home```和Docker Cli(方便Jenkins调用系统命令) * ```--constraint 'node.hostname == node1'```限制了服务只能运行在hostname为node1的节点上。 ``` docker service create --name jenkins-master \ --network devops \ --mount "type=volume,source=jenkins_home,destination=/var/jenkins_home,readonly=false" \ --mount "type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock" \ --mount "type=bind,source=/usr/bin/docker,destination=/usr/bin/docker" \ --publish 80:8080 \ --publish 50000:50000 \ --replicas 1 \ --constraint 'node.hostname == node1' \ cesresearch/jenkins:2.138.3 ``` 初次启动通过日志获取登陆Jenkins使用的初始化密码。或者进入Jenkins-master容器,读取```/var/jenkins_home/secrets/initialAdminPassword```获取 ``` docker service logs jenkins-master ``` 通过```http://10.250.190.126```登陆Jenkins设置管理员用户和密码。 **创建slave节点** 1. 系统管理-节点管理-新建节点,远程工作目录填写 ```/root/jenkins```并保存. 2. 在节点列表中点击刚创建的节点如```slave01``` 3. 复制secret的值,后续启动slave时会用到。 #### 启动slave01 1. 配置文件目录以只读的方式被挂载到slave01的```/config_center```目录 2. 和Jenkins-master一样,slave节点也将```Dcoker CLi```挂载到容器内,方便任务调用Docker ``` docker service create --name slave01 \ --user root \ --network devops \ --constraint 'node.hostname == node2' \ --mount "type=volume,source=config_center,destination=/config_center,readonly=true" \ --mount "type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock" \ --mount "type=bind,source=/usr/bin/docker,destination=/usr/bin/docker" \ cesresearch/jnlp-slave:centos-3.27 -url http://jenkins-master:8080/ 1e9693c12e26d76ad33ea9eaa8a4629040edf6971be468c9440b4a7ec982d56a slave01 ``` #### 启动slave02 在node3上运行slave02 ``` docker service create --name slave02 \ --user root \ --network devops \ --constraint 'node.hostname == node3' \ --mount "type=volume,source=config_center,destination=/config_center,readonly=true" \ --mount "type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock" \ --mount "type=bind,source=/usr/bin/docker,destination=/usr/bin/docker" \ cesresearch/jnlp-slave:centos-3.27 -url http://jenkins-master:8080/ d32e6337c5ab8bb2ae04c4a62abd11674b1942b6d05a9ccb74a563ab26075e7e slave02 ``` 使用以上方法添加更多slave节点 可以为各个节点新增标签,用于对节点分组,如jdk1.8.0_131, maven3.5.0等等,任务关联标签,以达到分布式执行任务。 #### 示例 1. 安装```Git```和```Pipeline```插件, 进入"系统管理-插件管理-可选插件"安装需要的插件 2. 新建任务-流水线,名称随意 3. 进入该任务,点击配置 4. 在Pipeline段配置如下,其他项默认保存 ``` Definition:Pipeline script from SCM SCM:Git Repositories: Repository URL: https://gitee.com/zhaiweiwei/httpd-demo.git Credentials: 无 ```