当前位置: 首页 > news >正文

gitlab 与gitlab-runner 安装与配置

文章目录

  • 一、背景
  • 二、安装过程

一、背景

  1. 已有k8s的可以略过。
  2. gitlab与 gitlab-runner可以解决什么问题?
    主要是为了解决CI/CD问题的。 也就是持续集成,持续部署相关的事情。
  3. 没有CI/CD的工作流是什么样子的?
    假设A 服务器是gitlab服务器, 用于管理项目代码的, B 服务器用于编译或打包代码为docker 镜像的。 C 服务器用于跑起项目的(或测试环境,或生产环境)。那么我在PC上提交代码后, 1. 需要登录B服务器,或手动,或写个脚本,实现: git pull 代码, docker build image g到 docker push image 这些主要流程。 2. 登录C服务器。 实现:docker pull image, docker compose down && docker compose up -d 功能,可以实现项目重启。
  4. 使用CI/CD的工作流是什么样子的?
    同样假设A 服务器是gitlab服务器, 用于管理项目代码的, B 服务器用于编译或打包代码为docker 镜像的。 C 服务器用于跑起项目的(或测试环境,或生产环境)。这里简单描述一下:在PC上可以编写.gitlab-ci.yml文件, 在该文件中实现 build-job, 主要内容同上登录B服务器所需要完成的工作流。 实现release_test,主要内容同上C服务器所需要完成的工作流。 就可以实现只要提交代码或合并代码到指定分支, 就能自动实现在B服务器上编译打包和在C服务器上应用了最新提交代码的项目。这是一个完全自动化的过程,核心在于编写.gitlab-ci.yml文件。

二、安装过程

以下安装过程主要是在一台PC机上通过docker实现以上多个服务
环境变量文件.env

GITLAB_HOST_ADDRESS=192.168.1.111
EXPOSE_GITLAB_WEB_PORT=8011
GITLAB_WEB_PORT=8011
EXPOSE_GITLAB_SSL_PORT=443
GITLAB_SSL_PORT=443
EXPOSE_GITLAB_SSH_PORT=2222
GITLAB_SSH_PORT=22
INITIAL_SHARED_RUNNERS_REGISTRATION_TOKEN=random_values(随机值)

compose.yml文件

