gitlab-ci相关部署踩坑及要点记录

这篇具有很好参考价值的文章主要介绍了gitlab-ci相关部署踩坑及要点记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在搞cicd相关的事情,在这个过程中遇到了一些疑惑,顺便记录下来,如果对正在有相同迷惑的同学有帮助的话,也是一件很好的事情。

准备工作:

  1. 安装gitlab,这个安装网上太多了,可以使用二进制的方式安装,也可以使用docker直接运行。
  2. 安装gitlab-runner,这个主要就是一个token和url的使用,一定要正确,还有与gitlab的版本对应也要注意一下,当然这个也是可以使用二进制的方式和直接使用docker运行的方式。
  3. docker安装,应为我是用的docker运行的gitlab-runner,而且在构建的过程中,也是用的golang的docker镜像进行打包的。

问题及注意点:

问题一:遇到了一个问题,构建速度非常慢,因为当时的项目不大,需要下载的依赖也不多,所以这是为啥?

解答:因为在gitlab-ci.yml文件中用到了artifacts,而这让job产物(可执行程序)上传到gitlab,而我们在gitlab-runner register的时候,url填的是一个公网地址,并且runner机器的外网带宽只有1M,所以很慢,后面将url换成了内网地址,直接起飞,url的更换是直接修改config.toml文件中的url配置,然后运行gitlab-runner restart即可。

问题二:部署的过程中,碰到permission denied这样的报错?

解答:使用root用户运行gitlab-runner即可,不过这个要注意gitlab.yml中的script,不要误操作,修改gitlab-runner运行用户的命令:gitlab-runner uninstall && gitlab-runner install --user root,如果不行的话,再gitlab-runner restart即可,如果用到宝塔面板的话,宝塔也用root用户运行项目。

问题三:因为部署的是golang的项目,所以不能每次部署的时候都去下载依赖,这样不科学,所以有什么办法可以解决这个问题呢:

解答:使用gitlab-ci都cache,具体配置如下:

cache:
  key: ${CI_JOB_NAME}
  paths:
    - .mod_cache/

其中key是防止cache被覆盖,paths是要缓存的目录,缓存会以cache.zip的名字自动存储到宿主机上,下次这个job运行的时候,会先解压cache.zip,然后再去编译,这样对于有依赖的项目,速度会有一定的提升。

记录:

  1. when: manual 的作用,是该job运行的时候,必须要手动去点运行才会运行,可以用在部署到线上环境时的最后一道防线。
  2. when: on_success 是默认加上的,如果rules中的if条件满足的话,会自动加上。
  3. when: never 的意思是不会将这个job加入到流水线中,即该job不会执行。
  4. 可以通过gitlab-runner的tag去指定在哪台机器上执行流水线的job,在实际操作中,可以将打包、构建机器打上一个tag,然后测试环境、线上环境也打上对应的tag,这样在job执行的时候,如果需要区分部署到不同的环境,就可以通过tag,来让job在对应的环境机器上运行。
  5. 第4个点说的,通过tag区分环境,也可以直接在script中直接使用ssh的方式去进行部署到对应的环境。
  6. 打包阶段的image,可以直接指定版本,不需要用latest,因为用latest的话,每次都会去判断一下本地latest镜像与hub中的是否一样,这样也会提升一点速度。

最后贴一下,我使用的gitlab-ci.yml文件,仅供参考:文章来源地址https://www.toymoban.com/news/detail-814107.html

stages:          # List of stages for jobs, and their order of execution
  - build
  - deploy

build-ad-job:       # This job runs in the build stage, which runs first.
  stage: build
  image: golang:1.21.6
  tags:
    - ytweb
  script:
    - echo "Compiling the code..."
    - go env -w GOMODCACHE=$(pwd)/.mod_cache/ GOPROXY=https://goproxy.cn,direct
    - make all
    - echo "Compile complete."
  cache:
    key: ${CI_JOB_NAME}
    paths:
      - .mod_cache/
  rules:
    - if: '$CI_COMMIT_BRANCH == "dev" || $CI_COMMIT_BRANCH == "main"'
  artifacts:
    paths:
      - bin/
      - configs/
      - ad.json
    expire_in: 1 day

deploy-ad-dev-job:
  stage: deploy
  tags:
    - testing
  rules:
    - if: '$CI_COMMIT_BRANCH == "dev"'
#      when: manual
  script:
    - echo "Deploying dev application..."
    - bash deploy.sh
    - echo "Application dev successfully deployed."

deploy-ad-prod-job:
  stage: deploy
  tags:
    - online
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'
      when: manual
  script:
    - echo "Deploying prod application..."
    - bash deploy.sh
    - echo "Application prod successfully deployed."

