博客 / 詳情

返回

玩轉 ChatGPT+極狐GitLab|分分鐘絲滑遷移Jenkins到極狐GitLab CI

💃 自從 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 的切換。

user avatar macrozheng 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.