返回主页

目录

Jenkins 创建第一个流水线

环境

步骤

新建一个流水线

  1. 在 Jenkins 首页点击 “新建任务”。
  2. 输入任务名称,选择 “流水线”,点击 “确定”。
  3. 在流水线配置页面,找到 “流水线” 部分。
  4. 在 “定义” 下拉框中选择 “Pipeline script”。
  5. 脚本输入框下面有个 “流水线语法”,可以生成脚本,点击 “流水线语法” 链接。
  6. 在 “流水线语法” 页面中,选择 “示例步骤” 下拉框,选择一个步骤 “git:Git”。
  7. 仓库 URL 输入框中输入 GitHub 仓库地址,例如 git@github.com:<github-username>/<repository>.git
  8. 分支输入框中输入代码库中分支名称。
  9. 因为是私有仓库,所以需要添加凭据,点击 “添加” 按钮,选择 “全局凭证(无限制)”,选择 “SSH Username with private key”,范围选择 全局,输入凭据名称(ID栏),描述的话,如果有同名的可以写描述,用户名输入 git,选择 “Enter directly(直接输入)”,将生成的 SSH 私钥内容粘贴到文本框中,点击 “添加”。
    1. 在当前这种“使用语法生成器”的场景下 “Secret file” 或者 “Secret text”,这两种类型的凭据在选择凭据的时候不会显示。
    2. 密钥生成可以使用 ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -C "your_email@example.com"
      1. 生成的公钥内容可以使用 cat ~/.ssh/id_rsa.pub 查看并复制到 GitHub 的对应代码仓库的设置中的 Deploy keys(部署密钥)中。(注意:Deploy key 通常用于单个仓库的访问;如果需要让 Jenkins 访问多个私有仓库,则要考虑统一的机器用户或其他认证方式。)
      2. 生成的私钥内容可以使用 cat ~/.ssh/id_rsa 查看并复制到凭据中。
      3. SSH 密钥可以在任意 Linux/macOS 终端生成;关键是要把对应的公钥添加到 GitHub 仓库的 Deploy keys 中,并把匹配的私钥添加到 Jenkins 凭据中。而且要注意保密之类的事项。
  10. 选择刚才添加的凭据,点击 “生成流水线脚本”,得到类似如下的脚本:
git branch: 'main', credentialsId: '<凭据ID>', url: 'git@github.com:<github-username>/<repository>.git'
流水线语法
  1. 将生成的脚本复制到流水线脚本输入框中,再写一些脚本,我的目的是让 Jenkins 执行 列出二层目录 命令,所以脚本如下:
pipeline {
    agent any
    stages {
        stage('Checkout Code') {
            steps {
                git branch: 'main',
                    credentialsId: "<凭据ID>",
                    url: 'git@github.com:<github-username>/<repository>.git'
            }
        }

        stage('Show Directory Tree') {
            steps {
                sh '''
                    echo "当前工作目录: $(pwd)"
                    echo "列出前两层目录结构:"
                    if command -v tree >/dev/null 2>&1; then
                        tree -L 2
                    else
                        echo "tree 命令不存在,尝试安装或使用 find 替代"
                        find . -maxdepth 2 | sort
                    fi
                '''
            }
        }
    }

    post {
        success {
            echo '流水线执行成功'
        }
        failure {
            echo '流水线执行失败'
        }
        always {
            cleanWs()
        }
    }
}

cleanWs() 需要安装 Workspace Cleanup 插件;如果未安装,可先删除这一段。

  1. 点击 “保存” 后运行就可以了

注意事项

  1. 关于 Jenkins 主机密钥验证(Host key verification)的问题

创建成功后运行的时候,可能会遇到如下错误:

Host key verification failed

这个错误说明 Jenkins 当前环境还没有接受 GitHub 的主机密钥。

解决方法: