学习为什么以及如何遵循下面的这份指南,轻松地从Jenkins 迁移到极狐GitLab。
极狐GitLab是最全面的 AI 驱动的 DevSecOps 平台。这意味着极狐GitLab提供了单一应用内具备规划、开发和交付安全软件所需的一切能力。
平台消除了在整个软件开发生命周期(SDLC)中集成各种工具时所带来的痛苦和挣扎。由于 Jenkins 不是一个平台,因此需要额外的工具才能完成 SDLC。这种 DIY DevOps 方法引入了工具链复杂性,带来以下缺点:
自助式DevOps与DevSecOps平台
基于这些原因,许多 Jenkins 团队正在考虑迁移到极狐GitLab DevSecOps 平台。如果您正在寻找更强大、可靠和安全的解决方案,极狐GitLab是您最佳选择!极狐GitLab可免费开始使用,并根据您组织的需求提供不同的订阅计划。要了解更多关于我们的产品和功能,查看我们的定价页面。
在这篇博客中,您将了解到:
在从其他工具迁移到极狐GitLab CI/CD之前,您应该首先制定一个迁移计划。迁移计划是一个重要的技术步骤,用于设定期望。CI/CD 工具在方法、结构和技术细节上有所不同,这意味着迁移并非只是数据的一对一映射。一个迁移计划将带来以下好处:
一个迁移计划将使您能够建立一个流程,使您可以在最小化干扰的情况下慢慢迁移到极狐GitLab。这可能包括在某些项目被移至极狐GitLab 并从 Jenkins 中卸载时同时运行 Jenkins 和极狐GitLab。
迁移计划应该定义一个有效的变更管理流程。开发人员、IT运营人员、云管理员、安全人员和质量工程师可能没有使用极狐GitLab的经验,他们可能不知道您或您的领导为什么决定朝这个方向发展。
受到影响的人需要知道:
为此,您应考虑以下步骤来管理这些职能角色之间的变更:
如果在开始这个过渡时拥有这些要素,您将建立成功的框架。
在执行迁移之前,您应该充分了解您的目标以及如何实现它们。例如,您应该能够回答以下一些问题:
通过回答这些问题,您将了解如何进行迁移、需要多长时间以及从何处开始。一旦建立了计划并且有了明确的期望和可能的风险,您就可以开始迁移过程。
一旦您制定了迁移计划并解决了所有迁移的期望,您就可以开始设置极狐GitLab。以下是建议的迁移先决条件:
一旦您了解了极狐GitLab 并且实例已经配置好,您就可以按照迁移计划进行工作,并开始将项目从 Jenkins 迁移到极狐GitLab。确保您的极狐GitLab 实例已经根据极狐GitLab 最佳实践和参考架构进行正确设置。
Jenkins 的一个主要缺点是它没有提供 SCM 解决方案。如果您使用 Jenkins,您的代码必须存储在一个独立的 SCM 解决方案中,而 Jenkins 必须能够访问该解决方案。因为极狐GitLab内置了SCM,从 Jenkins 迁移也意味着您可以迁移您之前使用的 SCM 解决方案,从而进一步降低成本。
极狐GitLab提供了工具,让您可以轻松将存储库及其元数据迁移到极狐GitLab。以下导入工具可帮助您将项目迁移到GitLab:
GitHub 到极狐GitLab 仓库导出器
每个导入工具会从项目中导入不同的数据。阅读导入和迁移项目的文档,以了解有关提供的导入工具的更多信息,查看哪些数据被迁移到极狐GitLab。此外,您可以自动化组和项目的导入,并构建定制解决方案,以进一步满足您组织的需求:
使用我们内置的导入工具,将存储库迁移到极狐GitLab非常简单。在这个示例中,我将演示如何将 GitHub中的代码库及其资源(问题、拉取请求、里程碑等)复制到极狐GitLab。要将存储库从 GitHub 迁移到极狐GitLab,可以按照以下步骤操作:
在左侧边栏顶部,选择创建新的项目(+)。
在极狐GitLab部分下选择新项目/仓库。
选择导入项目。
选择导入项目
1、点击 GitHub 按钮。
2、现在您可以选择:
3、点击“验证”按钮。
4、选择要迁移的项目。
5、选择要迁移的项目以及目的地。
6、按下“导入”按钮。
现在您应该在工作区中拥有导入的项目。有关从GitHub迁移到GitLab的其他指导,您可以观看此视频:
完成仓库迁移后,您可以设置 Jenkins 流水线来在极狐GitLab 中使用Jenkinsfile。这可以通过 Jenkins 流水线配置菜单设置仓库URL来完成,链接至您最新导入的项目。
Jenkins流水线SCM设置
这对于初始仓库迁移阶段非常有用,使您可以同时使用 Jenkins 和极狐GitLab,从而在迁移 CI/CD 功能时防止服务中断。
此外,您可以利用极狐GitLab Jenkins插件来帮助迁移。此插件允许GitLab触发和获取 Jenkins 构建的状态。
一旦您将仓库迁移到极狐GitLab,您就可以继续将 Jenkins 流水线迁移到极狐GitLab。 这个过程可能会相对简单,但需要对Jenkins和极狐GitLab的概念和语法有一定的了解。
Jenkins 提供了两种不同类型的语法来定义流水线,即声明式和脚本。在本指南中,我们将介绍从声明式流水线迁移,因为它们是最常用的。
在这个教程中,我们将分析一个使用Jenkinsfile(Groovy)和极狐GitLab CI/CD 配置文件(YAML)构建、测试和部署使用 Golang 编写的微服务。然后,我们将启用极狐GitLab中的流水线,并查看其结果。该流水线将:
alpine
标签的 golang 容器镜像Golang
代码编译为可执行二进制文件
在下面,您可以看到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文件
流水线编辑器输入
流水线语法验证
流水线可视化
4. 将文件提交到主分支。
● 添加提交消息。
● 确保分支设置为主分支。
● 单击提交更改按钮。
提交更改对话框
一旦文件已合并,定义的流水线将启动。您可以返回到项目并通过在项目的“构建”>“流水线”页面下选择查看流水线的运行情况。由于它在主分支上运行,您将只看到创建二进制文件和单元测试作业;staging 环境部署作业仅在 staging 分支上运行。
Pipeline running on main branch
在主分支上运行的流水线
点击作业时,我们可以看到它的输出:
创建二进制作业输出
单元测试作业输出输入
staging 环境部署作业输出
您可以看到存储在创建二进制作业中的制品是如何在暂存部署作业中使用的。这就可以看出将流水线从 Jenkins 迁移到极狐GitLab 是多么简单!
我们发现一些有用的考虑事项可以使部署过程更加简单:
虽然这个列表并不详尽,但它提供了一些要注意的好的开始点。如果需要额外的帮助,极狐GitLab提供专业服务来支持您的迁移之旅。