Docker Compose构建Jenkins的实现

 更新时间:2022年06月30日 15:34:20   作者:micromaple  
本文主要介绍了Docker Compose构建Jenkins的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Jenkins

创建目标文件夹

$ cd /usr/local
$ mkdir docker
$ cd docker
$ mkdir jenkins
$ cd jenkins
$ vi docker-compose.yml

创建docker-compose.yml

内容如下:

version: '3.1'
services:
  jenkins:
    restart: always
    image: jenkins/jenkins
    container_name: jenkins
    ports:
      # 发布端口
      - 8080:8080
      # 基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信
      - 50000:50000
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./data:/var/jenkins_home

安装过程中会出现数据卷目录权限问题,用以下命令解决:

chown -R 1000 /usr/local/docker/jenkins/data

启动容器

docker-compose up -d

启动完成后访问:http://ip:8080

解锁 Jenkins

在这里插入图片描述

Jenkins 第一次启动时需要输入一个初始密码用以解锁安装流程,使用 docker logs jenkins 即可方便的查看到初始密码。也可以根据提示在容器中查看/var/jenkins_home/secrets/initialAdminPassword文件。

docker logs -f jenkins

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

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

67b9966bc4334a17ad7a7daef043bac8

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

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

插件安装

插件是 Jenkins的核心,其丰富的插件可以满足不同人群的不同需求。

Jenkins 官网插件地址:https://plugins.jenkins.io/

输入初始密码后,选择自选方式安装插件。

在这里插入图片描述

注意:除了默认勾选的插件外,一定要勾选 Publish over SSH 插件,这是我们实现持续交付的重点插件。

在这里插入图片描述

点击安装后,根据网络情况,安装时间不一样,耐性等待即可。

出现部分插件安装失败时,点击重试按钮,多次重试,如果还是无法安装,记住这些插件的名字,稍后可以手动安装。

在这里插入图片描述

安装成功效果图 创建管理员账号

在这里插入图片描述

进入首页

在这里插入图片描述

Jenkins手动安装插件

如下例子为安装中文插件

Manage Jenkins -> Manage Plugins -> Avaliable

在这里插入图片描述

右上角搜索框查找想要安装的插件,选中,点击Download now and install after restart

在这里插入图片描述

在这里插入图片描述

下载好后,重启Jenkins

docker-compose down
docker-compose up -d

配置 JDK & Maven

上传 JDK Maven tar 包到服务器(容器数据卷目录),进行解压缩。

Manage Jenkins -> Global Tool Configuration系统管理->全局工具配置)。

安装 JDK

/var/jenkins_home/jdk1.8.0_152

在这里插入图片描述

安装Maven

在这里插入图片描述

点击保存

安装动态参数插件

该插件的主要目的是为了方便我们后面在做项目构建时可以按照版本进行构建(支持一键回滚)

  • Manage Jenkins -> Manage Plugins -> Avaliable
  • 搜索 Extended Choice Parameter
  • 点击Download now and install after restart

在这里插入图片描述

配置 Jenkins 的 GitLab SSH 免密登录

交互式进入 Jenkins 容器

docker exec -it jenkins /bin/bash

生成 SSH KEY

ssh-keygen -t rsa -C "your_email@example.com"

查看公钥

cat /var/jenkins_home/.ssh/id_rsa.pub

复制公钥到 GitLab

在这里插入图片描述

手动克隆一次项目,该步骤的主要作用是为了生成和服务器的验证信息

jenkins@730898bc8b96:~$ git clone ssh://git@192.168.50.131:2222/test/test.git
Cloning into 'test'...
The authenticity of host '[192.168.50.131]:2222 ([192.168.50.131]:2222)' can't be established.
ECDSA key fingerprint is SHA256:x21ujjNoJ+7wXGszSI7s70szbK0/+7mTOeDP5h0saMs.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.50.131]:2222' (ECDSA) to the list of known hosts.
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
jenkins@730898bc8b96:~$ 

查看生成文件

jenkins@730898bc8b96:~$ cd .ssh/
jenkins@730898bc8b96:~/.ssh$ ls -al
total 20
drwx------  2 jenkins jenkins 4096 Apr  9 19:03 .
drwxr-xr-x 16 jenkins root    4096 Apr  9 19:03 ..
-rw-------  1 jenkins jenkins 2602 Apr  9 18:57 id_rsa
-rw-r--r--  1 jenkins jenkins  572 Apr  9 18:57 id_rsa.pub
-rw-r--r--  1 jenkins jenkins  222 Apr  9 19:03 known_hosts
jenkins@730898bc8b96:~/.ssh$ 

配置 Publish over SSH

系统管理 -> 系统设置 -> Publish over SSH

在这里插入图片描述

点击新增,其中 Remote Directory 是指 Jenkins 可以在目标服务器操作的目录,选择 Use password, 输入目标服务器密码

在这里插入图片描述

测试能否正常通信

在这里插入图片描述

点击保存

持续交付 Maven 项目

为项目创建标签

GitLab 中为项目创建标签

在这里插入图片描述

在这里插入图片描述

