温馨提示×

Debian Jenkins如何连仓库

小樊
34
2026-10-05 01:01:02
栏目: 智能运维

在 Debian 上运行的 Jenkins 连接代码仓库(如 Git / GitLab / GitHub / Gitee / SVN 等),一般按下面步骤来。我以最常见的情况:Jenkins 连 Git 仓库为例说明。


一、前置条件

1. Jenkins 已安装(Debian)

sudo apt update
sudo apt install jenkins

2. 安装 Git

sudo apt install git

3. 启动 Jenkins

sudo systemctl enable jenkins
sudo systemctl start jenkins

访问:

http://<服务器IP>:8080

二、Jenkins 安装 Git 插件

  1. 登录 Jenkins
  2. Manage Jenkins → Plugins
  3. 搜索并安装:
    • Git
    • Git Client
  4. 安装完成后重启 Jenkins

三、配置 Jenkins 访问仓库的凭证

方式一:SSH 方式(推荐)

1. 生成 SSH 密钥(在 Jenkins 服务器上)

sudo -u jenkins ssh-keygen -t rsa -b 4096

默认路径:

/var/lib/jenkins/.ssh/id_rsa.pub

2. 把公钥加到仓库

  • GitHub / GitLab:
    Settings → SSH Keys → 添加 id_rsa.pub
  • 自建 Git 服务器:
    加到 authorized_keys

3. 在 Jenkins 中添加凭证

  • Manage Jenkins → Credentials
  • 选择 (global)
  • Add Credentials
    • Kind: SSH Username with private key
    • Username: git
    • Private Key: 粘贴 /var/lib/jenkins/.ssh/id_rsa

方式二:账号密码 / Token

  • Kind: Username with password
  • GitHub 推荐用 Personal Access Token
  • GitLab 可用 Project Token

四、在 Jenkins Job 中连接仓库

1. 新建 Job

  • New Item
  • 选择 Freestyle project 或 Pipeline

2. 配置源码管理(Source Code Management)

  • 选择 Git
  • Repository URL:
    git@github.com:user/repo.git
    
    或
    https://github.com/user/repo.git
    
  • Credentials:选择刚才创建的

3. 指定分支

*/main

或

*/master

五、Pipeline 示例(推荐)

pipeline {
    agent any
    stages {
        stage('Clone') {
            steps {
                git branch: 'main',
                    url: 'git@github.com:user/repo.git',
                    credentialsId: 'jenkins-ssh'
            }
        }
    }
}

六、常见问题排查

1. Permission denied (publickey)

sudo -u jenkins ssh -T git@github.com

确认能连通。

2. Host key verification failed

sudo -u jenkins ssh-keyscan github.com >> /var/lib/jenkins/.ssh/known_hosts

3. Jenkins 没有 Git

which git

并在 Jenkins:

Manage Jenkins → Global Tool Configuration → Git

七、如果是 SVN

  • 安装 Subversion Plugin
  • URL 填:
    svn://server/repo
    
  • 使用账号密码凭证

如果你能告诉我:

  • 用 GitHub / GitLab / Gitee / 内网 Git
  • SSH 还是 HTTPS
  • Freestyle 还是 Pipeline

我可以直接给你一份可复制的配置。

0 踩