让 Jenkins 到极狐GitLab 的迁移变得更加简单

news2024/9/30 0:33:04

极狐GitLab 是 GitLab 在中国的发行版,可以私有化部署,对中文的支持非常友好,是专为中国程序员和企业推出的企业级一体化 DevOps 平台,一键就能安装成功。安装详情可以查看官网指南。

文章原文可以点击极狐GitLab 官方资源中心查看。

学习为什么以及如何遵循下面的这份指南,轻松地从Jenkins 迁移到极狐GitLab。

在这里插入图片描述

极狐GitLab是最全面的 AI 驱动的 DevSecOps 平台。这意味着极狐GitLab提供了单一应用内具备规划、开发和交付安全软件所需的一切能力。

平台消除了在整个软件开发生命周期(SDLC)中集成各种工具时所带来的痛苦和挣扎。由于 Jenkins 不是一个平台,因此需要额外的工具才能完成 SDLC。这种 DIY DevOps 方法引入了工具链复杂性,带来以下缺点:

  • 需要自定义支持来整合和编排工具
  • 难以维护/升级/保护单独的工具
  • 测量组织转型效率低
  • 开发人员体验较差
  • 需要额外的管理/时间/预算成本
  • 生产力下降
  • 上下文切换和协作低效

在这里插入图片描述
基于这些原因,许多 Jenkins 团队正在考虑迁移到极狐GitLab DevSecOps 平台。如果您正在寻找更强大、可靠和安全的解决方案,极狐GitLab是您最佳选择!极狐GitLab可免费开始使用,并根据您组织的需求提供不同的订阅计划。要了解更多关于我们的产品和功能,查看我们的定价页面。‘

在这篇博客中,您将了解到:

  • 如何规划迁移
  • 如何从其他源代码管理(SCM)工具迁移仓库到极狐GitLab
  • 如何将 Jenkins 中的 CI/CD 流水线迁移到极狐GitLab
  • 其他迁移考虑事项

迁移规划

在从其他工具迁移到极狐GitLab CI/CD之前,您应该首先制定一个迁移计划。迁移计划是一个重要的技术步骤,用于设定期望。CI/CD 工具在方法、结构和技术细节上有所不同,这意味着迁移并非只是数据的一对一映射。一个迁移计划将带来以下好处:

  • 设定并传达清晰的迁移目标,帮助您的用户了解为什么这项工作值得。价值在工作完成时是清晰的,但在进展中人们也需要意识到价值。
  • 从相关领导团队获得支持和对齐,有助于上面提到的一点。
  • 花时间教育用户不同之处。
  • 找到一些方法来安排或延迟迁移的部分,并防止非迁移(或部分迁移)状态时间过长。
  • 记录极狐GitLab CI/CD 提供的改进优势,并将其作为过渡的一部分更新您的实现。

一个迁移计划将使您能够建立一个流程,使您可以在最小化干扰的情况下慢慢迁移到极狐GitLab。这可能包括在某些项目被移至极狐GitLab 并从 Jenkins 中卸载时同时运行 Jenkins 和极狐GitLab。

定义变更管理流程

迁移计划应该定义一个有效的变更管理流程。开发人员、IT运营人员、云管理员、安全人员和质量工程师可能没有使用极狐GitLab的经验,他们可能不知道您或您的领导为什么决定朝这个方向发展。

受到影响的人需要知道:

  • 为什么要进行变更
  • 未来状态是什么样的
  • 公司打算如何从当前状态达到目标状态
  • 在哪里获取更多信息或帮助

