zoukankan      html  css  js  c++  java
  • 一分钟开始持续集成之旅系列之: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 镜像推送,修改构建参数。

    创建 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
    
  • 相关阅读:
    Oracle基础知识整理
    linux下yum安装redis以及使用
    mybatis 学习四 源码分析 mybatis如何执行的一条sql
    mybatis 学习三 mapper xml 配置信息
    mybatis 学习二 conf xml 配置信息
    mybatis 学习一 总体概述
    oracle sql 语句 示例
    jdbc 新认识
    eclipse tomcat 无法加载导入的web项目,There are no resources that can be added or removed from the server. .
    一些常用算法(持续更新)
  • 原文地址:https://www.cnblogs.com/codingdevops/p/12800473.html
Copyright © 2011-2022 走看看