在 Jenkins 中创建 Maven Project

Jenkins 中创建一个基于 Maven 的任务

在这里插入图片描述

在这里插入图片描述

这里没有Maven 项目选项,需要安装插件 Maven Integration Pipeline Maven Integration

在这里插入图片描述

在这里插入图片描述

配置第一次构建

在这里插入图片描述

构建项目

在这里插入图片描述

查看构建日志

在这里插入图片描述

在这里插入图片描述

配置正式构建

增加参数化构建过程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这里使用了 Groovy 脚本来查询最近的 tags 版本,代码如下:

def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/myshop-dependencies;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ]
ver_keys.execute().text.tokenize('\n')

关闭源码管理

在这里插入图片描述

增加构建步骤

在这里插入图片描述

在这里插入图片描述

shell 脚本代码如下:

echo $RELEASE_VERSION
cd /var/jenkins_home/workspace/myshop-dependencies
git checkout $RELEASE_VERSION
git pull origin $RELEASE_VERSION
mvn clean package

使用参数化构建项目

在这里插入图片描述

批准 groovy 脚本

在这里插入图片描述

在这里插入图片描述

再次点击参数化构建

在这里插入图片描述

在这里插入图片描述

查看构建日志

在这里插入图片描述

在这里插入图片描述

发送文件或执行远程命令

在这里插入图片描述

在这里插入图片描述

Source files:需要传输到远程目标服务器的文件

**/*.jar,docker/**

Remove prefix:删除前缀。比如传输 **/*.jar,我们打包的 .jar 文件是在 target 目录下的,传输时会一并创建 target 目录,如果不希望创建 target 目录,则可以使用该参数屏蔽掉这些前缀文件夹。

Remote directory:在远程目标服务器创建操作目录

myapp

Exec command:在远程目标服务器执行控制台命令

cd /usr/local/jenkins/myapp
cp target/myapp-1.0.0-SNAPSHOT.jar docker
cd docker
docker build -t 192.168.50.128:5000/myapp:v1.0.0 .
docker push 192.168.50.128:5000/myapp:v1.0.0
docker-compose down
docker-compose up -d
docker image prune -f

到此这篇关于Docker Compose构建Jenkins的实现的文章就介绍到这了,更多相关Docker Compose构建Jenkins内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何用docker部署kafka

    如何用docker部署kafka

    本文详细介绍了使用Docker快速搭建Kafka集群的步骤,包括选用wurstmeister/kafka镜像、配置文件修改、集群启动与管理,适合需要在Docker环境中部署Kafka的开发者参考
    2024-09-09
  • Linux安装Docker详细教程

    Linux安装Docker详细教程

    这篇文章介绍了Linux安装Docker的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Docker创建MongoDB容器并添加root密码验证与更多用户详细步骤

    Docker创建MongoDB容器并添加root密码验证与更多用户详细步骤

    MongoDB是一个著名的面向文档的数据库,被许多现代Web应用程序使用,下面这篇文章主要给大家介绍了关于Docker创建MongoDB容器并添加root密码验证与更多用户的相关资料,需要的朋友可以参考下
    2023-01-01
  • Docker安装Redis容器的实现步骤

    Docker安装Redis容器的实现步骤

    本文主要介绍了Docker安装Redis容器的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • docker快速安装rabbitmq的方法步骤

    docker快速安装rabbitmq的方法步骤

    这篇文章主要介绍了docker快速安装rabbitmq的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • docker容器配置启动参数

    docker容器配置启动参数

    通过添加参数,我们可以在启动 Docker 容器时灵活地配置容器的行为,本文介绍了通过命令行和 Dockerfile 两种方式添加参数的方法,并给出了常用参数的示例,希望本文能帮助您理解如何在 Docker 启动时添加参数,并正确地配置和管理 Docker容器
    2023-10-10
  • 在vscode中使用ssh运行docker:从下载到运行全流程

    在vscode中使用ssh运行docker:从下载到运行全流程

    首先在本机或者服务器上下载docker并运行,本文目的旨在本机下载docker并打包,然后在服务器上进行加载,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-08-08
  • Docker网络模型以及容器通信详解续篇

    Docker网络模型以及容器通信详解续篇

    这篇文章主要介绍了Docker网络模型以及容器通信详解续篇的相关资料,通过学习Docker网路驱动模型,更好地解决容器间的通信问题,需要的朋友可以参考下
    2022-11-11
  • 使用elasticsearch定时删除索引数据

    使用elasticsearch定时删除索引数据

    这篇文章主要介绍了使用elasticsearch定时删除索引数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 基于spring-boot和docker-java实现对docker容器的动态管理和监控功能[附完整源码下载]

    基于spring-boot和docker-java实现对docker容器的动态管理和监控功能[附完整源码下载]

    Docker 是一个开源的应用容器引擎,和传统的虚拟机技术相比,Docker 容器性能开销极低,因此也广受开发者喜爱。这篇文章主要介绍了基于spring-boot和docker-java实现对docker容器的动态管理和监控 ,需要的朋友可以参考下
    2019-06-06

最新评论