为此,您应考虑以下步骤来管理这些职能角色之间的变更:

  • 分析当前状态:记录当前流程的当前状态。收集指标作为基准。通过与关键团队成员的访谈,识别CI/CD 中的有效和无效之处。记录您发现的挑战,无论是定量还是定性的。您将不得不为更改的愿景和原因进行推销,因此您能够清晰定义问题集合时,更容易获得全公司的认可。
  • 建立愿景:现在您已经定量地概述了当前的问题点并且有了基准度量和定性描述(根据团队成员的说法),传达未来状态的愿景。解释为什么这很重要(将其与业务成功指标联系起来)。展示当前状态和理想状态的实时和记录演示。通过多个渠道和媒体强化这一信息——聊天群、全员会议、电子邮件通知、在极狐GitLab 上的横幅通知等。
  • 教育员工:投资于由极狐GitLab 专家提供的极狐GitLab CI/CD 培训。使用极狐GitLab 认证衡量知识的掌握和保留。
  • 传达路线图和资源:向团队成员传达预期的时间表,提供可以帮助他们过渡的可用资源,并介绍像聊天群、论坛、或极狐GitLab 影响者上班时间等社区资源,以供他们提问获取帮助。为鼓励团队早期过渡并与同行应用组分享经验而建立奖励系统,以赚取额外积分!

如果在开始这个过渡时拥有这些要素,您将建立成功的框架。

建立迁移目标

在执行迁移之前,您应该充分了解您的目标以及如何实现它们。例如,您应该能够回答以下一些问题:

  • 您的迁移时间表是什么?
  • 您的 Jenkins 服务器目前是如何配置的?
  • 必须迁移多少个项目?
  • 您的流水线有多复杂?
  • 它是否需要外部依赖、多个流水线触发器、并行构建等?
  • 您的代码是如何部署的?在哪里部署?
  • 部署代码的发布/审查过程是什么样的?
  • 它是集成到 Jenkins 中还是由 Jenkins 触发的独立工作流程?
  • 哪些构建制品或二进制文件对于流水线成功是必需的?
  • Jenkins 作业都使用了哪些插件?
  • Jenkins 代理上安装了哪些软件?
  • 您目前使用的 SCM 解决方案是什么?
  • 您的 Jenkins 作业中是否使用了共享库?
  • Jenkins 使用了哪种身份验证方法(基本身份验证、LDAP/AD、SSO)?
  • 您是否需要从流水线访问其他项目?
  • Jenkins 中是否有用于访问外部服务的凭证?

通过回答这些问题,您将了解如何进行迁移、需要多长时间以及从何处开始。一旦建立了计划并且有了明确的期望和可能的风险,您就可以开始迁移过程。

迁移的先决条件

一旦您制定了迁移计划并解决了所有迁移的期望,您就可以开始设置极狐GitLab。以下是建议的迁移先决条件:

  • 熟悉极狐GitLab。了解关键的极狐GitLab CI/CD功能。
  • 按照教程创建您的第一个极狐GitLab 流水线以及更复杂的流水线,用于构建、测试和部署静态站点。
  • 查看 .gitlab-ci.yml 关键字参考。
  • 设置和配置极狐GitLab。
  • 测试您的极狐GitLab实例。

一旦您了解了极狐GitLab 并且实例已经配置好,您就可以按照迁移计划进行工作,并开始将项目从 Jenkins 迁移到极狐GitLab。确保您的极狐GitLab 实例已经根据极狐GitLab 最佳实践和参考架构进行正确设置。

迁移仓库至极狐GitLab

Jenkins 的一个主要缺点是它没有提供 SCM 解决方案。如果您使用 Jenkins,您的代码必须存储在一个独立的 SCM 解决方案中,而 Jenkins 必须能够访问该解决方案。因为极狐GitLab内置了SCM,从 Jenkins 迁移也意味着您可以迁移您之前使用的 SCM 解决方案,从而进一步降低成本。

极狐GitLab提供了工具,让您可以轻松将存储库及其元数据迁移到极狐GitLab。以下导入工具可帮助您将项目迁移到GitLab:

  • GitHub
  • Another GitLab instance
  • Bitbucket Cloud
  • Bitbucket Server
  • Gitee/SVN
  • Gitea
  • Jira (Issues only)
  • Repo by manifest file
  • Repo by URL

在这里插入图片描述
每个导入工具会从项目中导入不同的数据。阅读导入和迁移项目的文档,以了解有关提供的导入工具的更多信息,查看哪些数据被迁移到极狐GitLab。此外,您可以自动化组和项目的导入,并构建定制解决方案,以进一步满足您组织的需求:

