前提条件
假设你已经有一个GitLab账号,并且在上面创建了一个代码仓库。同时,你也已经安装并配置好了Jenkins服务器。
步骤一:在Jenkins服务器上生成SSH密钥对
-
登录到Jenkins服务器。
-
打开终端或命令提示符。
-
输入以下命令生成SSH密钥对(这里假设使用默认的密钥文件名和存储位置):
ssh-keygen -t rsa -b 4096
按照提示完成密钥对的生成。这将会生成两个文件:
id_rsa
(私钥)和id_rsa.pub
(公钥)。
步骤二:将公钥添加到GitLab
-
在Jenkins服务器上,使用文本编辑器打开
id_rsa.pub
文件,复制其中的内容。 -
登录到GitLab,并进入你的代码仓库设置。
-
找到SSH Keys部分,并将刚才复制的公钥粘贴进去。
-
保存设置。
步骤三:在Jenkins中配置SSH私钥
-
登录到Jenkins的管理界面。
-
进入“Credentials”或“凭据”管理页面。
-
创建一个新的SSH私钥类型的凭据,将之前生成的
id_rsa
私钥文件的内容粘贴进去。
步骤四:创建Jenkins任务并配置Git仓库
-
在Jenkins中创建一个新的任务(Job)。
-
在任务的配置页面中,找到“源码管理”部分。
-
选择“Git”作为源码管理插件。
-
在“Repository URL”中输入你的GitLab代码仓库的SSH地址,例如:
git@gitlab.com:your-username/your-project.git
。 -
在“Credentials”部分,选择之前创建的SSH私钥凭据。
-
保存配置。
步骤五:构建Jenkins任务
-
返回到Jenkins任务列表页面。
-
点击你刚才创建的任务,进入任务详情页面。
-
点击“立即构建”按钮。
-
Jenkins将会开始执行构建任务,其中包括从GitLab拉取代码。在Jenkins的构建日志中,你可以看到类似以下的输出,表示代码正在被拉取:
Started by user admin
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/Your-Job-Name
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url git@gitlab.com:your-username/your-project.git # timeout=10
Fetching upstream changes from git@gitlab.com:your-username/your-project.git
> git --version # timeout=10
> git --version # timeout=10
> git fetch --tags --force --progress -- git@gitlab.com:your-username/your-project.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision xxxxxxxxxxxxxxx (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f xxxxxxxxxxxxxxx # timeout=10
...
一旦构建完成,Jenkins的工作目录中就会包含从GitLab拉取的代码,你可以进行后续的构建、测试和部署操作。
原理总结
-
Jenkins拉取GitLab代码的原理主要基于SSH协议进行身份验证和安全的数据传输。通过配置SSH密钥对和Jenkins的相关设置,Jenkins能够安全地与GitLab建立连接,并执行Git命令来拉取代码。这个过程确保了代码的安全性和完整性,并提供了自动化的方式来管理代码的持续集成和持续部署流程。