一分鐘開始持續集成之旅系列之:Node + Express 應用

介紹

目的

通過 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章