如何迁移代码仓库

使用我们内置的导入工具,将存储库迁移到极狐GitLab非常简单。在这个示例中,我将演示如何将 GitHub中的代码库及其资源(问题、拉取请求、里程碑等)复制到极狐GitLab。要将存储库从 GitHub 迁移到极狐GitLab,可以按照以下步骤操作:

  • 在左侧边栏顶部,选择创建新的项目(+)。

  • 在极狐GitLab部分下选择新项目/仓库。

  • 选择导入项目。

在这里插入图片描述

1、点击 GitHub 按钮。

如果使用极狐GitLab 私有化部署,那么您必须启用 GitHub 导入器。
请注意,其他导入器也可以以相同的方式启动。
2、现在您可以选择:

  • 使用GitHub OAuth授权:选择“使用GitHub授权”。
  • 或使用GitHub个人访问令牌:
    • 前往https://github.com/settings/tokens/new。
    • 在备注字段中,输入令牌描述。
    • 选择repo范围。
    • 可选的导入协作者,选择read:org范围。
    • 点击“生成令牌”按钮。
    • 在极狐GitLab导入页面上,将 GitHub 个人访问令牌粘贴到“个人访问令牌”字段中。
      3、点击“验证”按钮。

4、选择要迁移的项目。

5、选择要迁移的项目以及目的地。

6、按下“导入”按钮。

现在您应该在工作区中拥有导入的项目。有关从GitHub迁移到GitLab的其他指导,您可以观看此视频:

完成仓库迁移后,您可以设置 Jenkins 流水线来在极狐GitLab 中使用Jenkinsfile。这可以通过 Jenkins 流水线配置菜单设置仓库URL来完成,链接至您最新导入的项目。

在这里插入图片描述
这对于初始仓库迁移阶段非常有用,使您可以同时使用 Jenkins 和极狐GitLab,从而在迁移 CI/CD 功能时防止服务中断。

此外,您可以利用极狐GitLab Jenkins插件来帮助迁移。此插件允许GitLab触发和获取 Jenkins 构建的状态。

迁移CI/CD流水线

一旦您将仓库迁移到极狐GitLab,您就可以继续将 Jenkins 流水线迁移到极狐GitLab。 这个过程可能会相对简单,但需要对Jenkins和极狐GitLab的概念和语法有一定的了解。

Jenkins 提供了两种不同类型的语法来定义流水线,即声明式和脚本。在本指南中,我们将介绍从声明式流水线迁移,因为它们是最常用的。

逐步流水线迁移

在这个教程中,我们将分析一个使用Jenkinsfile(Groovy)和极狐GitLab CI/CD 配置文件(YAML)构建、测试和部署使用 Golang 编写的微服务。然后,我们将启用极狐GitLab中的流水线,并查看其结果。该流水线将:

  • 使用带有 alpine标签的 golang 容器镜像
  • 运行一个任务来将 Golang代码编译为可执行二进制文件
    • 将构建的可执行文件存储为artifact
  • 运行一个任务来运行单元测试
  • 运行一个任务部署到 staging
    • 仅在提交指向 staging 分支时执行
    • 在测试阶段成功后开始
    • 使用前一个任务中构建生成的可执行文件 artifact

在下面,您可以看到Jenkins和极狐GitLab 流水线的定义以及描述性注释。您可以在项目中查看流水线的运行情况。现在让我们来看一个用Groovy编写的Jenkinsfile:

// The top-level of the declarative
// pipeline.
pipeline {

  // Defines the default agent to use
  // when it is not explicitly defined
  // in a job.
    agent any

  // Defines the stages that will run
  // in numerical order. Each stage
  // only runs one job.
    stages {

    // Defines the name of the stage
        stage('build') {
      // Defines the container image to
      // use for this job, overwriting
      // the default 'agent any'.
      // The Jenkins Docker plugin
      // must be configured for this
      // to run.
            agent { docker 'golang:alpine' }

      // Defines the sequence of steps
      // to execute when the stage is
      // run.
            steps {
                sh 'go build -o bin/meow-micro'
                sh 'chmod +x bin/meow-micro'
            }

      // The steps to run after the
      // stage completes.
            post {
              always {

        // Stores the stage artifacts
        // generated for use in another
        // job.
                archiveArtifacts artifacts: 'bin/meow-micro'
                onlyIfSuccessful: true
              }
            }
        }

    stage('test') {
            agent { docker 'golang:alpine' }
            steps {
                sh 'go test .'
            }
        }

        stage('deploy') {
      // Defines conditions which must
      // be met in order for the job to
      // execute. In this case the
      // deploy job will only run on the 
      // staging branch.
            when {
              branch 'staging'
            }
            steps {
                echo 'Deploying meow-micro to staging'
        // Uses the artifact stored in
        // the build stage.
                sh './bin/meow-micro'
            }
        }
    }
}

现在,让我们看看如何在极狐GitLab 中创建相同的功能:

# Defines the default image to use
# when it is not explicitly defined in
# a job.
default:
  image: alpine:latest

# Defines the order to run the stages.
# Each stage can have multiple jobs.
stages:
  - build
  - test
  - deploy

# Defines the name of the job
create-binary:
 # Defines the stage the job will run in
  stage: build
 # Defines the container image to use
 # for this job, overwriting default.
  image: golang:alpine
 # Defines the sequence of steps to
 # execute when the job is run.
  script:
    - go build -o bin/meow-micro
    - chmod +x bin/meow-micro
 # Stores the job artifacts generated
 # for use in another job.
  artifacts:
    paths:
      - bin/meow-micro
    expire_in: 1 week

unit-tests:
  stage: test
  image: golang:alpine
  script:
    - go test .
 # Defines commands to run after the
 # job.
 after_script:
  - echo "Tests Complete"

staging-deploy:
  stage: deploy
 # Defines commands to run before the
 # actual job.
  before_script:
    - apk update
  script:
    - echo "Deploying meow-micro to staging environment"
    - ./bin/meow-micro
 # Defines conditions which must be met
 # in order for this job to execute. In
 # this case the staging-deploy job will 
 # only run on the staging branch.
  rules:
    - if: $CI_COMMIT_BRANCH == 'staging'
 # Allows the artifact stored in the
 # build job to be used in this job.
  artifacts:
    paths:
      - bin/meow-micro

正如您可能已经注意到的那样,在语法方面,Jenkins 和极狐GitLab 之间都有许多相似之处,使得流水线迁移变得简单直接。虽然上面提供了一个基本示例,但请务必阅读两种工具之间的功能和概念的全面对比列表。

现在我们已经了解了如何将 Jenkins 映射到极狐GitLab,我们可以开始在极狐GitLab 中使用相同功能创建流水线。为了执行 CI/CD 的迁移,您可以按照以下步骤操作:

1、打开您在上面迁移到极狐GitLab的仓库

  • 在左侧边栏的顶部,选择搜索或前往…”。

  • 定位您的项目。

2、打开流水线编辑器

在左侧边栏中,选择“构建” > “流水线编辑器”。

在这里插入图片描述

  • 点击“配置流水线”按钮.

在这里插入图片描述
3. 填充 .gitlab-ci.yml文件

  • 添加极狐GitLab CI 流水线代码。

在这里插入图片描述

  • 确保语法正确。

在这里插入图片描述

  • 可视化流水线。

在这里插入图片描述
4. 将文件提交到主分支。

  • 添加提交消息。

  • 确保分支设置为主分支。

  • 单击提交更改按钮。

在这里插入图片描述
一旦文件已合并,定义的流水线将启动。您可以返回到项目并通过在项目的“构建”>“流水线”页面下选择查看流水线的运行情况。由于它在主分支上运行,您将只看到创建二进制文件和单元测试作业;staging 环境部署作业仅在 staging 分支上运行。

