首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >构建部署流水线GitHub+Docker+Jenkins

构建部署流水线GitHub+Docker+Jenkins

原创
作者头像
山有扶苏
修改2022-05-13 00:33:54
1.2K0
修改2022-05-13 00:33:54
举报
文章被收录于专栏:程序猿Janwee程序猿Janwee

1. Overview

构建部署流水线能让我们自动化地进行程序构建和部署。在这篇文章中,我们选择GitHub作为源代码管理仓库,构建引擎选择Jenkins,使用Docker作为部署引擎。

2. Install Jenkins Server in Linux

2.1 从Docker Hub拉取Jenkins官方镜像

docker pull jenkins

2.2 运行镜像

docker run -itd --name jenkins_ci -u root --restart unless-stopped \
-p 8080:8080 -p 50000:50000 \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/local/dockerinfo/jenkins:/var/jenkins_home \
jenkins/jenkins

注:因为我们需要在Jenkins容器内部运行Docker命令,所以将宿主机的docker.sock文件和/usr/bin/docker挂载到Jenkins容器内部,这样Jenkins容器内不需要额外安装Docker。

成功启动容器后,访问http://{your ip}:8080。若响应登录界面,则表示我们成功安装了Jenkins服务器。


3. Login,Create a User and an Instance

3.1 解锁Jenkins

复制{Jenkins Home}/secrets/initialAdminPassword中的密码以root身份登录Jenkins。

3.2 创建管理员用户并配置实例

按照向导填写用户名、密码、邮箱创建管理员用户,实例配置使用默认配置。


4. Create a Pipeline

以创建我的Book Store工程下的Eureka Server模块的构建部署流水线为例。Book Store是个分布式微服务架构的多模块聚合工程,工程结构如下:

book-store    
||
||
|---eureka-server
||    |
||    ---pom.xml
||
|---pom.xml
|
---...

其中,book-store根目录的pom.xml定义了book-store是个聚合父模块,eureka-server作为微服务的注册服务是book-store下的聚合子模块。

4.1 安装Git和Maven Integration插件

选择“系统管理”-“插件管理”,搜索下载Git和Maven Integration插件,安装完成后重启Jenkins使插件生效。

4.2 使用SSH协议保护远程Shell脚本拉取GitHub仓库的信息安全

在Jenkins容器内的bash终端中使用ssh-keygen生成公钥私钥对:

ssh-keygen

进入密钥目录并查看公钥文件,复制里面的公钥:

cat root/.ssh/id_rsa.pub

其中{jenkins_home}表示Jenkins的根目录路径。

在GitHub中的“SSH and GPG keys”菜单下点击“New SSH key”,填写公钥并保存。

4.3 全局凭据配置

选择“系统管理”-“全局凭据(Manage Credentials)”,点击“添加凭据”,选择凭据类型,并填写GitHub的凭据内容。

4.4 全局工具配置

点击“全局工具配置”,配置JDK及Maven环境。

4.5 告知Jenkins如何构造Eureka Server应用的Docker镜像

编辑Dockerfile新文件:

vim Dockerfile

Dockerfile文件内容,以我的Eureka Server为例:

FROM java:8

MAINTAINER key "user's email address"

ADD target/eureka-server-0.0.1-SNAPSHOT.jar erksvr.jar

EXPOSE 7100

ENTRYPOINT ["java","-jar","/erksvr.jar"]

拷贝到Jenkins容器内部的任务工作空间:

docker cp Dockerfile jenkins:/var/jenkins_home/workspace/{Jenkins任务名称}/

4.6 创建Jenkins构建和部署任务

点击“新建任务”,输入任务名称,选择“构建一个Maven项目”,在“源码管理”栏选择“Git”,并填写Git仓库地址并指定版本分支,GitHub的认证凭据选择3.3中预先配置的全局凭据。

在“源码管理”中选择“Git”并填写Book Store工程的GitHub仓库URL并指定分支。

在“构建触发器”中选择默认的“Build whenever a SNAPSHOT dependency is built”。

在“构建(Build)”中的“Root POM”项输入“pom.xml”,表示book-store根目录下的pom.xml文件;“Goals and options”项填写:

install -pl eureka-server

表示只构建eureka-server模块。

在"构建后步骤(Post Steps)"中选择“Run only if build succeeds”,点击添加“执行shell”步骤,shell脚本如下:

cname="eureka-server"
cid=$(docker ps -a -f "name=${cname}"  --format {{.ID}})
if ["$cid" != ""]; then
	docker stop "$cid"
	docker rm "$cid"
fi

cd "$WORKSPACE"/eureka-server
docker build -t eureka-server .

docker rmi $(docker images -q -f dangling=true)

docker run -itd --name eureka-server -p 7100:7100 eureka-server

点击“保存”保存该任务的配置。


5. Deploy Your Application

选择创建的任务,点击“立即构建”,等待构建结果,若任务成功,则表示我们的构建和部署流水线成功搭建。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Overview
  • 2. Install Jenkins Server in Linux
    • 2.1 从Docker Hub拉取Jenkins官方镜像
      • 2.2 运行镜像
      • 3. Login,Create a User and an Instance
        • 3.1 解锁Jenkins
          • 3.2 创建管理员用户并配置实例
          • 4. Create a Pipeline
            • 4.1 安装Git和Maven Integration插件
              • 4.2 使用SSH协议保护远程Shell脚本拉取GitHub仓库的信息安全
                • 4.3 全局凭据配置
                  • 4.4 全局工具配置
                    • 4.5 告知Jenkins如何构造Eureka Server应用的Docker镜像
                      • 4.6 创建Jenkins构建和部署任务
                      • 5. Deploy Your Application
                      相关产品与服务
                      容器镜像服务
                      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档