Jenkins服务安装配置

目录

Jenkins 环境配置

配置 中文插件

配置 Maven 插件

配置 JDK

配置 Git

配置 SSH 远程服务器

Jenkins 项目配置

构建 maven 项目

构建 pipeline 流水线项目 

Jenkins 用户权限配置


什么是 Jenkins

Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI,Continuous Integration)和持续交付/持续部署(CD/CD,Continuous Delivery/Continuous Deployment)。它帮助开发团队自动化构建、测试、部署和交付软件的过程,从而提高软件开发的效率和质量。

Jenkins 下载安装

Jenkins启动包官网下载地址:https://www.jenkins.io/download/

下载完成后把 jenkins.war 包上传到 Linux 服务器上 (windows 或 linux 都是这个包)

注意:如果jenkins版本太高,需要使用JDK11或更高才能启动Jenkins服务。并不影响你在 Jenkins 中构建或部署使用 JDK 8 开发的代码。

Linux 环境准备

JDK17:用于启动Jenkins服务

JDK8:你的代码中使用的是JDK8的话,Jenkins使用JDK8编译打包你的代码。

Maven3.6+:Jenkins编译你的代码需要的maven版本。

Git:Jenkins拉取你的Git仓库代码。git 已经把 ssh 公钥配置到git代码仓库。
SSH:Linux服务器允许用户远程连接到系统,进行管理、维护和文件传输。

启动 Jenkins 服务,命令如下:

java -jar jenkins.war
# httpPort:指定 jenkins服务的端口
# prefix:指定 jenkins服务的根目录
java -jar jenkins.war --httpPort=8080 --prefix=/myjenkins

# 指定 jenkins服务的最小内存了最大内存
java -Xms512m -Xmx4g jenkins.war --httpPort=8080 --prefix=/myjenkins

浏览器打开 Jenkins 页面:http://127.0.0.1:8080/

安装推荐的插件,因为我们不知道要安装哪些插件,推荐的插件会把保证使用的插件安装上来

插件安装中,等待插件安装完成

插件安装完成之后,会进入到创建管理员账号密码页面


修改 admin 账号的密码

因为上面的admin账号的密码不生效,还是原来的 /root/.jenkins/secrets/initialAdminPassword 路径下的密码,所以这里要修改一下密码


Jenkins 环境配置

配置 中文插件

搜索 localLocalization: Chinese 插件,点击 Install after restart 安装后重启Jenkins服务

进入 Dashboard->Manage Jenkins->Appearance,配置如下


配置 Maven 插件

1. 下载 Maven 插件

搜索 Maven Integration,点击 Install after restart 安装后重启Jenkins服务

2. 配置 Maven

进入 Dashboard->Manage Jenkins->Tools


配置 JDK

进入 Dashboard->Manage Jenkins->Tools


配置 Git

进入 Dashboard->Manage Jenkins->Tools

linux 使用 which git 命令查看 git可执行文件的路径

配置 Git 登录的账户密码

进入 Dashboard->Manage Jenkins->Credentials


配置 SSH 远程服务器

下载 Publish Over SSH 插件,下载完成之后重启 jenkins 服务。

配置 远程服务器

进入 Dashboard->Manage Jenkins->System


Jenkins 项目配置

构建 maven 项目

1. 新建 maven 项目

2. 配置任务Git

保存之后构建,就可以看到 jenkins 在向 git 仓库中拉取代码了

如果还想maven构建完成之后再发布,因为主要讲的不是maven项目,所以还想maven发布的,请看这里 https://download.csdn.net/download/a1053765496/11192998


构建 pipeline 流水线项目 

下载 pipelineblue ocean 插件,下载完成之后重启 jenkins 服务。

1. 新建流水线任务

2. 编写声明式流水线脚本

脚本结构如下:

pipeline{
    agent any
    tools {
        jdk 'jdk1.8'
    }
    stages{
        stage("拉取代码"){
            steps {           
                echo '拉取成功'
            }
        }
    }
    post{            
        always{
            echo 'always say goodbay'
        }
    }
}

脚本说明

pipeline{        // 声明这是一个 Pipeline 脚本

    agent any    // 表示这个 Pipeline 可以在任何可用的 Jenkins 节点(agent)上运行。
    // agent none   # 表示在 Pipeline 的顶层不指定任何全局的 agent,通常用于在每个 stage 中单独指定 agent。适用于需要在不同阶段使用不同环境的情况。
    // agent {    // 使用指定的 Docker 镜像作为运行环境。Jenkins 会启动一个 Docker 容器来运行 Pipeline
    //    docker {
    //        image 'maven:3.6.3-jdk-8'
    //        label 'docker'
    //    }
    // }
    // agent ... 还有很多写法

    tools {
        jdk 'jdk1.8'         // 指定 mvn 命令使用的jdk版本, 这里的 'jdk1.8' 是在全局工具配置中设置的 JDK 名称
    }

    stages{                  // 定义了流水线的不同阶段(stages),每个阶段包含一个或多个步骤(steps)
        stage("拉取代码"){    // 表示一个阶段,包含一个名称和一些步骤。
            steps {            // 定义了该阶段内的步骤,可以是 shell 脚本、构建命令等。
                echo '拉取成功'
            }
        }
    }
    post{            // post 可选的块,位于 Pipeline 的最后,用于定义构建结束后无论成功或失败都要执行的动作。你可以根据不同的构建状态(如成功、失败等)来设置相应的操作。
        always {
            echo 'This always runs, no matter what the build result is.'
            // 无论构建状态如何,这个步骤都会执行。
        }
        success {
            echo 'Build was successful!'
            // 可以在这里添加成功时需要执行的步骤,例如通知或归档工件
        }
        failure {
            echo 'Build failed!'
            // 在构建失败时执行的操作,例如发送失败通知
        }
        unstable {
            echo 'Build is unstable.'
            // 在构建状态为不稳定时执行的操作
        }
        aborted {
            echo 'Build was aborted!'
            // 在构建被手动中止时执行的操作
        }
        changed {
            echo 'Build status has changed!'
            // 在构建状态发生变化时执行的操作
        }
    }
}