在这里插入图片描述
点击作业时,我们可以看到它的输出:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
您可以看到存储在创建二进制作业中的制品是如何在暂存部署作业中使用的。这就可以看出将流水线从 Jenkins 迁移到极狐GitLab 是多么简单!

迁移时的其他考虑事项

我们发现一些有用的考虑事项可以使部署过程更加简单:

  • 不要试图将任务一对一地复制到极狐GitLab 作业中。花些时间来了解当前流水线正在执行的任务以及其解决的问题。
  • 有些 Jenkins 作业可能过于复杂,不能立即迁移到极狐GitLab中。出于这个原因,使用极狐GitLab Jenkins插件来启动 Jenkins 流水线,并直接从极狐GitLab查看它们的结果可能是有益的。这样你可以逐步将特定操作迁移到极狐GitLab,直到整个流水线都完成迁移。
  • 从一开始就使用极狐GitLab 提供的内置模板实现安全扫描和代码质量分析。这将让您将安全性向左移动,减少可能发生的违规行为。不要使 CI/CD 配置过于复杂,并尝试一次性使用每个功能优势。将代码模块化,采用小的迭代实现。
  • 从一开始就实施监控和治理。
  • 了解极狐GitLab Runner(Go 语言编写的组件)可能与 Jenkins 代理(Java 编写)的行为不同。CPU 使用率和内存消耗可能不同 —— 请确保随着时间的推移进行比较。
  • 考虑投资自动扩展机制,并在周末或工作时间之外关闭不必要的资源。
  • 通过使作业容器化来现代化应用程序开发。Jenkins 作业今天不在容器中执行,而是在作为 VM 运行的 Jenkins 代理上执行。

虽然这个列表并不详尽,但它提供了一些要注意的好的开始点。如果需要额外的帮助,极狐GitLab提供专业服务来支持您的迁移之旅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用短信群发平台时提升短信营销打开率的关键因素

尽管众多企业依赖短信群发平台作为营销手段,但短信的实际打开率往往不尽如人意。以下是几个显著影响短信营销效果的关键因素及其优化策略: 1. 谨慎选择用词,规避敏感词汇 现代智能手机普遍配备了智能拦截功能,对包含特定敏感词汇…

C++宏展开

感觉自己一直对C的宏展开没有细致地研究过,这两天深入地学习了一下,做个笔记。 文章目录 宏展开基本规则宏嵌套展开补充说明参考资料 首先明确宏展开,是在预处理阶段进行的,进入编译期就是宏展开之后的代码了,所以不会…

基于Flask的新冠疫情信息可视化查询系统【案例模板】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主每文一语 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 本项目是一个案例学习项目,可以作为新手进行学习系统的框架,本项目有数据库…

Git 学习

一、基本使用 1. 基本理论 Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目;版本控制是一种记录一个或者若干个文件内容变化,以便来查阅特定版本修订情况的系统 集中化版本控制系统:SVN, CV…

单片机使用cJSON的坑

文章目录 问题解决办法方法一方法二 问题 单片机USAR串口通信我想用json, 我不想用 分隔符的方式。感觉性能够,还有就是方便理解。 mcu型号 : AT32F415系列 雅特力的。 cJSON库: https://github.com/DaveGamble/cJSON/tree/master 只要把 cJSON.h 和 c…

云计算实训39——Harbor仓库的使用、Docker-compose的编排、YAML文件

一、Harbor部署 1.验证python版本 [rootdocker2 ~]#python --version 2.安装pip [rootdocker2 ~]# yum -y install python2-pip #由于版本过低,需要对其进行一个升级 #更新pip [rootdocker2 ~]#pip install --upgrade pip 3.指定版本号 [rootdocker2 ~]# p…

geodatatool(地图资源工具)下载高德数据及数据共享

利用geodatatool(地图资源工具)3.8(新)下载高德POI数据: 选择类型如下: 数据效果如下,由于用的免费的key,所以可能数据下载还不完全,但已经很多了: 下载数据…

小模型大智慧!港大重磅开源EasyRec,推荐系统进入语言模型时代

