首页 > 其他分享 >使用 Docker 搭建 Jenkins 与 GitLab 环境,实现触发 Webhooks 构建

使用 Docker 搭建 Jenkins 与 GitLab 环境,实现触发 Webhooks 构建

时间:2024-02-17 12:44:04浏览次数:37  
标签:容器 令牌 gitlab GitLab 点击 Jenkins Docker

参考

问题/注意事项

  1. GitLab 查看默认后台密码,等待容器初始化完毕后,进入容器(初始化24小时后该文件会被删除):
    cat /etc/gitlab/initial_root_password
    
  2. Jenkins 管理密码在安装成功并初始化完毕后,浏览器访问服务端口8080会提示查看。
    # 当前版本查看位置为 
    cat /var/jenkins_home/secrets/initialAdminPassword
    
  3. 最终 GitLab 请求的 Webhook 地址为 http://Jenkins用户账号:Jenkins用户令牌@jenkins容器名:8080/job/项目名/build ,其中使用 Jenkins 用户信息,所以需要在 Jenkins 上面为该用户创建访问令牌
  4. 解决 GitLab 添加 Webhook 提示 Url is blocked: Requests to the local network are not allowed 的问题。
    管理中心->网络->出站请求->Webhook 和服务可以访问的本地 IP 地址和域名:添加对应的 Jenkins 容器名(需要Jenkins 与 GitLab 在同一docker-compose网络)
  5. Jenkins 需要安装 GitLab 插件,并在设置中 /manage/configure -> GitLab -> 取消选择 Enable authentication for '/project' end-point (之前出现了这个问题,编写教程再次测试的时候没有遇到这个问题)。
  6. Jenkins 拉取 GitLab 的 URL 格式为:http://GitLab用户名:GitLab用户Token@gitlab容器名/GitLab项目所属用户名/GitLab项目名,其中使用 GitLab 用户信息,所以需要在 GitLab 上面为该用户创建 Token 。
  7. 主机拉取 GitLab 代码方式为:127.0.0.1:绑定的端口号,其他同一网络容器拉取代码:GitLab 容器名:端口号
  8. GitLab 发送 Webhook 请求 Jenkins 响应码为 200,但是 Jenkins 未构建。
    Webhook 地址格式不对,正确响应码是201。
  9. 容器第一次启动的时候会初始化,可能访问对应的管理端口无法访问,所以需要等待一下。

环境

软件/系统 版本 说明
Windows Windows 10 专业版 22H2 19045.4046
Docker Desktop 4.27.1
Docker 25.0.2
Docker Compose v2.24.3-desktop.1
Jenkins 2.426.2-jdk17
GitLab 16.9.0-ce.0

步骤

准备工作

  1. 创建 docker-compose-base.yml 文件,命令启动:docker-compose -f docker-compose-base.yml up -d

    version: '3'
    services:
      jenkins:
    	image: jenkins/jenkins:2.426.2-jdk17
    	networks:
    	  - base-network
    	container_name: jenkins
    	ports:
    	  - 8080:8080
    	  - 50000:50000
      gitlab:
    	  image: gitlab/gitlab-ce:16.9.0-ce.0
    	  networks:
    		- base-network
    	  container_name: gitlab
    	  ports:
    		- 10443:443
    		- 1080:80
    
    networks:
      base-network:
    
    
  2. 查看容器,可以看到已经启动,并在初始化。

    访问对应的服务端口可能无法访问,因为在初始化。

    image

Jenkins 配置

