`
joy_cz
  • 浏览: 135314 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

为GitLab项目配置CI/CD持续集成

阅读更多
# 为GitLab项目配置CI/CD持续集成

## 前提

    1.已经安装好了Gitlab服务
    2.准备一台linux服务器(示例以CentOS7)
    3.这里以安装配置Gitlab-Runner,并且为Gitlab上某一项目配置Runner为例
    4.安装的Runner以基于Linux为例,对应的Executor以docker为例
   
    相关说明:Gitlab的CI/CD需要在项目下增加一个.gitlab-ci.yml文件,而该文件中定义的任务(job)是由Gitlab-Runner来调度的,
    而真正执行任务是注册Gitlab-Runner时指定的Executor。可以根据项目实际情况,注册多个Gitlab-Runner对应多个Executor,每一个Executor都是独立环境。

## 准备工作

由于安装过程中,会使用到sudo命令,因此确保sudo命令可以执行。

编辑/etc/sudoers文件,找到
   
    Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

修改为:
   
    Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

## 开始安装GitLab-Runner  (Linux,root用户模式下)

下载gitlab-runner 二进制安装文件

    # Linux x86-64
    sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

    # Linux x86
    sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386

    # Linux arm
    sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm

给gitlab-runner 赋予权限
   
    sudo chmod +x /usr/local/bin/gitlab-runner

官方教程会在这里创建一个gitlab-runner用户,用于后面job的执行,但由于权限问题,导致后续deploy会出现不少问题,这里暂时用root用户

    sudo gitlab-runner install --user=root --working-directory=/app/gitlab-runner
    sudo gitlab-runner start
 
  至此,gitlab-runner 已经安装成功,可执行 gitlab-runner status 查看运行状态 


## 注册Gitlab-Runner

首先,打开你的GitLab-Runner,找到你要配置Gitlab CI/CD 持续集成的项目,如:gitlab-demo

    依次打开: gitlab-demo -> setting -> CI/CD -> Runners -> Set up a specific Runner manually
    找到以下内容:URL ,Token

回到linux终端(root模式下),执行:

    # gitlab-runner register
    Please enter the gitlab-ci coordinator URL:
    # 输入上面步骤找到的URL,示例:http://gitlab.alibaba-inc.com/ci
    Please enter the gitlab-ci token for this runner:
    # 输入上面步骤找到的Token
    Please enter the gitlab-ci description for this runner:
    # 为该gitlab runner自定义一个名称,示例:gitlab-runner-docker-dev (表示该runner是基于docker的executer的dev环境)
    Please enter the gitlab-ci tags for this runner (comma separated):
    # 为该gitlab runner定义一组tag,以逗号隔开,表示只有匹配到这些tag,才会用改runner执行job。示例:docker-dev
    Whether to run untagged builds [true/false]:
    # true
    Please enter the executor: docker, parallels, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine:
    # 为该runner指定一个executor,由于这里用docker作为示例,输入:docker
    Please enter the default Docker image (e.g. ruby:2.1):
    # 输入默认的docker镜像,根据项目需要自定义,官方默认为alpine:latest,这里我们的项目是基于maven的java项目,所以输入:maven:3-jdk-8

到这里,Gitlab-Runner已注册完成,但需要重启一下,输入:

    gitlab-runner restart
   
这时,可以在项目中看到该runner已经配置好,且处于运行中(绿色图标)

    依次打开: gitlab-demo -> setting -> CI/CD -> Runners -> Set up a specific Runner manually   下面可以看到上面配置的Runner,已在运行中。

## 配置gitlab-runner环境

    由于Gitlab-Runner的Executor在执行每一个job时,是在独立环境中执行的,而我们实际项目中,经常需要配置多个执行job,或者项目是由多个maven项目构成的。
    这里就会出现需要共享maven的.m2仓库问题,可以通过为Runner配置映射关系,指定共享目录即可。

编辑GitLab-Runner的配置文件:
 
    vi /etc/gitlab-runner/config.toml

找到上面配置的Runner (gitlab-runner-docker-dev),在配置项volumes添加:"/root/.m2:/root/.m2"和pull_policy = "if-not-present" 修改后如下:

         [[runners]]
           name = "gitlab-runner-docker-dev"
           url = "https://gitlab.cedarhd.com"
           token = "10c11056ca68897428370c4e992051"
           executor = "docker"
           [runners.docker]
             tls_verify = false
             image = "maven:3-jdk-8"
             privileged = false
             disable_entrypoint_overwrite = false
             oom_kill_disable = false
             disable_cache = false
             volumes = ["/cache","/home/gitlab-runner-new/.m2:/root/.m2"]
             pull_policy = "if-not-present"
             shm_size = 0
           [runners.cache]
             [runners.cache.s3]
             [runners.cache.gcs]

   Gitlab-Runner配置完成,重启:
  
      gitlab-runner restart


至此,基于Linux配置GitLab-Runner已全部完成。

##基于Docker配置GitLab-Runner

    默认环境已安装了docker

拉取gitlab-runner镜像

    sudo docker pull gitlab/gitlab-runner:latest

启动容器:

     sudo docker run -d --name gitlab-runner --restart always \
       -v /srv/gitlab-runner/config:/etc/gitlab-runner \
       -v /var/run/docker.sock:/var/run/docker.sock \
       gitlab/gitlab-runner:latest

注册Gitlab-runner,通过以下命令进入注册:

    sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register

注册过程,跟上面linux一致。
0
0
分享到:
评论

相关推荐

    深入探索 Java 与 GitLab CI 的集成艺

    GitLab CI/CD 正是在这样的背景下,成为了 Java 项目持续集成和持续部署的强大助力。本文将深入探讨 Java 与 GitLab CI/CD 的集成,揭示如何通过自动化流程提升 Java 项目的构建、测试和部署效率。 通过将 GitLab CI...

    gitLab安装GitLabCI/CD需要的软件(包含maven+git+gitrunner+jdk)

    GitLab CI/CD是GitLab内置的持续集成和持续部署工具,它允许开发者自动化软件开发流程,包括构建、测试和部署。在这个过程中,GitLab Runner是执行这些任务的关键组件。以下将详细介绍安装GitLab CI/CD所需的软件...

    Devops_之—基于Gitlab与Jenkins的CI与CD.pdf

    并且对持续集成(CI)、持续部署(CD)和持续交付(Continuous Delivery)等概念进行了定义和解释。 在第一页的最后一节中,讨论了常见的部署方式,如集中式部署和分散式部署等。并且列举了一些常见的持续集成开源...

    给出了TC397 Tasking CMake Gitlab集成使工程可以命令行编译 CI CD的最小工程

    Gitlab是一个流行的代码托管平台,它支持Git版本控制系统,并提供了强大的持续集成/持续部署(CI/CD)功能。在这个最小工程中,Gitlab被用作CI/CD工具,通过配置`.gitlab-ci.yml`文件,你可以定义一系列的构建、测试...

    基于主流技术Spring Boot2,配套代码生成平台,DevOps运维平台,CI/CD持续集成能力,在线API接口管理。

    4. **CI/CD(持续集成/持续部署)**: CI/CD是DevOps的核心实践,通过自动化测试、构建和部署流程,确保代码的快速、频繁和可靠交付。持续集成意味着每次代码提交都会触发自动构建和测试,而持续部署则进一步将验证过...

    Jenkins与Gitlab自动化部署CI/CD

    "Jenkins与Gitlab自动化部署CI/CD" 本资源摘要信息主要介绍了DevOps的概念、CI/CD的定义、自动化部署的方式以及相关工具的介绍。 首先,DevOps是Development和Operations的组合,也就是开发和运维的简写。它强调...

    Gitlab-CICD 安装配置

    我们可以在仓库根目录下创建一个名为 `.gitlab-ci.yml` 的文件,该文件用于定义 CI/CD 流程。 在 `.gitlab-ci.yml` 文件中,我们可以定义多个阶段,例如构建、测试和部署。例如: ``` stages: - build - test -...

    gitlab实现持续集成

    3. 配置项目以使用GitLab CI/CD:通过在项目根目录创建一个名为.gitlab-ci.yml的YAML文件来定义CI/CD流水线。这个文件描述了流水线的各个阶段、作业以及每个作业要执行的脚本。例如,可以定义一个test阶段,其中包含...

    gitlab安装包及依赖,配合https://editor.csdn.net/md/?articleId=123552886本文

    GitLab 是一个开源的版本控制系统,它提供了与GitHub类似的代码托管功能,同时还包含了项目管理、持续集成/持续部署(CI/CD)、代码审查等工具,是许多开发团队进行协作开发的重要平台。本压缩包文件包含了GitLab的...

    Gitlab持续集成持续部署(CI-CD)研究报告.doc

    ### Gitlab持续集成持续部署(CI/CD)研究报告 #### 1. 研究背景与现状 在当今快速变化的软件开发环境中,持续集成(Continuous Integration, CI)与持续部署(Continuous Deployment, CD)已经成为了提高软件产品...

    如何利用Gitlab-ci持续部署到远程机器(详细教程)

    还是那句话,CI/CD实质是将我们手动集成、拷贝部署的方式脚本化,远程部署的重要姿势是要求免密操控。 要让Gitlab Runner部署到远程机器,远程机器必须信任gitlab runner账户。 先执行su gitlab-runner切换到gitlab...

    这是一个简单的demo项目,用于展示如何使用GitLab-CI为Flask应用做单元测试和API测试.zip

    本项目“gitlab-ci-flask-master”为我们提供了一个实例,展示了如何利用GitLab CI/CD(Continuous Integration/Continuous Deployment)来为基于Flask的应用进行单元测试和API测试。 首先,Flask是一个轻量级的...

    gitlab安装-配置-运维-使用详细说明

    3. 持续集成(CI/CD):在项目设置中启用CI/CD,编写`.gitlab-ci.yml`文件定义构建流程。 4. 代码审查:通过Merge Request功能,团队成员可以对代码进行审查和讨论。 5. 项目管理:使用里程碑、标签、问题追踪等功能...

    CI持续集成

    - **GitLab CI/CD**:内置在GitLab中的持续集成/部署服务,与版本控制紧密集成。 4. **CI流程**: - **代码提交**:开发人员将更改推送到共享存储库。 - **触发构建**:版本控制系统或CI工具检测到更改并启动...

    gitlab cicd 临时文档

    GitLab CI/CD 是一种强大的自动化工具,用于持续集成(CI)和持续部署(CD),在软件开发过程中,它能够帮助团队实现代码的自动化测试、构建和部署。本临时文档将深入探讨GitLab CI/CD 的核心概念和实践操作。 **...

    gitlab-ci-cd:使用gitlab CI测试持续集成和持续交付

    GitLab CI/CD 是一种强大的自动化工具,用于管理和执行软件开发过程中的持续集成(CI)和持续交付(CD)。在本文中,我们将深入探讨如何利用GitLab CI/CD与JavaScript项目相结合,特别是在创建React应用程序的场景下...

    自动化打包部署前端vue项目,思维导图

    在现代软件开发流程中,持续集成(CI)与持续部署(CD)已成为提升开发效率、保证代码质量不可或缺的一环。GitLab CI/CD 是一个强大的工具,可以实现从前端Vue项目的构建到部署的全流程自动化。 #### 二、自动化部署...

    gitlab-runner一整套配置

    GitLab Runner是GitLab持续集成(CI)和持续部署(CD)系统的关键组成部分。它负责接收GitLab CI/CD作业并执行相应的构建、测试或部署任务。以下是对"gitlab-runner一整套配置"的详细解释,以及如何结合GitLab 11.1版本...

    DevOps Essentials CI/CD / Agile / LEAN

    - **持续集成/交付工具**:Jenkins, Travis CI - **配置管理**:Ansible, Chef, Puppet - **监控与报警**:Prometheus, Grafana, Zabbix - **容器化技术**:Docker, Kubernetes - **云平台**:AWS, Azure, Google ...

    GitLab + Jenkins服务器搭建指南:构建高效的持续集成平台

    本指南详细讲解了如何搭建GitLab和Jenkins服务器,实现高效的持续集成(CI)和持续交付(CD)平台。通过GitLab进行源代码版本控制,结合Jenkins的自动化构建与部署能力,帮助开发和运维团队自动化代码测试和部署流程...

Global site tag (gtag.js) - Google Analytics