目录
2、在 GitLab 中创建一个访问令牌(Access Token)
持续集成的一个特点就是开发可以随时提交,随时进行集成测试,当开发工程师将代码提交到GitLab 以后,jenkins怎么样自动触发进行编译和并将制品发布到测试环境呢?要实现在开发工程师将代码提交到 GitLab 后自动触发 Jenkins 进行编译和发布,可以按照以下步骤进行配置:
git@gitlab.example.com:username/project.git
)注意:红色箭头指示的这里替换你访问GitLab的仓库相关参数
- #!/bin/bash
-
- # Stop Application
- serviceStatus=$(sudo supervisorctl status django 2>/dev/null | awk '{print $2}')
- if [ "$serviceStatus" == "RUNNING" ]; then
- sudo supervisorctl stop django
- else
- echo "Django process not running or does not exist."
- fi
-
- # Prepare Deployment
- sudo rm -rf /opt/HelloWorld/*
- sudo cp -R . /opt/HelloWorld
-
- # Configure Supervisor
- sudo cp /opt/HelloWorld/django.conf /etc/supervisor/conf.d/django.conf
- sudo supervisorctl reread
- sudo supervisorctl update
-
- # Restart Application
- sudo supervisorctl restart django
这个 Shell 脚本的功能与 Jenkins Pipeline 代码相同,分为以下几个阶段:
Stop Application:
sudo supervisorctl status django
命令检查 Django 服务的状态。sudo supervisorctl stop django
命令停止服务。Prepare Deployment:
sudo rm -rf /opt/HelloWorld/*
命令清理 /opt/HelloWorld
目录下的旧代码。sudo cp -R . /opt/HelloWorld
命令将当前目录下的新代码复制到 /opt/HelloWorld
目录。Configure Supervisor:
sudo cp /opt/HelloWorld/django.conf /etc/supervisor/conf.d/django.conf
命令将 django.conf
文件复制到 Supervisor 的配置目录。sudo supervisorctl reread
命令让 Supervisor 重新读取配置文件。sudo supervisorctl update
命令更新 Supervisor 的配置。Restart Application:
sudo supervisorctl restart django
命令重启 Django 服务。django.conf
文件已经准备好,并位于项目的根目录下。sudo
命令。http:///project/,注意这个是在你在jenkins配置
"Build when a change is pushed to GitLab"时生成的,没记住的,回去jenkins任务那里获取,还有一个Secret token参数也需要填写。注意,在jenkins内网地址的时候,保存Webhook的时候会提示错误“Url is blocked: Requests to the local network are not allowed”。
通常是由于 GitLab 服务器的安全设置限制了对本地网络的请求。
GitLab 默认禁止向本地网络发送请求,以防止潜在的安全风险。如果你的 Jenkins 服务器和 GitLab 服务器在同一个本地网络中,就会触发这个安全限制。
为了解决这个问题,你可以通过以下方式之一进行配置:
在 GitLab 服务器上允许向本地网络发送请求:
使用 Jenkins 服务器的外部可访问地址作为 Webhook URL:
http://jenkins.example.com/project/my-project
。配置 GitLab 的白名单:
/etc/gitlab/gitlab.rb
。gitlab_rails['webhook_local_net']
配置项。gitlab_rails['webhook_local_net'] = ['192.168.1.0/24', '10.0.0.0/8']
sudo gitlab-ctl reconfigure
选择适合你的方式进行配置,然后重新尝试在 GitLab 中添加 Jenkins 的 Webhook URL。如果配置正确,应该就不会再出现 "Url is blocked" 的错误提示了。
完成以上配置后,当开发人员将代码推送到 GitLab 仓库时,GitLab 会自动发送一个 Webhook 请求到 Jenkins。Jenkins 接收到请求后,会根据配置的触发条件判断是否需要执行构建任务。如果满足触发条件,Jenkins 将自动拉取最新的代码,并按照配置的构建步骤进行编译和发布。
到这里我们就完成了整个流程。
构建触发条件:
构建步骤:
发布和部署:
通知和报告:
权限控制:
扩展和优化:
持续集成是一个持续优化和改进的过程,需要根据项目的实际情况不断调整和完善。通过自动化构建、测试和部署,可以提高开发效率,减少错误,并加快交付速度。