x-shared-env: &shared-basical-envGITLAB_HOST_ADDRESS: ${GITLAB_HOST_ADDRESS:-192.168.1.111}EXPOSE_GITLAB_WEB_PORT: ${EXPOSE_GITLAB_WEB_PORT:-8011}GITLAB_WEB_PORT: ${EXPOSE_GITLAB_WEB_PORT:-8011} # 这里没有错误,容器内的端口与就对外暴露的端口号一致。 这是因为external_url 的值里包括了外部端口号EXPOSE_GITLAB_SSL_PORT: ${EXPOSE_GITLAB_SSL_PORT:-443}GITLAB_SSL_PORT: ${GITLAB_SSL_PORT:-443}EXPOSE_GITLAB_SSH_PORT: ${EXPOSE_GITLAB_SSH_PORT:-2222}GITLAB_SSH_PORT: ${GITLAB_SSH_PORT:-22}INITIAL_SHARED_RUNNERS_REGISTRATION_TOKEN: ${INITIAL_SHARED_RUNNERS_REGISTRATION_TOKEN:-zxcvbnmasdfghjklqwertyuiop123456}
services:# 代码管理gitlab:image: gitlab/gitlab-ce:18.0.0-ce.0container_name: gitlabrestart: alwayshostname: 'gitlab.ray.com'environment:<<: *shared-basical-envGITLAB_OMNIBUS_CONFIG: |external_url 'http://${GITLAB_HOST_ADDRESS}:${EXPOSE_GITLAB_WEB_PORT}'letsencrypt['enable'] = false          # 关闭 Let's Encryptnginx['redirect_http_to_https'] = false  # 禁用 HTTP 到 HTTPS 重定向gitlab_rails['gitlab_shell_ssh_port'] = ${GITLAB_SSH_PORT}# 启用SSH访问gitlab_rails['gitlab_ssh_host'] = '${GITLAB_HOST_ADDRESS}'# 启用CI功能gitlab_rails['gitlab_ci_all_broken_builds_notify_committer'] = truegitlab_rails['gitlab_default_projects_features_builds'] = true# 注册Runner所需配置gitlab_rails['initial_shared_runners_registration_token'] = '${INITIAL_SHARED_RUNNERS_REGISTRATION_TOKEN}'# 建议添加:确保Runner可以连接到GitLab实例gitlab_rails['gitlab_runner_api_max_requests_per_minute'] = 1000ports:- '${EXPOSE_GITLAB_WEB_PORT}:${GITLAB_WEB_PORT}'- '${EXPOSE_GITLAB_SSL_PORT}:${GITLAB_SSL_PORT}'- '${EXPOSE_GITLAB_SSH_PORT}:${GITLAB_SSH_PORT}'volumes:- ./config:/etc/gitlab- ./logs:/var/log/gitlab- ./data:/var/opt/gitlabshm_size: '256m'# 添加健康检查以确保服务完全启动healthcheck:test: [ "CMD", "curl", "-f", "http://localhost:${EXPOSE_GITLAB_WEB_PORT}/help" ]interval: 5mtimeout: 10sretries: 3start_period: 5mgitlab-runner:image: gitlab/gitlab-runner:latestprivileged: truecontainer_name: gitlab-runnerrestart: alwaysdepends_on:- gitlabvolumes:- ../gitlab-runner/config:/etc/gitlab-runner- /var/run/docker.sock:/var/run/docker.sockenvironment:<<: *shared-basical-envCI_SERVER_URL: http://${GITLAB_HOST_ADDRESS:-192.168.1.111}:${EXPOSE_GITLAB_WEB_PORT}REGISTRATION_TOKEN: ${INITIAL_SHARED_RUNNERS_REGISTRATION_TOKEN}RUNNER_NAME: docker-runnerREGISTER_NON_INTERACTIVE: trueRUNNER_TAG_LIST: dockerDOCKER_IMAGE: alpine:latestRUNNER_EXECUTOR: dockerentrypoint: [ "gitlab-runner" ]command: [ "run", "--user=gitlab-runner", "--working-directory=/home/gitlab-runner" ]

这个docker-compose up -d 之后,首先需要在宿主机上web端配置gitlab, web端启动较慢,耐心等下哈。
那么碰到的第一个问题是:gitlab的密码在哪里?

  • 查看gitlab 的root用户的初始密码,该密码文件将于24小时后删除
$ docker compose exec -it gitlab bash
root@gitlab:/# cat /etc/gitlab/initial_root_password

如果没有初始密码,怎么办?

  • gitlab的root用户密码重置过程:
$ docker compose -f compose.ce.yml  exec -it gitlab gitlab-rails console
--------------------------------------------------------------------------------Ruby:         ruby 3.1.5p253 (2024-04-023 revision 1945f8dc0e) [x86_64-linux]GitLab:       17.3.1 (20a3292b4e6) FOSSGitLab Shell: 14.38.0PostgreSQL:   14.11
------------------------------------------------------------[ booted in 49.81s ]
Loading production environment (Rails 7.0.8.4)
irb(main):001:0> user = User.where(id:1).first # 找到root用户
=> #<User id:1 @root>
irb(main):003:0> user.password ='newpassword'  # 修改密码
=> "newpassword"
irb(main):004:0> user.password_confirmation='newpassword' # 确认密码
=> "newpassword"
irb(main):005:0> user.save! # 保存
=> true
irb(main):006:0>
  • 当然,有了初始密码之后, 可以登录web端,在web端修改root用户的密码和新建用户。下一步就是把runner注册到gitlab中。 过程如下:
  • gitlab-runner 注册过程
