Jenkins安装部署(基于docker镜像)

1. Jenkins

1.1 简介

        作为一款开源的自动化服务器,它可以帮助自动化各种任务,包括构建、测试和部署软件。Jenkins 以其灵活性和扩展性而闻名,它可以与许多版本控制系统、构建工具和其他软件交付工具集成。

一些主要的特性和用途:

  1. 持续集成(Continuous Integration, CI):Jenkins 可以自动运行构建任务,每当代码库发生变化时,它就会触发构建过程,帮助团队及早发现集成错误。

  2. 持续交付和持续部署(Continuous Delivery and Deployment, CD/CD):Jenkins 支持自动化部署流程,可以将软件自动部署到测试或生产环境,从而加快软件交付速度。

  3. 丰富的插件生态系统:Jenkins 拥有一个庞大的插件库,这些插件可以帮助用户扩展 Jenkins 的功能,以支持各种工具和服务。

  4. 易于集成:Jenkins 可以与 Git、Subversion、Maven、Gradle 等多种版本控制系统和构建工具集成,实现无缝的构建和部署流程。

  5. 多平台支持:Jenkins 可以在多种操作系统上运行,包括 Linux、Windows 和 macOS。

  6. 分布式构建:Jenkins 支持分布式构建,可以将构建任务分布到多个节点上执行,提高构建效率。

  7. 易于使用:Jenkins 提供了一个直观的 web 界面,用户可以通过它轻松配置构建任务和管理构建过程。

  8. 定时和触发构建:用户可以设置定时任务或根据特定的触发器(如代码提交)来运行构建。

  9. 报告和通知:Jenkins 可以生成构建报告,并在构建成功或失败时发送通知,帮助团队成员跟踪构建状态。

  10. 可扩展性:用户可以自定义 Jenkins 的行为,创建自定义插件来满足特定的构建和部署需求。

1.2架构图

2. Jenkins尝鲜

         该案例使用一个Java后端小demo作为演示。

2.1 安装Jenkins

执行脚本:docker-compose -f docker-compose-jenkins.yml up -d

version: '3.8'# 执行脚本;docker-compose -f docker-compose-v1.0.yml up -d
services:
  jenkins:
    image: jenkins/jenkins:2.439
    container_name: jenkins
    privileged: true
    user: root
    ports:
      - "9090:8080"
      - "50001:50000"
    volumes:
      - ./jenkins_home:/var/jenkins_home # 如果不配置到云服务器路径下,则可以配置 jenkins_home 会创建一个数据卷使用
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/local/bin/docker
      - ./maven/conf/settings.xml:/usr/local/maven/conf/settings.xml # 这里只提供了 maven 的 settings.xml 主要用于修改 maven 的镜像地址
      - ./jdk/jdk1.8.0_202:/usr/local/jdk1.8.0_202 # 提供了 jdk1.8,如果你需要其他版本也可以配置使用。
    environment:
      - JAVA_OPTS=-Djenkins.install.runSetupWizard=false # 禁止安装向导「如果需要密码则不要配置」docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
    restart: unless-stopped

volumes:
  jenkins_home:

脚本说明:

  • ./jenkins_home:/var/jenkins_home 是在云服务器端挂一个映射路径,方便可以重新安装后 Jenkins 依然存在。你也可以配置为 jenkins_home:/var/jenkins_home 这样是自动挂在 volumes jenkins_home 数据卷下。

  • docker 两个 docker 的配置是为了可以在 Jenkins 中使用 Docker 命令,这样才能在 Docker 安装的 Jenkins 容器内,使用 Docker 服务。

  • ./maven/conf/settings.xml:/usr/local/maven/conf/settings.xml 为了在 Jenkins 中使用映射的 Maven 配置。

  • ./jdk/jdk1.8.0_202:/usr/local/jdk1.8.0_202 用于在 Jenkins 中使用 jdk1.8

  • JAVA_OPTS=-Djenkins.install.runSetupWizard=false 这个是一个禁止安装向导,配置为 false 后,则 Jenkins 不会让你设置密码,也不会一开始就安装一堆插件。如果你需要安装向导可以注释掉这个配置。并且当提示你获取密码时,你可以执行;docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword 获取到登录密码。

2.2  安装插件

更新镜像源:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 

安装docker、git、maven.。可以安装Chinese汉化。

注:安装的插件需要重启后生效

2.3 配置maven、jdk、git、docker文件

文件路径:

jdk--->/usr/java

