Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • 技术文档

  • GitHub

  • Nodejs

  • Chrome

  • VSCode

  • VSCode 更新文档

  • AIGC

  • Other

    • 检测网络是否能够访问 Disqus
    • 搭配 Jenkins 实现自动化打包微前端多个项目
      • 使用 Homebrew 安装 Jenkins
      • 启动 Jenkins
      • 访问 Jenkins
      • 初始设置
        • 解锁 Jenkins
        • 安装推荐插件
        • 创建管理员用户
      • 配置 Jenkins
        • 全局设置
        • 插件管理
      • 创建和配置作业
        • 创建新作业
      • 实践
        • 创建一个 Pipeline 作业
        • 配置 Pipeline 脚本
        • 保存并运行作业
  • 技术
  • Other
Henry
2024-09-15
目录
使用 Homebrew 安装 Jenkins
启动 Jenkins
访问 Jenkins
初始设置
解锁 Jenkins
安装推荐插件
创建管理员用户
配置 Jenkins
全局设置
插件管理
创建和配置作业
创建新作业
实践
创建一个 Pipeline 作业
配置 Pipeline 脚本
保存并运行作业

搭配 Jenkins 实现自动化打包微前端多个项目

在 macOS 上搭建 Jenkins

# 使用 Homebrew 安装 Jenkins

brew install jenkins-lts
1

这里 jenkins-lts 是 Jenkins 的长期支持版本。

# 启动 Jenkins

安装完成后,你可以通过以下命令启动 Jenkins:

brew services start jenkins-lts
1
  • 停止 Jenkins:你可以使用以下命令停止 Jenkins:

    brew services stop jenkins-lts

  • 重启 Jenkins:你可以使用以下命令重启 Jenkins:

    brew services restart jenkins-lts

# 访问 Jenkins

默认情况下,Jenkins 会在本地的 8080 端口上运行。你可以通过在浏览器中访问以下地址来访问 Jenkins:

http://localhost:8080

# 初始设置

# 解锁 Jenkins

首次访问 Jenkins 时,它会要求你输入解锁密钥。你可以通过以下命令找到这个密钥:

cat /usr/local/var/lib/jenkins/secrets/initialAdminPassword

将该密钥复制到 Jenkins 页面上的相应字段中。

# 安装推荐插件

Jenkins 会建议安装一系列推荐插件,建议选择安装这些插件,因为它们涵盖了许多基本功能。

# 创建管理员用户

设置 Jenkins 的管理员用户和密码。完成设置后,你将进入 Jenkins 的主界面。

# 配置 Jenkins

# 全局设置

  1. 系统管理:

    • 进入  "管理 Jenkins" -> "系统设置"。
    • 在这里,你可以配置 Jenkins 的基本设置,如系统信息、JDK 和 Git 配置等。
  2. 全局工具配置:

    • 在  "管理 Jenkins" -> "全球工具配置"  中,你可以配置各种工具的路径,如 JDK、Maven、Gradle、Git 等。
  3. 安全设置:

    • 进入  "管理 Jenkins" -> "全局安全配置",配置访问控制、安全策略和身份验证方式。

# 插件管理

  1. 安装插件:
    • 进入  "管理 Jenkins" -> "插件管理"。
    • 在  "可用插件"  选项卡中,你可以搜索并安装所需的插件。
    • 在  "已安装插件"  选项卡中,你可以查看和更新已安装的插件。

# 创建和配置作业

# 创建新作业

  1. 新建任务:

    • 在 Jenkins 主界面上,点击  "新建任务"。
    • 输入作业名称,选择作业类型,例如  "自由风格的软件项目"  或  "Pipeline"。
    • 点击  "确定"  进入作业配置页面。
  2. 配置作业:

    • 源码管理:
      • 选择  "Git"  或其他版本控制系统,配置仓库 URL 和凭据。
    • 构建触发器:
      • 配置触发构建的条件,例如定时构建、源码变更触发等。
    • 构建环境:
      • 配置构建环境设置,如构建前后操作、构建工具等。
    • 构建步骤:
      • 添加构建步骤,例如  "执行 Shell"、"调用 Gradle"  或  "执行 Maven"。
    • 构建后操作:
      • 配置构建完成后的操作,例如归档构建产物、发送通知等。

以上就是 Jenkins 的基本配置,接下来我们就来实践一下

# 实践

# 创建一个 Pipeline 作业

  1. 进入 Jenkins 主界面,点击  "新建任务"。
  2. 选择  "Pipeline"  作业类型,输入任务名称,然后点击  "确定"。

# 配置 Pipeline 脚本

在 Pipeline 配置页面中,找到  "Pipeline"  部分,并在  "Pipeline Script"  中输入以下 Groovy 脚本:

pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                // 从 Git 仓库拉取最新的代码
                git url: 'https://your-repo-url.git', branch: 'main'
            }
        }
        stage('Identify Changed Directories') {
            steps {
                script {
                    // 获取最近一次提交的哈希
                    def commitHash = sh(script: 'git rev-parse HEAD', returnStdout: true).trim()

                    // 获取前一个提交的哈希
                    def previousCommitHash = sh(script: 'git rev-parse HEAD~1', returnStdout: true).trim()

                    // 获取更改的文件
                    def changedFiles = sh(script: "git diff --name-only ${previousCommitHash} ${commitHash}", returnStdout: true).trim().split('\n')

                    // 获取所有更改的目录
                    def changedDirs = changedFiles.collect { file ->
                        file.tokenize('/')[0..-2].join('/')
                    }.unique()

                    echo "Changed directories:"
                    echo changedDirs.join('\n')

                    // 函数:检查目录及其父目录是否包含 package.json
                    def findPackageJsonDir = { dir ->
                        def currentDir = dir
                        while (currentDir != '') {
                            if (fileExists("${currentDir}/package.json")) {
                                return currentDir
                            }
                            def parentDir = currentDir.tokenize('/')[0..-2].join('/')
                            if (parentDir == '') {
                                break
                            }
                            currentDir = parentDir
                        }
                        return null
                    }

                    // 追踪已处理的目录
                    def processedDirs = []

                    // 在更改的文件夹中执行构建
                    changedDirs.each { changedDir ->
                        def buildDir = findPackageJsonDir(changedDir)
                        if (buildDir != null && !processedDirs.contains(buildDir)) {
                            echo "Found package.json in ${buildDir}, running npm install and build"
                            dir(buildDir) {
                                sh 'npm install'
                                sh 'npm run build'
                            }
                            processedDirs.add(buildDir) // 标记为已处理
                        } else {
                            echo "No package.json found in ${changedDir} or it has already been processed"
                        }
                    }
                }
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

# 保存并运行作业

  1. 配置完成后,点击  "保存"。
  2. 在 Jenkins 主界面上,点击  "立即构建"  来运行你的作业,观察输出以确保其正常工作。

通过以上步骤,就可以在 Jenkins 中实现自动拉取代码、获取更改的文件夹,找到 package.json 文件并执行构建命令的功能。

编辑 (opens new window)
上次更新: 9/15/2024, 11:00:05 AM
检测网络是否能够访问 Disqus

← 检测网络是否能够访问 Disqus

最近更新
01
自动化打包微前端多个项目
09-15
02
el-upload 直传阿里 oss 并且显示自带进度条和视频回显封面图
06-05
03
version 1.25
06-03
更多文章>

Related Issues not found

Please contact @HenryTSZ to initialize the comment

Theme by Vdoing | Copyright © 2017-2025 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式