01-jenkins简介-部署与升级-Docker in Docker

jenkins简介

灵活的构建配置

  • Jenkins Shared Libraries

    代码重用:通过将常用的Pipeline代码块(如步骤、函数或类)封装在共享库中,可以跨多个Pipeline项目重用这些代码。这避免了在不同Pipeline中重复编写相同逻辑的需要,减少了冗余和潜在的错误。

    集中管理:共享库中的代码可以集中存储在一个或多个Git仓库中,这使得团队可以更容易地管理和维护这些代码。团队成员可以通过Git的分支、合并请求等功能协作修改共享库,并确保更改得到适当的审查和测试。

    灵活多变:由于共享库可以包含任意Groovy代码,因此它非常灵活。您可以定义各种函数、步骤和类来满足不同的构建、测试和部署需求。这使得Pipeline的编写更加灵活,可以轻松地适应项目的变化。

丰富的插件生态

  • Jenkins的插件市场提供了数千个插件,覆盖了代码质量检查、安全扫描、性能测试、部署工具、通知工具等多个方面。
  • 这些插件可以无缝集成到Jenkins中,扩展其功能,使其能够适应不同的工作流和工具链。

分布式构建

  • Jenkins支持分布式构建,可以将构建任务分配到多个节点(动静态Agent)上执行。
  • 这不仅提高了构建速度,还优化了资源使用,特别是在处理大型项目或高并发构建时。

报告和可视化

  • Jenkins提供了丰富的报告功能,包括构建结果、测试报告、代码覆盖率等,帮助团队快速了解构建状态和代码质量。
  • 它还支持将报告集成到第三方工具中,如SonarQube、Jenkins Dashboard等,以便更直观地展示构建数据。

安全性和权限管理

  • Jenkins支持细粒度的权限管理,可以为用户和组分配不同的权限,确保敏感信息的安全。
  • 它还提供了多种身份验证方式,如LDAP等,方便与现有的身份认证系统集成。

部署与升级

  • 综合考虑还是使用docker部署(个人测试需求),后面有机会再出一期k8s部署吧
  • 注意,如果要使用docker in docker,最好版本不要低于docker-ce-18

docker部署jenkins

  • 顺便把docker in docker也弄了
docker run \
--env JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m" \
--name docker-jenkins \
--privileged=true \
--restart=on-failure \
-itd \
-p 8081:8080 \
-p 50000:50000 \
-e JENKINS_OPTS='--prefix=/jenkins' \
-e TZ='Asia/Shanghai' \
-e JENKINS_ARGS='--prefix=/jenkins' \
-v /usr/bin/docker:/usr/bin/docker  \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/sysconfig/docker:/etc/sysconfig/docker \
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \
-v /apps/app/jenkins/jenkins_home:/var/jenkins_home \
-v /apps/app/jenkins/apache-maven-3.9.6:/var/apache-maven-3.9.6 \
jenkins:2.458
# 解决权限问题
docker exec -it -u root docker-jenkins bash
usermod -aG root jenkins

配置站点

cd jenkins_home
vim hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
  </site>
</sites>

升级Jenkins

请添加图片描述

## 下载完替换容器里这个war包就行
/usr/share/jenkins/jenkins.war

Docker in Docker

  • 简单的测试案例
  • 记得在jenkins的插件管理中安装 docker插件
    在这里插入图片描述
#!groovy

@Library('jenkinslib@main') _

// 引入共享库,这里后面再分享
// def tools = new org.devops.tools()
// def build = new org.devops.build()

pipeline {
    agent none

    stages {

        stage('Webbuild') {
            // 自定义agent
            agent {
                docker {
                    image 'node:10.19.0-alpine'
                    args  '-u 0:0 -w /workspace'
                }
            }
            // 执行
            steps {
                script {
                    // tools.PrintMes("NPM构建", 'green')
                    sh """
                        id
                        pwd
                        ls -lrt
                        npm -v
                    """
                }
            }
        }

        stage('build') {
            // 自定义agent
            agent {
                docker {
                    image 'maven:3.6.3-jdk-8'
                    args  '-v $HOME/.m2:/root/.m2'
                }
            }
            // 执行
            steps {
                script {
                    // tools.PrintMes("构建代码", 'green')
                    sh 'mvn -v'
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值