一分钟开始持续集成之旅系列之:Node + Express 应用

一分钟开始持续集成之旅系列之:Node + Express 应用

介绍

目的

通过 Coding CI 帮助我们来完成 Node + Typescript + Express 实现一个命令行版本的 “每日一句” 的小工具。希望通过这个小案例,帮助大家快速掌握 Coding CI + Docker 。

源码地址

coding-public.coding.net

效果展示

项目简介

使用技术

  • Node v12.16.1 + Typescript + Express
  • Docker

目录说明

.
├── .dockerignore
├── .eslintrc.js
├── .gitignore
├── Dockerfile
├── Jenkinsfile
├── package-lock.json
├── package.json
├── Learning tracker
├── src
│   ├── day.ts
│   └── index.ts
└── tsconfig.json

代码运行

源码运行

git clone CODING | 一站式软件研发管理平台
cd coding-ci-express.git
npm install
npm run dev

curl localhost:3000

Docker 运行

docker run -d -p 3000:3000 asdasdasd 

构建过程

创建项目

e.coding.net/coding-pub 的代码 Push 到新创建仓库中。

创建构建计划

这里我们使用静态的 Jenkinsfile 和 Coding CI 提供的 Jenkinsfile 模板,帮助我们快速的编写 Jenkinsfile。当然也可以使用代码库中的 Jenkinsfile ,如果我们对于 Jenkinsfile 的编写不是很熟悉的话,使用模板可以帮助我们快速开始。

选择 CODING Docker 镜像推送,修改构建参数。

创建 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

发布于 04-29

文章被以下专栏收录