maven--->/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation 

  • Maven全局配置

 划重点:这个文件需要在Jenkins内部存在

  • JDK

 划重点:这个文件需要在Jenkins内部存在,bin的上一层,没有该文件就会报如下错误

  •  Git

  • maven

  • docker

compose启动时已经将文件映射,docker的命令在Jenkins中可以使用

2.4 添加凭证 

2.5 新建任务(构建流水线)

工作目录:/var/jenkins_home/workspace

任务名称:决定了项目名称

代码从哪里拉取:https://gitee.com/kaikai99/test-ci-cd.githttps://gitee.com/kaikai99/test-ci-cd.git

项目中需要Dockerfile文件,详解:https://blog.csdn.net/qq_41256535/article/details/139564482

Root POM:clean install -Dmaven.test.skip=true

这个pom文件的位置从当前位置有子目录的话需要用 " . "

构建后执行shell

 

# 先删除之前的容器和镜像文件
if [ "$(docker ps -a | grep jenkins-demo)" ]; then
if [ "$(docker ps | grep jenkins-demo)" ]; then
docker stop jenkins-demo
fi
docker rm jenkins-demo
fi
if [ "$(docker images -q kaikai/jenkins-demo)" ]; then
docker rmi kaikai/jenkins-demo
fi

# 重新生成
cd /var/jenkins_home/workspace/jenkins-demo
docker build -t kaikai/jenkins-demo .
docker run -itd -p 8811:8811 --name jenkins-demo kaikai/jenkins-demo

 

3. 注意事项

  •  注意环境配置,在构建过程中容易出现找不到maven的settings.xml文件or显示settings.xml是一个目录,那可能是Jenkins中没有安装maven。

解决方案:

下载maven安装包,解压到/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation路径下,然后更改全局配置中maven的配置路径,到settings.xml。

  • 找不到jdk,可能是路径没配置对(Jenkins内部也需要jdk)。

解决方案:

将下载的java安装包解压到/usr/java,更改全局配置中Java的配置路径,到bin的上一层。

  • 容器构建好之后,运行出现 ‘找不到主类’,说明打包方式不对。

解决方案:在pom.xml文件中添加

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.6.0</version>
        </plugin>
    </plugins>
</build>

会打包两次,构建过程中出现repackage说明插件生效。

打包方式参考:https://www.jb51.net/program/306793zgg.htm

  • 出现springboot版本异常或者插件版本异常

解决方案:对比需要的版本和拉取的版本

  • jdk17只支持springboot---><version>2.6.0</version>以上的,同理插件版本也是2.6.0以上。

要在Jenkins构建后部署Docker镜像,您可以按照以下步骤进行配置: 1. 安装Docker:确保Jenkins所在的主机已经安装Docker。您可以根据操作系统的不同,使用适当的方式来安装Docker。 2. 在Jenkins安装相关插件:打开Jenkins的管理界面,导航到"Manage Jenkins" -> "Manage Plugins"。在“可选插件”选项卡中搜索并安装"Docker Pipeline"插件和"CloudBees Docker Build and Publish"插件。 3. 配置Docker凭证:在Jenkins的管理界面中,导航到"Credentials" -> "System" -> "Global credentials (unrestricted)"。点击"Add Credentials",选择"Docker Host Certificate Authentication"或"Docker Registry Authentication",然后填写相应的凭证信息。 4. 创建Jenkins Pipeline任务:在Jenkins的主界面中,点击"New Item"创建一个新的Pipeline任务。在Pipeline定义中,可以使用Groovy语法编写构建和部署步骤。 5. 在Pipeline脚本中定义构建和部署步骤:在Pipeline脚本中,您可以使用Docker Pipeline插件提供的方法来构建和部署Docker镜像。例如,您可以使用docker.build()方法来构建镜像,使用docker.withRegistry()方法来推送镜像Docker仓库。 以下是一个简单的Pipeline脚本示例: ```groovy pipeline { agent any stages { stage('Build') { steps { script { docker.build('my-docker-image') } } } stage('Deploy') { steps { script { docker.withRegistry('https://docker-registry.example.com', 'my-docker-credentials') { docker.image('my-docker-image').push() } } } } } } ``` 在上述示例中,"my-docker-image"是要构建和部署Docker镜像的名称。您可以根据实际情况进行修改。 6. 保存并触发构建:保存Pipeline任务配置后,您可以手动触发构建,或者设置自动触发条件,例如代码提交到版本控制库时触发构建。 配置完成后,Jenkins将会在构建过程中自动构建Docker镜像,并将其部署到指定的Docker仓库中。您可以根据需要进行定制和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值