在当今的信息时代,我们每天都被海量信息所包围,不断面临各种选择。从网上购物、音乐播放到视频推荐,推荐系统已经成为我们生活中不可或缺的一部分。那么,这些系统是如何运作的?它们又是如何在信息的洪流中帮助我们找到…

《使用 LangChain 进行大模型应用开发》学习笔记(一)

前言 本文是 Harrison Chase (LangChain 创建者)和吴恩达(Andrew Ng)的视频课程《LangChain for LLM Application Development》(使用 LangChain 进行大模型应用开发)的学习笔记。由于原课程为全英文视频课…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(KNN分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(KNN分类器) 文章目录 一、基本原理原理流程举个例子总结 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#x…

Android 优化之 查找so 文件的来源

序言 有时候我们需要优化apk的包体积大小。比如下面这样的。一个so文件大小有10M。但是我们并不知道so文件是那个库引入的。所以需要研究一下。 方法 在参考网上现有方法,加上自己测试以后。有了下面的成功。而且在gradle 8.4.2都可以成功。相信大家都可以成功。…

MathType常见问题汇总

文章目录 MathType常见问题汇总一、如何将MathType内嵌到WPS工具栏中?二、在word中,如何批量修改所有MathType公式的字体以及大小格式?三、如何解决插入MathType公式后的行间距发生改变?参考 MathType常见问题汇总 一、如何将Mat…

CEASC:基于全局上下文增强的自适应稀疏卷积网络在无人机图像上的快速目标检测

Adaptive Sparse Convolutional Networks with Global Context Enhancement for Faster Object Detection on Drone Images 摘要 提出了一种基于稀疏卷积的探测头优化方法,该方法在精度和效率之间取得了较好的平衡。然而,该算法对微小物体的上下文信息融…

C/C++ JSON ORM

structs #include "json_struct.h" #include <vector>JS_ENUM(Error, None, InvalidRange, IllegalParam, Nullptr, OverLimitLen) JS_ENUM_DECLARE_STRING_PARSER(Error)// 搜索匹配区域 struct RangeContent {size_t start;size_t end;std::strin…

基于协同过滤与情感分析的酒店评论分析与景区推荐系统实现

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍系统界面推荐模块主题分类文本可视化每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 近年来&#xff0c;旅游行业风生水起&#…

#单片机高级 硬件部分笔记

课程内容 硬件基础知识PCB基础知识嘉立创EDA&#xff08;专业版&#xff09;软件的安装及使用PCB设计PCB设计规则&#xff08;原理图、布局、布线&#xff09;项目&#xff08;暂定&#xff09; 1、硬件基础 初级硬件工程师 熟练掌握数字电路、模拟电路知识&#xff0c;熟悉常用…

unity的问题记录(信息管理)

闭包 捕获引用&#xff1a;当你在委托或 lambda 表达式中使用外部变量时&#xff0c;它们捕获的是这个变量的引用&#xff0c;而不是当时的值。变量的生命周期&#xff1a;捕获的变量的生命周期不受限于它的作用域&#xff0c;委托可以在变量的作用域结束后继续访问它。 为了…

今晚8点直播预告——模拟RCT,真实世界研究新方法,快来了解一下吧

这是讲座预告&#xff0c;我们来向大家介绍一下真实世界研究的新方法—模拟RCT&#xff01; 郑老师喜欢交流&#xff0c;于是在2024年&#xff0c;决定邀请各位一起参加统计学沙龙&#xff0c;基本每周一期&#xff0c;欢迎各位朋友来交流、讲课。 本期沙龙&#xff0c;在8月29…

【ubuntu笔记】拉取docker镜像

拉取docker镜像 更换国内源 修改配置文件 sudo vim /etc/docker/daemon.json{"registry-mirrors": ["https://ustc-edu-cn.mirror.aliyuncs.com/","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://cc…

【Java】Maven多环境切换实战(实操图解)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 Maven多环境配置学习4.2 切换环境4.2.1 先打包4.2.2 之后可以切换 五、总结…