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