`
郑云飞
  • 浏览: 813877 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jenkins in Docker

 
阅读更多

作为一款优秀的持续集成工具,jenkins在日常的项目中经常会用到,本次实战我们在docker下快速搭建一个Jenkins服务,并体验其项目构建能力;

实战环境

windows、mac、linux等系统,只要装了docker服务都可以作为实战环境,我用的是ubuntu16,安装的docker版本是:17.03.2-ce;

准备文件映射路径

jenkins的容器启动后,重要的文件我们希望能保存在当前电脑,否则容器被损坏或者删除后就找不回这些文件了,因此要在当前电脑上准备一个目录作为文件映射,注意文件夹权限问题,我这边准备的本机目录是/usr/local/work/jenkins,并且执行了chmod 777 /usr/local/work/jenkins以确保docker进程有权限读写此目录;

启动容器

  • 在控制台执行以下命令,docker会去hub.docker.com下载最新的jenkins官方镜像,然后启动一个名为j01的容器,并且将容器的8080和50000端口直接映射到本机的8080和50000端口:
docker run -p 8080:8080 -p 50000:50000 -v /usr/local/work/jenkins:/var/jenkins_home --name j01 -idt jenkins
  • 执行命令docker logs -f j01查看容器的控制台日志,看到如下信息表示jenkins服务启动成功:
Dec 31, 2017 6:29:24 AM jenkins.install.SetupWizard init
INFO: 

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

f0f2e35d549f49b486b0ca2bdf3756d6

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

Dec 31, 2017 6:29:29 AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Dec 31, 2017 6:29:30 AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
Dec 31, 2017 6:29:30 AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Dec 31, 2017 6:29:30 AM hudson.WebAppMain$3 run
INFO: Jenkins is fully up and running
--> setting agent port for jnlp
--> setting agent port for jnlp... done
Dec 31, 2017 6:29:33 AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tools.JDKInstaller
Dec 31, 2017 6:29:33 AM hudson.model.AsyncPeriodicWork$1 run
INFO: Finished Download metadata. 11,856 ms

 

访问服务

  • 我的LINUX电脑IP是192.168.119.155,在浏览器输入http://192.168.119.155:8080,即可访问到jenkins的服务,由于密码还没有设置,将会看到下图信息: 
    这里写图片描述

  • 页面提示密码文件的位置:/var/jenkins_home/secrets/initialAdminPassword,由于我们已经将/var/jenkins_home目录映射到本机的/usr/local/work/jenkins目录,所以密码文件在当前电脑的位置是:/usr/local/work/jenkins/secrets/initialAdminPassword;

  • 打开此文件后发现只有一行内容,复制后粘贴到页面唯一的输入框中,再点击右下角的”Continue”按钮;

  • 在等待页面停留数十秒后,出现以下页面,左边按钮是直接安装推荐的插件配置,右边按钮是自己选择所需的插件,这里我们点击左边按钮,把推荐的插件装了: 
    这里写图片描述

  • 如下图,jenkins开始逐个安装插件: 
    这里写图片描述

  • 如下图,提示创建一个管理员,填写完相关信息并提交,就可以使用jenkins服务了: 
    这里写图片描述

安装maven

点击“系统管理” -> “Global Tool Configuration”,如下图: 
这里写图片描述

新建一个maven,填写完毕后点击底部的”Apply”再点击“保存”,记得勾选“自动安装”,如下图: 
这里写图片描述

安装mave插件

点击“系统管理” -> 管理插件”,如下图: 
这里写图片描述

选中第二个tab”可选插件”,在右上角输入框中输入“Maven Integration plugin”,页面上就会显示出”Maven Integration plugin”这个插件,勾选后点击下面的“直接安装”按钮,即可安装maven插件,如下图: 
这里写图片描述

配置SSH登录github

后面的实战中,我们会将代码放到github上,所以此处要做ssh登录的配置,假设您在git上的注册邮箱是”abcdef@gmail.com”,账号是”abcdef”,您需要执行以下步骤:

在控制台执行以下命令登录到jenkins容器:
docker exec -it j01 /bin/bash登录到容器后,执行以下命令产生SSH证书:
ssh-keygen -t rsa -C "abcdef@gmail.com"
 

会出现几个询问,直接按回车键继续;

  • 执行以下命令配置全局用户信息的账号:
git config --global user.name "abcdef"

 

  • 执行以下命令配置全局用户信息的邮箱:
git config --global user.email abcdef@gmail.com

 

  • 公钥被存储到以下位置,打开复制所有内容,然后登录git,添加到SSH keys中:
/var/jenkins_home/.ssh/id_rsa.pub

 

至此,git配置就完成了,接下来我们创建一个任务,来试试项目项目构建的功能;

git项目

为了体验jenkins自动拉取代码和构建项目,我在git上准备了一个spring boot的web工程,内容很简单只有一个controller,地址是:git@github.com:zq2599/jenkinsdemo.git

构建maven项目

回到主页,新建一个任务,选择”构建一个maven项目”,如下图:

这里写图片描述

新的页面中,“源码管理”位置选择”Git”,在”Repository URL”位置输入工程地址”git@github.com:zq2599/jenkinsdemo.git”,再点击“Add”按钮,选择”Jenkins”,如下图:

这里写图片描述

在弹出的页面中输入git登录的信息,注意选择SSH登录,用户名要用生成SSK KEY的时候的参数,如下图: 
这里写图片描述

配置完成后,依次点击最下面的”Apply”和”保存”两个按钮,完成存档并退出编辑页面;

构建

如下图红框所示,在任务列表页面,点击任务名称,进入任务详情页: 
这里写图片描述

在任务详情页,如下图红框所示,点击“立即构建”: 
这里写图片描述

此时项目就开始构建了,如果想看清楚具体的执行情况,可以点击下图中的红框位置,会跳转到控制台信息输出的页面: 
这里写图片描述

如果git配置正确,并且web工程本身可以编译成功,那么会看到控制台页面提示的构建成功信息,如下图: 
这里写图片描述

验证构建结果

为了验证构建结果,我们可以去把编译jar包下载下载试试,下载地址如下图所示: 
这里写图片描述

点击target文件夹后,可以看到构建好的文件:mavendockerplugindemo-0.0.1-SNAPSHOT.jar,点击这个文件即可通过浏览器下载到本地;

本地打开控制台,进入mavendockerplugindemo-0.0.1-SNAPSHOT.jar文件所在的目录,执行以下命令即可启动这个spring boot的web工程,端口号为8081:

java -jar mavendockerplugindemo-0.0.1-SNAPSHOT.jar --server.port=8081

 

可以看到熟悉的springboot启动信息,如下图: 
这里写图片描述

在浏览器输入:localhost:8081,可以正常访问此web服务,如下图:

这里写图片描述

至此,基本的Jenkins服务搭建和使用的实战都完成了,后面的章节中,我们一起继续实战Jenkins更丰富的功能;

分享到:
评论

相关推荐

    jenkins-with-docker-in-docker:Docker中具有Docker的基于Jenkins的标准化CI环境

    带有Docker-in-Docker的Jenkins带有Docker-in-Docker的Jenkins容器映像是同时包含Jenkins和Docker-in-Docker的标准化连续集成环境。 这意味着它具有易于运输的Docker容器的所有优点,此外还具有从内部构建Docker容器...

    Jenkins篇-docker安装Jenkins最新版本

    1)根据官方链接操作即可: ... -v /var/run/docker.sock:/var/run/docker.sock \ jenkinsci/blueocean 2)容器部署完成之后,登录页面http://虚拟机的IP:18080 进入容器查看密码: 输入密码开始按照提

    jenkins-nginx-docker:Docker中具有Nginx反向代理的Jenkins LTS-包括Jenkins的docker-in-docker

    Jenkins LTS-Nginx-Docker中的Docker 詹金斯是什么? Jenkins提供了一种简单的方法,可以使用管道为语言和源代码存储库的几乎任何组合设置持续集成或持续交付环境,并自动执行其他常规开发任务。 虽然Jenkins并...

    docker-compose部署配置jenkins的详细教程

    【Docker Compose 部署 Jenkins 知识点详解】 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。在本教程中,我们将使用 Docker Compose 部署 Jenkins,一个流行的持续集成和持续交付(CI/CD)平台...

    docker-jenkins-nginx:在 nginx 服务器后面为 Jenkins 构建 Docker

    用于在 nginx 后面运行 jenkins 服务器的 Docker 构建(使用 google oAuth 作为身份验证)docker-in-docker 可用,因此 Jenkins 可以启动 dockerized 构建 容器设置 导师 docker 容器将在启动时运行 supervisor ...

    Docker.Jenkins.Continuous.Delivery

    The combina on of con nuous delivery being executed on applica ons running in Docker containers will allow us to see, in enterprise IT, the exponen al growth in innova on that we have seen in ...

    实现Jenkins docker部署,设置svn/maven/jdk/ssh,编写自动部署工程脚本

    第一步:docker search jenkins,找到评星最多的官方镜像,pull后创建容器,没想到无法启动,无奈放弃,选用第二个jenkins/jenkins,此为第一个坑:-( 第二步:创建容器: 新建目录 /data/jenkins_home,然后 ...

    【gitlab+jenkins+docker】第四节 docker版mysql安装和配置

    【gitlab+jenkins+docker】手把手教你搭建基于gitlab+jenkins+docker的项目的自动化部署流程前言路径创建封装docker启动命令创建启动配置文件启动后记跳转 前言 使用现成的docker容器能够快速搭建mysql服务,且管理...

    dind-jenkins-slave:Docker-in-Docker詹金斯奴隶

    丁詹金斯奴隶 Docker-in-Docker詹金斯奴隶 包含: Java 1.3.3 1.0.1-将其保留一段时间以实现向后兼容 0.7.0 可用作Jenkins从属...要运行Docker-in-Docker Jenkins从站,请执行以下操作: docker run --privile

    详解Docker+Jenkins+Gitlab+Django应用部署实践

    一、背景介绍 ... 当研发push本地代码到gitlab-server后,webhook自动触发jenkins构建应用 在docker host上部署应用git clone来自gitlabserver源码,并启动应用 前端可以放置lb来做高可用 数据库连接云数

    使用Jenkins Pipeline插件和Docker打造容器化构建环境.docx

    4. 使用 Docker-in-Docker 模式:在容器中运行 Docker 可以实现高效的自动化构建和部署,但是需要小心地配置 Docker-in-Docker 模式,以避免权限问题。 5. Jenkins JNLP 代理容器的启动方式:Jenkins JNLP 代理容器...

    jenkins-java-8-11-docker:Dockerfile创建具有Java 8和Java 11支持的Jenkins CI映像

    jenkins-java-8-11-docker Dockerfile以创建包含Java 8和Java 11支持的Jenkins CI映像。 在Jenkins容器中安装了docker-ce,以允许在Jenkins中...sudo ufw allow in on docker0 from 172.17.0.0/16 to 172.17.0.0/16

    基于Docker容器安装Jenkins

    1.下面是按照最新版Jenkins的docker compose的yaml文件 jenkins:  image: ‘jenkins/jenkins:lts’  container_name: jenkins  restart: always  ports:  – ‘8080:8080’  – ‘50000:50000’  volumes:  ...

    DCOS on YARN的技术实践.pptx

    2. **Jenkins in Docker on YARN** Jenkins是一个流行的持续集成工具,通过在Docker容器中运行Jenkins,可以利用YARN的资源管理能力,实现在大规模集群上的分布式构建和测试。这种方式使得Jenkins实例可以轻松扩展...

    Docker on Windows

    depth with the Docker platform, making your apps more secureBuild a Continuous Deployment pipeline by running Jenkins in DockerDebug applications running in Docker containers using Visual StudioPlan ...

    Docker结合Jenkins部署vue项目

    Docker结合Jenkins部署vue项目 接上篇 Vue项目没什么好说的,在本地一般使用vue ui启动vue管理的前端,然后在里面进行启动 Vue官方说可以不通过ngin来部署,但是如果上生产环境,建议还是要走nginx 安装nginx 这里...

    Docker on Windows.pdf

    depth with the Docker platform, making your apps more secureBuild a Continuous Deployment pipeline by running Jenkins in DockerDebug applications running in Docker containers using Visual StudioPlan ...

Global site tag (gtag.js) - Google Analytics