基础配置
  1. 访问 http://localhost:8080/login?from=%2F 根据需要解锁,通过提示获取密码。
    image
  2. 通过 Docker Desktop 进入命令行,执行 cat /var/jenkins_home/secrets/initialAdminPassword 查询密码,获取密码后返回 Jenkins 网页(http://localhost:8080/login?from=%2F)并解锁。
    image
  3. 解锁后,自定义Jenkins选择 安装推荐的插件
    image
  4. 插件安装完毕后,会提示创建管理员,我这边选择了使用admin账户继续
    image
  5. 实例配置 Jenkins URL 使用默认填充的 http://localhost:8080/ ,选择保存并完成
    image
  6. 点击开始使用 Jenkins
    image
项目配置
  1. 进入控制台后选择 新建Item
    image
  2. 设置任务名称与选择Freestyle project后,点击确定。
    image
  3. Configure->General->源码管理->Git->Repositories->Repository URL设置 GitLab 地址,格式为 http://gitlab用户名:gitlab用户令牌@gitlab容器名/root/项目名,设置完成后保存即可。(GitLab 用户令牌获取方式查看本文GitLab 配置部分;其中本地主机拉取代码为 127.0.0.1:gitlab容器映射端口/用户名/项目名,同一网络容器拉取代码为:gitlab容器名:gitlab端口/用户名/项目名
    image
  4. 在项目页面,点击 立即构建,等待构建结束即可在 工作空间 查看拉取到的 GitLab 代码。
    image
用户令牌
  1. 页面顶部:登录用户名下拉->设置
    image
  2. 设置->API Token->添加新的Token
    image
  3. 点击 生成->复制图标 后进行复制。
    image
    image

GitLab 配置

基本配置
  1. 通过 Docker Desktop 进入命令行,执行 cat /etc/gitlab/initial_root_password 获取密码(24小时后会自动删除):
    image

  2. 访问 http://localhost:1080/users/sign_in,账号名为 root,密码为上一步获取的密码。
    image

  3. 登录成功后,界面默认英文,控制台左上角选择头像->Preferences
    image

  4. 找到 Localization,选择 中文简体 后,点击 Save Changes进行保存。
    image

新建项目
  1. 返回控制台首页 http://localhost:1080/,选择创建项目
    image

  2. 选择 从模板创建
    image

  3. 下滑找到 Laravel Framework ,然后点击 使用模板
    image

  4. 配置项目名称,项目所属用户,项目标识串,可见性级别等,设置完毕后点击新建项目。(此处项目名设置为 testlaravel,你可以随意设置。)
    image

用户令牌
  1. 控制台左上角选择头像->偏好设置
    image
  2. 访问令牌->添加新令牌
    image
  3. 设置令牌名称、到期时间、权限后,点击创建个人访问令牌。(此处我设置的令牌名称为 jenkins ,你可以随意设置。)(此处截图部分遮挡权限为全部选中状态。)
    image
    image
解决 WebHook 添加时 Url is blocked: Requests to the local network are not allowed 错误
  1. 点击 控制台左下角->管理中心
    image

  2. 点击 控制台左下角->设置->网络
    image

  3. 配置出站请求并点击保存更改。

    • 允许来自 webhooks 和集成对本地网络的请求
    • 允许系统钩子向本地网络发送请求
    • Webhook 和服务可以访问的本地 IP 地址和域名:jenkins容器名。
      image
配置 WebHook
  1. 项目页面左侧选择: 设置-> WebHooks
    image
  2. 点击 添加新的 WebHook
    image
  3. 配置:URL、触发来源、SSL验证 后点击添加webhook。(URL格式为:http://Jenkins用户名:Jenkins用户Token@Jenkins容器名:Jenkins容器端口/job/Jenkins任务名称/build ,其中Jenkins用户Token获取方式参考本文Jenkins配置相关内容)
    image

测试

  1. GitLab 项目中,进入 设置->WebHooks,点击 测试->推送事件后提示 201 即成功触发 WebHook 。
    image
    image

  2. Jenkins 中查看,显示正在执行或执行完毕任务。
    image

标签:容器,令牌,gitlab,GitLab,点击,Jenkins,Docker
From: https://www.cnblogs.com/xiaqiuchu/p/18017583

相关文章

  • docker mysql容器定时备份
    1查看docker容器信息[root@xxxt01:/root]dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESab87e7a22146mysql"docke......
  • docker的私有仓库harbor
    [root@localhost~]#mkdir-p/data/ssl [root@localhost~]#cd/data/ssl/ [root@localhostssl]#opensslreq-newkeyrsa:4096-nodes-sha256-keyoutca.key-x509-days365-outca.crtGeneratinga4096bitRSAprivatekey.................++.................
  • CentOS7 离线安装 Docker
    对于一些安全性要求比较高的项目,服务器一般都是内网,无法联网。如果直接在物理机或虚拟机上部署项目,一方面比较麻烦,另外风险也比较高,如果出现了一些问题,最坏的情况就是重置操作系统,然后重新部署,耗时费力。还是采用docker部署会比较方便,我们可以在外部可以联网的机器上把项目部署......
  • docker 中安装apt-get install vim 失败,且apt-get update 报404
    在docker中安装vim时,安装失败。在更新apt-get时,报错如下:root@a8a94b78ebf0:/#apt-getupdateIgn:1http://deb.debian.org/debianstretchInReleaseIgn:2http://deb.debian.org/debianstretch-up......
  • 使用 docker-compose 部署 Gitlab
    现在基本上每个公司,只要有代码开发工作,都会搭建Gitlab代码托管服务器,很少有公司再使用SVN等其它代码托管服务器了。本篇博客介绍如何快速搭建Gitlab服务器,有关Gitlab的使用方法,限于篇幅,这里就不介绍了。作为一名开发人员,搭建完成后,自己最好要仔细研究一下各项功能的用法......
  • docker环境部署
    1.下载docker点击查看代码#1.阿里云镜像资源(先执行这个下载加速)yum-config-manager--add-rephttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#2.安装dockeryuminstall-ydocker-ce2.启动Docker服务安装完成后,使用下面的命令来启动docker服务,并......
  • 19.Jenkins邮件告警
    Jenkins邮件告警 Jenkinsjob构建结果的提取并通知相关人士下载EmailExtension插件 进入菜单Dashboard->系统管理(ManageJenkins)->插件管理(ManagePlugins)在可选插件搜索EmailExtension找到EmailExtension安装修改系统配置项目 JenkinsL......
  • 18.Jenkins的maven插件配置
    Maven的集成在Jenkins上构建Java项目时需要使用Maven来进行构建打包在执行job的机器上安装好maven下载maven程序压缩包解压maven压缩包配置环境变量下载maven插件进入菜单Dashboard->系统管理(ManageJenkins)->插件管理(ManagePlugins)在可选......
  • 使用 docker-compose 部署 nacos(单机和集群)
    之前已经编写过有关nacos的单机部署和集群部署,是直接在CentOS7上直接部署的,之前的博客链接如下:单机版nacos部署:https://www.cnblogs.com/studyjobs/p/17380184.html集群版nacos部署:https://www.cnblogs.com/studyjobs/p/17383397.html为了进一步简化部署,本篇博客介绍如......
  • 17.Jenkins的Git版本管理
    Git的集成 在Jenkins上构建从Git源码仓库拉取代码的任务时需要使用到Git插件在执行job的机器上安装好Git yuminstallgit-y下载Git插件 进入菜单Dashboard->系统管理(ManageJenkins)->插件管理(ManagePlugins)在可选插件搜索Git找到Git......