到了这里,关于gitlab-ci相关部署踩坑及要点记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • gitlab-ci.yml 关键字参考 (FREE)

    本文档列出了 GitLab  .gitlab-ci.yml  文件的配置选项。 有关 GitLab CI/CD 的快速介绍,请遵循快速入门指南。 有关示例集合,请参阅 GitLab CI/CD 示例。 要查看企业使用的大型  .gitlab-ci.yml  文件,请参阅gitlab的.gitlab-ci.yml文件。 当在编辑您的  .gitlab-ci.yml  文件时,可以使用 CI

    2024年02月09日
    浏览(37)
  • DevOps系列文章 之 SpringBoot整合GitLab-CI实现持续集成

    在企业开发过程中,我们开发的功能或者是修复的BUG都需要部署到服务器上去,而这部分部署操作又是重复且繁琐的工作,GitLab-CI 持续集成为我们解决了这一痛点,将重复部署的工作自动化,大大的节省了程序员们的宝贵时间。本文详细讲述了 GitLab-CI 持续集成的安装、部署

    2024年02月13日
    浏览(45)
  • gitlab-ci.yml关键字(五)tags 、only 、when

    使用Tags用于选择Runner的标签列表 我们在创建Runner 时可以给该Runner打上特定的标签,那后续流水线中的job如果需要使用特定标签的Runner执行时,就需要使用tags来标记 比如这里有两个标签的Runner 也可以对当前的runner进行一些配置上的设置 使用only / except 来控制何时创建

    2024年02月03日
    浏览(34)
  • error: unable to unlink old ‘.gitlab-ci.yml‘: Permission denied

    #gitlab-runner 执行代码git pull origin xxx 更新时候报 error: unable to unlink old ‘.gitlab-ci.yml’: Permission denied 问题环境:centos 部署gitlab-runner 执行脚本方式 选的shell 产生问题的原因:gitlab-runner程序进程占用锁定了.gitlab-ci.yml 解决方法:gitlab-runner stop 停止服务后,切换到 执行gitlab-runn

    2024年02月10日
    浏览(32)
  • docker部署gitlab CI/CD (一)第一篇:部署gitlab及汉化

    网上很多类似教程,但多少有点夹带私货,有的竟然拉取的第三方镜像,而且很多都要修改配置文件,完全不知道是为什么,于是结合其他人的博客和官方文档, 知其然也要知其所以然,于2023年4月17日写下这篇。 官方文档: https://docs.gitlab.com/ee/install/docker.html 主要参考博客

    2023年04月17日
    浏览(48)
  • 使用gitlab 自带 CI/CD 构建部署项目

    这里我用的是桥接模式 桥接模式方便局域网内的小伙伴一起使用 如果没有这个打算可跳过这步 编辑网络 vi /etc/sysconfig/network-scripts/ifcfg-你的网络名称 修改如下内容 这里我有句话要讲, 这些信息配置完成后出现\\\"网络不可达\\\" 需要把 BOOTPROTO 改为 dhcp 详情可参考 处理网络不可达

    2024年02月12日
    浏览(64)
  • Gitlab CI/CD 自动化打包部署前端(vue)项目

    一、虚拟机安装 1.vmware下载 2.镜像下载 3.Ubuntu 4.新建虚拟机 一直点下一步,直到点击完成。 5.分配镜像 二、Gitlab CI/CD 自动化部署项目 1.配置GitLab CI/CD: 2.生成SSH密钥对: 如果尚未生成,请在本地机器上生成一个SSH密钥对: 3.将SSH私钥添加到GitLab: 4.更新GitLab CI/CD配置: 5

    2024年03月13日
    浏览(63)
  • docker部署Jenkins(Jenkins+Gitlab+Maven实现CI/CD)

          GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。       GitLab是由GitLabInc.开发,使用MIT许可证的基于

    2024年02月03日
    浏览(47)
  • gitlab ci/cd+harbor+k8s实现一键部署(python项目)

    使用 kaniko 构建 Docker 镜像 如果仓库使用http

    2024年02月13日
    浏览(65)
  • [Docker实现测试部署CI/CD----相关服务器的安装配置(1)]

    CI,Continuous Integration,持续集成。即将持续不断更新的代码经构建、测试后也持续不断的集成到项目主干分支。 CD,包含两层含义:Continuous Delivery,持续交付,和 Continuous Deployment,持续 部署。 持续交付:是持续集成的后续步骤,持续频繁地将软件的新版本交付到类生产环境

    2024年02月14日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包