返回文章列表

玩转 ChatGPT+ 极狐 GitLab|分分钟丝滑迁移 Jenkins 到极狐 GitLab CI

小马哥
极狐GitLab DevOps 技术布道师

💃 自从 ChatGPT 闪亮登场以来,各种基于它的软件扩展纷至沓来。爱折腾的极狐 GitLab 开发者们,也花式玩转起了 ChatGPT + 极狐 GitLab,让研发工作更高效。

 

之前我们分享了 如何利用极狐GitLab CI/CD 完成 Jenkins 的迁移。今天有了 ChatGPT 的加持,可以分分钟完成丝滑切换,Enjoy~

 

可用的 Jenkinsfile

 

下面是一个完整可用的 Jenkinsfile 内容,实现了一个 node 应用程序从构建到部署的全过程,(全过程 Demo 所演示的仓库托管在极狐 GitLab SaaS 上)。

 

pipeline {

    agent any

    stages {
        stage('Source Code Checkout') {
            steps {
                  checkout scmGit(
                      branches: [[name: '*/main']],
                      extensions: [], 
                      userRemoteConfigs: 
                        [
                            [
                                credentialsId: 'JiHu-GitLab-SSH-Key', 
                                url: 'git@jihulab.com:devops-summit-workshop/dev-sec-ops.git'
                            ]
                        ]
                    )
            }
        }
        stage('build') {
            steps{
                withCredentials([usernamePassword(credentialsId: 'Docker-Hub-Cred', passwordVariable: 'password', usernameVariable: 'username')]) {
                    sh "docker login docker.io -u $username -p $password"
                    sh "docker build -t dllhb/node:1.0 ."
                    sh "docker push dllhb/node:1.0"
                }
            }
        }
        stage('test') {
            steps {
                    sh "Begin to do test"
                    sh '''
                    yarn install --cache-folder .yarn
                    yarn test
                    '''
            }
        }
        stage('deploy') {
            steps {
                    sh "Begin to deploy"
                    sh "docker run --rm -p 3000:3000 dllhb/node:1.0"
            }
        }
    }
}

 

在 Jenkins 上可以得到如下运行结果:

 

 

注意:如果要在 Jenkins 上完成上述流程,需要的大概步骤如下:

 

Step 1: 安装 Jenkins 实例;

 

Step 2: 配置 Jenkins,诸如极狐 GitLab 插件(用于从极狐 GitLab 拉取源代码)、添加 Credentials(用于权限验证的极狐 GitLab Access Token、用于拉取代码的极狐 GitLab SSH Key、用于将镜像推动到 Dockerhub 的用户名和密码);

 

Step 3: Jenkinsfile 的编写以及 Jenkins Job 的调试。

 

可以看出来整个流程还是比较耗时的。而极狐 GitLab CI 是极狐 GitLab 一体化 DevOps 平台的重要功能,不需要额外安装第三方工具链、不需要额外配置即可开箱使用对应的 CI/CD 功能。

 

下面用 ChatGPT 将上述的 Jenkinsfile 转换成 .gitlab-ci.yml 。

 

ChatGPT 大发神威

 

只需要礼貌的对 ChatGPT 说出下面这段话即可:

 

 

然后 ChatGPT 就很认真的给出了以下答案:

 

 

还不忘友情提醒:

 

 

由于英文阅读起来费劲,干脆让 ChatGPT 做了一个翻译:

 

 

当然,上述的 .gitlab-ci.yml 文件需要稍微做一些修改,因为:

 

极狐 GitLab 是一体化 DevOps 平台,源代码和 CI/CD 在同一个平台,因此 CI/CD 的构建不需要刻意拉取本仓库源代码(每次构建开始都会默认拉取代码);

极狐 GitLab 有内置的镜像仓库用来存储 docker image,无需把镜像推送到 Dockerhub。关于极狐 GitLab 镜像仓库的使用可以查看公众号文章 极狐GitLab 镜像仓库的使用技巧

 

调试完成后在极狐 GitLab 上进行验证。

 

极狐 GitLab CI/CD 验证结果

 

将 ChatGPT 给的例子按照上述建议修改之后,贴入 .gitlab-ci.yml 文件进行测试:

 

stages:
  - build
  - test
  - deploy

build:
  stage: build
  image: docker:20.10.7-dind
  tags:
    - chatgpt
  variables:
    DOCKER_DRIVER: overlay2
  before_script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u "$CI_REGISTRY_USER" --password-stdin
  script:
    - docker build -t $CI_REGISTRY_IMAGE/node:1.0 .
    - docker push $CI_REGISTRY_IMAGE/node:1.0

test:
  stage: test
  image: node:latest
  script:
    - yarn install --cache-folder .yarn
    - yarn test
    
deploy:
  stage: deploy
  image: docker:20.10.7-dind
  script:
    - docker run --rm -p 3000:3000 $CI_REGISTRY_IMAGE/node:1.0

 

触发 CI/CD,可以看到如下构建结果:

 

 

至此,在 ChatGPT 的帮助下,我们就快速实现了从 Jenkins 到极狐 GitLab CI 的切换。

极狐GitLab 一体化DevOps平台 专为中国用户研发,免费试用60天专业版高级功能
售前咨询
联系电话
在线支持
预约演示