介紹
目的
通過 Coding CI 幫助我們來完成 Node + Typescript + Express 實現一個命令行版本的 “每日一句” 的小工具。希望通過這個小案例,幫助大家快速掌握 Coding CI + Docker 。
源碼地址
https://coding-public.coding.net/p/coding-ci-express/d/coding-ci-express/git/
效果展示
項目簡介
使用技術
- Node v12.16.1 + Typescript + Express
- Docker
目錄說明
.
├── .dockerignore
├── .eslintrc.js
├── .gitignore
├── Dockerfile
├── Jenkinsfile
├── package-lock.json
├── package.json
├── readme.md
├── src
│ ├── day.ts
│ └── index.ts
└── tsconfig.json
代碼運行
源碼運行
git clone https://e.coding.net/coding-public/coding-ci-express/coding-ci-express.git
cd coding-ci-express.git
npm install
npm run dev
curl localhost:3000
Docker 運行
docker run -d -p 3000:3000 asdasdasd
構建過程
創建項目
將 https://e.coding.net/coding-public/coding-ci-express/coding-ci-express.git 的代碼 Push 到新創建倉庫中。
創建構建計劃
這裏我們使用靜態的 Jenkinsfile 和 Coding CI 提供的 Jenkinsfile 模板,幫助我們快速的編寫 Jenkinsfile。當然也可以使用代碼庫中的 Jenkinsfile ,如果我們對於 Jenkinsfile 的編寫不是很熟悉的話,使用模板可以幫助我們快速開始。
選擇 CODING Docker 鏡像推送,修改構建參數。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-71qpor4G-1588127374419)(https://img2020.cnblogs.com/blog/1594319/202004/1594319-20200429102517598-732889178.png)]
創建 Docker 製品庫
準備 Dockerfile
準備 Jenkinsfile
Coding CI 支持代碼庫內部的 Jenkinsfile 和靜態的 Jenkinsfile,Coding CI 的構建中爲我們準備好了很多環境變量,幫助我們編寫 Jenkinsfile 。
pipeline {
agent any
stages {
stage('檢出') {
steps {
checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
}
}
stage('打包鏡像') {
steps {
sh "docker build -t ${env.DOCKER_IMAGE_NAME}:${env.CI_BUILD_NUMBER} ."
}
}
stage('推送到製品庫') {
steps {
script {
docker.withRegistry("https://${env.CODING_DOCKER_REG_HOST}", "${env.CODING_ARTIFACTS_CREDENTIALS_ID}") {
docker.image("${env.DOCKER_IMAGE_NAME}:${env.CI_BUILD_NUMBER}").push()
}
}
}
}
}
environment {
CODING_DOCKER_REG_HOST = "${env.CCI_CURRENT_TEAM}-docker.pkg.${env.CCI_CURRENT_DOMAIN}"
DOCKER_IMAGE_NAME = "${env.PROJECT_NAME.toLowerCase()}/${env.DOCKER_REPO_NAME}/hello-world"
}
}
彩蛋
我們可以將該應用和終端結合使用,這樣就可以在每次啓動終端的時候就可以看到 “每日一句” 了。
echo "curl localhost:3000" >> ~/.zshrc
or
echo "curl localhost:3000" >> ~/.bashrc