$ sudo docker exec -it gitlab-runner gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=23 revision=bda84871 version=18.5.0
Running in system-mode.                            WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://docs.gitlab.com/ci/runners/new_creation_workflow/ 
Registering runner... succeeded                     correlation_id=01K9CA8WJDD7S19Y3BHJRTFMPR runner=zxcvbnmas
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml" 
$ sudo docker exec -it gitlab-runner gitlab-runner list
Runtime platform                                    arch=amd64 os=linux pid=45 revision=bda84871 version=18.5.0
Listing configured runners                          ConfigFile=/etc/gitlab-runner/config.toml
docker-runner                                       Executor=docker Token=glrtr-PfpsHVXVhaong3Uwsv2N URL=http://gitlab:8011
  • 注册完成后,可以在web端验证一下。(runner注册成功如下图,runner id与图示不一致,仅供示意)。

在这里插入图片描述

  • .gitlab-ci.yml文件如下:
stages:- build- test- deployvariables:IMAGE_NAME: test_cicd_appHARBOR_URL: http://127.0.0.1:8080/harborHARBOR_PROJECT: test_cicdDOCKER_TLS_CERTDIR: ""   # 关闭 GitLab Runner 的 docker TLS 校验(关键)build-job:stage: buildimage: docker:latesttags: - dockerservices:- docker:dindscript:- echo "登录 Harbor..."- docker login -u "$HARBOR_USER" -p "$HARBOR_PASS" $HARBOR_URL- echo "构建镜像..."- docker build -t $HARBOR_URL/$HARBOR_PROJECT/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA .- echo "推送镜像..."- docker push $HARBOR_URL/$HARBOR_PROJECT/$IMAGE_NAME:$CI_COMMIT_SHORT_SHAonly:- dev- prod
  • 以下为定义仓库级别的环境变量, 定义的这些变量在.gitlab-ci.yml文件中使用。
    在这里插入图片描述
http://www.dtcms.com/a/593225.html

相关文章:

  • 高职学前教育与法律事务专业:证书规划与职业发展指南
  • 外贸做网站推广环球资源网网站特色
  • 【LLIE技术专题】基于成对低光图像学习自适应先验方案
  • 广东专升本计算机C语言
  • CentOS 安装Docker 报错requires container-selinux >= :.x
  • 微网站php源码九寨沟网站建设规划书
  • 如何保证接口在高并发情况下稳定
  • 靠谱的南宁康复机构位置分析 南宁康复机构的重要性
  • 怎么查看网站是哪个公司建的淘宝网站那个做的
  • 如何实现pnpm commit拦截
  • 网站制作专业wordpress创建模板
  • 修改visio中默认的框图以及文字格式
  • java使用poi-tl模版+vform自定义表单生成word,使用LibreOffice导出为pdf
  • DVSSL证书vsOVSSL证书:详细区别与选择指南
  • 【Linux】CentOS 部署 IPFS
  • 声网选择性注意力锁定如何在嘈杂环境中守护特殊儿童?
  • RPA 财务自动化:核心应用场景,让财务工作降本增效提质
  • 打开高价值应用新窗口:人工智能场景培育与开放的关键举措
  • 网站建设改版攻略wordpress置顶的样式
  • 电商网站建设如何做游戏用什么电脑系统下载网站好
  • 景安做网站教程郴州365网
  • 日志监控MDC
  • 软考 系统架构设计师系列知识点之杂项集萃(195)
  • ArcGIS JSAPI 学习教程 - 场景可视区域(SceneView visibleArea)显示以及过滤要素应用
  • 肖特二极管电路设计应用
  • 天津做网站就到徽信xiala5手机兼职在哪个网站做
  • 扑灭斗殴的火苗:AI智能守护如何为校园安全保驾护航
  • 3DGS致密化操作中的梯度计算
  • 深度学习实战(基于pytroch)系列(八)softmax回归基于pytorch的代码实现
  • Redis进阶