当前位置:首页 > 系统教程 > 正文

Ubuntu 22.04环境下GitLab+Jenkins自动化部署(全网最详细!全程无坑!)

Ubuntu 22.04环境下GitLab+Jenkins自动化部署(全网最详细!全程无坑!)

手把手教你搭建CI/CD流水线,从零到生产可用

Ubuntu 22.04环境下GitLab+Jenkins自动化部署(全网最详细!全程无坑!) Ubuntu22.04  GitLab Jenkins 自动化部署 第1张

1. 前言:为什么需要GitLab+Jenkins自动化部署?

在现代软件开发中,自动化部署是提升效率、减少人为错误的关键环节。Ubuntu22.04作为长期支持版本,稳定性和兼容性俱佳。结合GitLab强大的代码仓库管理与Jenkins灵活的CI/CD能力,可以构建一套完整的持续集成/持续部署流水线。本教程将从零开始,详细演示在Ubuntu22.04上安装、配置GitLab和Jenkins,并实现代码推送后自动构建、测试、部署的全过程,确保每一步都清晰无坑,即使是小白也能轻松上手。

2. 环境准备:Ubuntu22.04基础设置

首先你需要一台安装了Ubuntu22.04的服务器(物理机或虚拟机均可),确保网络通畅,拥有sudo权限的用户。建议系统内存至少4GB,磁盘20GB以上。登录后执行以下命令更新系统:

sudo apt update && sudo apt upgrade -y

安装必要的工具:

sudo apt install -y curl openssh-server ca-certificates postfix

postfix用于GitLab发送邮件通知,安装过程中选择“Internet Site”并填写系统域名(若无域名可填服务器IP)。

3. 安装GitLab(社区版)

GitLab提供企业版和社区版,我们使用免费的社区版。添加GitLab官方仓库并安装:

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bashsudo apt install -y gitlab-ce

安装完成后,配置GitLab的访问地址。编辑/etc/gitlab/gitlab.rb,设置external_url为你的域名或IP(例如http://192.168.1.100)。然后执行重新配置:

sudo gitlab-ctl reconfigure

这个过程可能需要几分钟。完成后,访问http://你的IP,第一次访问会提示设置root密码。设置后即可用root登录。至此,GitLab安装完成。

4. 安装Jenkins

Jenkins需要Java环境,我们安装OpenJDK 11:

sudo apt install -y openjdk-11-jdk

添加Jenkins官方仓库并安装:

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/nullecho deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/nullsudo apt updatesudo apt install -y jenkins

启动Jenkins并设置开机自启:

sudo systemctl start jenkinssudo systemctl enable jenkins

Jenkins默认监听8080端口,访问http://你的IP:8080。首次访问需要输入初始密码,通过以下命令获取:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

按照提示安装推荐插件并创建管理员用户。至此,Jenkins安装完成。

5. GitLab与Jenkins集成配置

要实现自动化部署,需要让Jenkins能够访问GitLab仓库,并接收GitLab的webhook触发。

5.1 在GitLab创建API访问令牌

登录GitLab,点击用户头像 → Preferences → Access Tokens,创建一个名为“jenkins”的令牌,勾选api、read_repository、write_repository权限。生成后复制保存(只会显示一次)。

5.2 在Jenkins安装GitLab插件并配置

Jenkins首页 → Manage Jenkins → Manage Plugins,在“Available”标签搜索“GitLab”并安装“GitLab Plugin”和“GitLab API Plugin”。安装后,进入Manage Jenkins → Configure System,找到“GitLab”配置部分:

  • Connection name: gitlab
  • GitLab host URL: 你的GitLab地址(例如 http://192.168.1.100)
  • Credentials: 添加一个“GitLab API token”类型的凭证,把刚才生成的令牌粘贴进去。
  • 测试连接成功即可。

5.3 在Jenkins创建任务并关联GitLab

新建一个自由风格的项目,在“源码管理”中选择Git,填写仓库URL(例如 http://192.168.1.100/root/demo.git),并添加凭证(GitLab用户名密码或SSH)。在“构建触发器”中勾选“Build when a change is pushed to GitLab”,并记录下生成的GitLab webhook URL和Secret token。然后在GitLab项目设置中,进入Settings → Webhooks,添加webhook:URL填Jenkins的webhook地址,Secret token填上面生成的,勾选“Push events”,保存后点击“Test”测试是否连通。

6. 编写自动化部署脚本

以最简单的Java应用为例,项目根目录下创建Jenkinsfile(或直接在Jenkins任务中写构建步骤)。这里使用流水线方式。以下是一个简单的声明式流水线:

pipeline {    agent any    stages {        stage("Checkout") {            steps {                git "http://192.168.1.100/root/demo.git"            }        }        stage("Build") {            steps {                sh "mvn clean package"            }        }        stage("Deploy") {            steps {                sh "scp target/*.jar user@部署服务器:/app/"                sh "ssh user@部署服务器 "systemctl restart myapp""            }        }    }}

你需要根据实际项目调整构建和部署命令。注意在Jenkins中配置好SSH免密登录或使用凭证。

7. 测试自动化部署流程

在本地修改代码并推送到GitLab仓库,观察Jenkins是否自动触发构建。查看Jenkins控制台输出,确认每个阶段成功。如果失败,根据错误日志排查(常见问题:权限不足、路径错误、依赖缺失)。一旦成功,你就实现了从代码提交到自动部署的全流程!

8. 常见问题与避坑指南

  • GitLab安装后无法访问:检查防火墙是否开放80端口,或external_url配置是否正确。
  • Jenkins插件安装失败:可能是网络问题,可更换国内镜像源。
  • Webhook触发失败:确保GitLab和Jenkins网络互通,Secret token一致。
  • 构建脚本权限问题:Jenkins默认用户为jenkins,需给jenkins用户赋予相关目录权限或使用sudo(配置visudo)。
  • SSH部署免密:在jenkins用户下生成SSH密钥,将公钥添加到目标服务器。

9. 总结

本文详细讲解了在Ubuntu22.04上安装配置GitLabJenkins,并实现自动化部署的全过程。通过这套CI/CD流水线,团队可以更快速、可靠地交付软件。希望这篇全网最详细的教程能帮助你顺利搭建自己的自动化部署环境,真正实现“全程无坑”。如果在实践中遇到其他问题,欢迎在评论区交流讨论。