打印 pipeline 工作目录,拉取下来的代码就存在工作目录中

pipeline {
    agent any
    stages {
        stage('打印 pipeline 工作目录') {
            steps {
                script {
                    echo "Workspace: ${env.WORKSPACE}"
                }
            }
        }
    }
}

修改 pipeline 工作目录

pipeline{
    agent any
    stages{
        stage("拉取代码"){
            steps {
                dir('/app/aaa') {    # 修改工作目录,这样 git 拉取下来的代码就在修改后的目录,可以一个项目一个目录,避免多个项目在一个目录下的混乱
                    git branch: 'test', credentialsId: 'cedc056b-9f2d-4375-be48-f0d124ca069c', url: 'git@codeup.aliyun.com:659542b3e7f9ce3ec819b592/demo.git'
                    echo '拉取成功'
                }
            }
        }
    }
}

3. 使用 pipeline 脚本自动拉取 git 仓库的代码

pipeline{
    agent any
    stages{
        stage("Git拉取代码"){
            steps {
                dir('/app/aaa') {
                    git branch: 'test', credentialsId: 'cedc056b-9f2d-4375-be48-f0d124ca069c', url: 'git@codeup.aliyun.com:659542b3e7f9ce3ec819b592/demo.git'
                    echo '拉取成功'
                }
            }
        }
    }
}

4. 使用 maven 打包拉取下来的代码

pipeline{
    agent any
    tools {
        jdk 'jdk1.8' // 指定 mvn 命令使用的jdk, 这里的 'jdk1.8' 是在全局工具配置中设置的 JDK 名称
    }
    stages{
        stage("Git拉取代码"){
            steps {
                dir('/app/aaa') {    // 指定 pipeline 的工作目录
                    git branch: 'test', credentialsId: 'cedc056b-9f2d-4375-be48-f0d124ca069c', url: 'git@codeup.aliyun.com:659542b3e7f9ce3ec819b592/demo.git'
                    echo '拉取成功'
                }
            }
        }
        stage("Maven打包代码"){
            steps {
                dir('/app/aaa') {    // 指定 pipeline 的工作目录
                    // shell 脚本代码, 不需要加 #!/bin/bash 因为 sh 时 Jenkins 默认会使用 Shell 来运行这些命令。 sh """执行多行shell脚本命令的语法"""
                    sh """ 
                    mvn clean install -Dmaven.test.skip=true
                    """
                    echo '构建完成'
                }
            }
        }
        
    }
}

5. 发送 jar 包到测试/生产服务器

编写  pipeline 脚本

pipeline{
    agent any
    tools {
        jdk 'jdk1.8' // 指定 mvn 命令使用的jdk, 这里的 'jdk1.8' 是在全局工具配置中设置的 JDK 名称
    }
    stages{
        stage("Git拉取代码"){
            steps {
                dir('/app/aaa') {
                    git branch: 'test', credentialsId: 'cedc056b-9f2d-4375-be48-f0d124ca069c', url: 'git@codeup.aliyun.com:659542b3e7f9ce3ec819b592/demo.git'
                    echo '拉取成功'
                }
            }
        }
        stage("Maven构建代码"){
            steps {
                dir('/app/aaa') {
                    // shell 脚本代码, 不需要加 #!/bin/bash 因为 sh 时 Jenkins 默认会使用 Shell 来运行这些命令。 sh """执行多行shell脚本命令的语法"""
                    sh """ 
                    mvn clean install -Dmaven.test.skip=true
                    """
                    echo '构建完成'
                }
            }
        }
        stage("推送到测试服务器"){
            steps {
                dir('/app/aaa') {
                    sshPublisher(publishers: [sshPublisherDesc(configName: '24服务器', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'nohup java -jar /app/bbb/demo.jar > /dev/null 2>&1 & ', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/app/bbb', remoteDirectorySDF: false, removePrefix: 'java_project/target/', sourceFiles: 'java_project/target/*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                }
            }
        }
    }
}

Jenkins 用户权限配置

下载 Role-based Authorization Strategy,下载完成之后重启 jenkins 服务。

进入 Dashboard->Manage Jenkins->Security

新建一个 test 用户

新建一个全局的 test_role 的角色

新建一个 项目 test_role 角色

给 用户 test 分配 角色 test_role

登录 test 用户,查看效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

7 号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值