环境介绍:
CentOS 7.5 Docker 19.03.8 Jdk 1.8.0 Git 2.20.4
注意:
如果将Jenkins作为Docker 容器运行,安装JDK跟Git不是必需的。
Docker安装教程:
https://blog.csdn.net/qq_44895681/article/details/105540702
在Docker中下载并运行Jenkins
建议使用的Docker映像是jenkinsci/blueocean image(来自 the Docker Hub repository)。
该镜像包含当前的长期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。
[root@localhost ~]# docker search jenkins NAME DESCRIPTION STARS OFFICIAL AUTOMATED jenkins Official Jenkins Docker image 4758 [OK] jenkins/jenkins The leading open source automation server 2021 jenkinsci/blueocean //推荐 https://jenkins.io/projects/blueocean 512 jenkinsci/jenkins Jenkins Continuous Integration and Delivery … 382 [root@localhost ~]# docker pull jenkinsci/blueocean //下载镜像 Using default tag: latest latest: Pulling from jenkinsci/blueocean e7c96db7181b: Pull complete ... [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jenkinsci/blueocean latest c522b7f778ef 21 hours ago 569MB [root@localhost ~]# docker run -itd -p 8080:8080 jenkinsci/blueocean [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca1e1c655590 jenkinsci/blueocean "/sbin/tini -- /usr/…" 2 hours ago Up 2 hours 0.0.0.0:8080->8080/tcp, 50000/tcp silly_wilbur
映射(例如“发布”)jenkinsci/blueocean 容器的端口8080到主机上的端口8080。第一个数字代表主机上的端口,而最后一个代表容器的端口。因此,如果您为此选项指定 -p 49000:8080 ,您将通过端口49000访问主机上的Jenkins。
访问Jenkins/blueocean Docker容器
通过终端/命令提示符访问docker exec
,则可以添加一个选项 --name jenkins-blueocean
,这会为 jenkinsci/blueocean 容器命名为 "jenkins-blueocean" 。这意味着你可以使用如下命令访问容器(通过单独的终端/命令提示符窗口) :
docker exec -it jenkins-blueocean /bin/bash
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca1e1c655590 jenkinsci/blueocean "/sbin/tini -- /usr/…" 2 hours ago Up 2 hours 0.0.0.0:8080->8080/tcp, 50000/tcp silly_wilbur [root@localhost ~]# docker exec -it ca1e1c65 /bin/bash //若docker run没有使用--name,也可用容器运行ID访问容器 bash-4.4$ java -version //容器内java环境版本 openjdk version "1.8.0_212" OpenJDK Runtime Environment (IcedTea 3.12.0) (Alpine 8.212.04-r0) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode) bash-4.4$ git --version //容器内git版本 git version 2.20.4 bash-4.4$ netstat -antulp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:50000 0.0.0.0:* LISTEN 6/java tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 6/java
访问Jenkins Docker容器控制台日志
您可能需要访问Jenkins控制台日志。例如,在解锁 Jenkins 作为安装后设置向导的一部分时。如果在docker run时没有指定分离模式选项 -d ,那么Jenkins控制台日志则是通过运行此Docker命令提示符窗口显示。
否则,您可以通过访问Jenkins控制台日志 Docker logs中 的 jenkinsci/blueocean ,使用以下命令:
docker logs <docker-container-name>
您的 <docker-container-name>
可以使用docker ps 命令获得 。如果您在运行docker run 命令时指定了 --name
参数(如:--name jenkins-blueocean
),则只需使用以下 docker logs 命令:
docker logs jenkins-blueocean
如果没有指定--name
,也可以使用容器运行时的ID来查看容器日志。
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca1e1c655590 jenkinsci/blueocean "/sbin/tini -- /usr/…" 2 hours ago Up 2 hours 0.0.0.0:8080->8080/tcp, 50000/tcp silly_wilbur [root@localhost ~]# docker logs ca1e1c65
安装后设置向导
[root@localhost ~]# docker exec -it ca1e1c65 /bin/bash bash-4.4$ cat /var/jenkins_home/secrets/initialAdminPassword 12a1f53845254ce9ae67d221c181be94
在解锁Jenkins 页面上,将此密码粘贴到管理员密码字段中,然后单击继续 。
自定义Jenkins
两个选项可以设置:
- 安装建议的插件 - 安装推荐的一组插件,这些插件基于最常见的用例。
- 选择要安装的插件 - 选择安装的插件集。当你第一次访问插件选择页面时,默认选择建议的插件。
注意:
可以看到上面有些插件安装失败,在所有插件安装完之后可以点击“重试”,来继续安装之前安装失败的插件,也可以点击“继续”,再按照下面的方法安装插件。
插件安装失败解决方法:https://blog.csdn.net/qq_44895681/article/details/104633654
创建第一个管理员用户
Blue Ocean 入门
安装 Blue Ocean
Blue Ocean 可以用以下方式安装:
- 作为 已有Jenkins实例上的一组插件
- Jenkins-Docker镜像的一部分
在已有Jenkins实例上安装
在大多数平台安装Jenkins时,默认情况下不安装 Blue Ocean 插件 及其所有其他依赖插件(组成Blue Ocean“插件套件”)。
要在现有的Jenkins实例上安装Blue Ocean插件套件,您的Jenkins实例必须运行Jenkins 2.7.x或更高版本。
任何拥有 Administer 权限(通过 基于Matrix 安全设置)的Jenkins用户都可以在Jenkins实例上安装插件 。拥有次权限的Jenkins用户还可以配置系统上其他用户的权限。
要将Blue Ocean安装到您的Jenkins实例:
1.如果需要,请确保您已经登录到jenkins(作为具有 管理员 权限的用户).
2.从Jenkins主页(即Jenkins经典用户界面的仪表板),单机左侧的 管理Jenkins ,然后单击中心的 管理插件 。
3.点击 可用的 选项卡,然后在 过滤 文本框键入 blue ocean ,将过两次插件列表为名称/描述包含“blue”和“ocean”的插件名单。
4.选择 安装 列顶部的 Blue Ocean 插件复选框,然后单击 立刻下载并在重启后安装 按钮(推荐)或 安装而不重新启动按钮 。
注意:
无需选择此过滤列表中其他插件的复选框,因为 Blue Ocean 插件具有其他插件的依赖关系(构成Blue Ocean的插件套件),当您点击安装, 其他插件将被自动选择和安装。如果你选择 安装不重启 按钮, 你可能需要重启Jenkins来获取Blue Ocean的完整功能。
Blue Ocean 在安装后不需要额外的配置,现有的pipeline 和其他项目(如自由风格作业)将照常运行。但是,请注意, 首次使用特定的 Git 服务(即GitHub,Bitbucket或普通Git服务器)在 Blue Ocean中创建pipeline 时,Blue Ocean会提示您输入credentials 以访问Git服务器上的存储库。在Blue Ocean可以将 Jenkinsfile
写入存储库之前
作为Jenkins-Docker镜像的一部分
Blue Ocean套件也与Jenkins捆绑在一起,作为Jenkins Docker镜像 (jenkinsci/blueocean)的一部分,该镜像可以从 Docker Hub 存储库获得。
访问 Blue Ocean
一旦Jenkins环境安装了Blue Ocean,登录到Jenkins经典UI 后,您可以通过点击左侧的 打开Blue Ocean 来访问Blue Ocean页面。或者,您可以在您的Jenkins url后面追加 /blue 直接访问Blue Ocean (如 http://192.168.2.73:8080/blue)。
创建流水线
Blue Ocean 能够更容易的在Jenkins中创建一个流水线。
流水线可以由源代码控制中存在的Jenkinsfile
生成, 或者使用 Blue Ocean 流水线编辑器 生成一个新的流水线(作为 Jenkinsfile 会提交到源代码控制中)。
配置流水线项目
GitHub仓库
在 Connect to GitHub 部分的Your GitHub access token
字段, 输入你的 GitHub 访问令牌。
如果你没有 GitHub 访问令牌, 点击 Create an access key here
。
创建访问令牌
1.在一个新的选项卡中, 登录 GitHub 账户并且在 GitHub的 New Personal Access Token 页面,为你的GirHub访问令牌 (e.g. Blue Ocean)输入一个简短的 Token description。
Note: 访问令牌通常是一个字母数字字符串,它通过你的GitHub 账户对你的GitHub账户访问各种特性和区域的权限进行相应的处理。新的访问令牌过程 (通过上面的 Create an access key here 链接触发) 具有预选的合适权限, Blue Ocean 需要访问你的GitHub账户并与其进行交互。
2.向下滚动直到页面的末尾,然后点击 Generate token。
3.在生成的 Personal access tokens 页面, 复制新生成的访问令牌。
4.回到Blue Ocean, 粘贴访问令牌到 Your GitHub access token*字段并点击 *Connect。
你当前/登陆的Jenkins用户现在可以访问 GitHub a账户 (由你的访问令牌提供), 所以你现在可以 选择 GitHub 账户/组织和存储库。
Jenkins 为Jenkins用户注册了带有以下详细信息的凭证:
Domain:blueocean-github-domain
ID:github
Name:<jenkins-username>/****** (GitHub Access Token)
选择 GitHub 账户/组织和存储库
此时, Blue Ocean 提示你选择 GitHub 账户或你所在的组织, 以及它包含的用于构建你流水线项目的存储库。
1.在 Which organization does the repository belong to? 部分, 点击:
- 你的 GitHub 账户为你自己的 GitHub 仓库中的或GitHub的其他地方创建流水线项目。
- 你所在的组织为组织内的GitHub仓库创建流水线项目。
2.在 Choose a repository 部分, 点击存储库 (在你 GitHub 账户或组织内) ,从而构建你的流水线项目。如果你的仓库的列表很长, 你可以使用 Search 选项来筛选这个列表。
3.点击 Create Pipeline。
Blue Ocean 将会扫描你本地仓库的分支来获得 Jenkinsfile
并为每个包含 Jenkinsfile
的分支运行流水线。如果Blue Ocean 找不到任何 Jenkinsfile
, 会提示你通过 流水线编辑器 (通过再次点击 Create Pipeline)创建一个。
注意: 通过Blue Ocean创建的流水线项目实际上是 "多分支流水线"。因此, Jenkins在你仓库的任何分支中寻找至少一个Jenkinsfile 。
这样我们就构建了一个简单的流水线项目。