自从 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  - deploybuild:  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.0test:  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 的切换。