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

基于Node.js的开源Markdown知识库平台Raneto详解与实战部署 Raneto 没有花哨的功能堆砌,也没有复杂的权限体系。它的美,在于克制,在于专注。它告诉我们:有时候,最好的架构不是最复杂的,而是最合适的。用 Node.js 的异步能力处理高并发,用 Markdown 的简洁语法降低写作门槛,用静态文件的天然优势简化部署运维,用客户端搜索保障极致响应速度。这一整套设计,构成了一个自洽的技术闭环。它不像某些“企业级”系统那样沉重,反而像一把瑞士军刀 —— 小巧、锋利、随时可用。 阅读详情

介绍

目的

通过 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
Vue.js全栈实战:硅谷外卖系统项目开发 通过本次实战,你应该已经掌握了:如何利用 Vue CLI 快速搭建专业级项目如何设计合理的页面结构与组件体系如何使用 Vuex 管理复杂状态流如何封装 Axios 实现稳定可靠的通信层如何配合 Express + MongoDB 构建后端服务这些能力组合在一起,构成了现代全栈开发的核心竞争力 💪。更重要的是,我们要学会一种思维方式:把重复劳动模板化,把复杂流程标准化,把潜在风险前置化。这才是工程师真正的价值所在。 阅读详情

相关推荐

一次渗透测试引发的Json格式下CSRF攻击的探索

一次渗透测试引发的Json格式下CSRF攻击的探索

weixin_52501704的博客 1048

持续集成基于腾讯云coding

持续集成基于腾讯云coding 在项目开发中,每次修改完代码后,都需要我们手动打包部署到服务器中。 这个过程是重复的机械的,我们可以使用一定的方式来简化这个过程,让它自动化执行。 常见的方法有Jenkins配合对应的代码仓库,在代码提交后自动打包发布到服务器上。 这里我使用的代码仓库是coding,以部署我的个人网站为例 环境 项目:vuepress(node环境) 部署:nginx服务器 流程 在conding打包生成结果文件 推送到服务器上nginx对应的文件夹中 过程 创建全功能DevOps项

孙霸天的专栏 3916

电路仿真软件PSIM简介

PSIM的基本使用操作...

qq_55203246的博客 7175

coding持续集成构建环境自定义node版本

coding持续集成构建环境自定义node版本

Java&Develop的博客 893

施耐德 Modicon M580 ePAC 项目实战:从硬件选型到 Control Expert V15 组态

本文详细解析了施耐德 Modicon M580 ePAC 在工业自动化项目中的实战应用,从硬件选型到 Control Expert V15 组态的全流程。重点介绍了水处理站控制系统的硬件配置、网络架构设计、软件安装授权及程序框架开发,帮助工程师高效实施中大型控制系统项目。

weixin_33701617的博客 326

别再到处找模板了!我用这套软著申请材料(含用户手册+源代码模板)两个月搞定

本文提供了一套高效的软著申请材料模板,包括用户手册和源代码模板,帮助开发者两个月内快速完成申请。通过实战指南和常见误区解析,详细介绍了材料准备的规范与技巧,确保格式合规性,大幅提升审核通过率。

weixin_29268637的博客 548

coding 自动集成指定node版本

coding 前端持续集成

weixin_49230250的博客 769

CircuitBreaker Resilience4J 介绍

在分布式环境中,我们的应用可能会面临着各种各样的可恢复的异常(比如超时,网络环境异常),此时我们可以利用不断重试的方式来从异常中恢复(Retry Pattern),使整个集群正常运行。然而,也有一些异常比较顽固,突然发生,无法预测,而且很难恢复,并且还会导致级联失败(举个例子,假设一个服务集群的负载非常高,如果这时候集群的一部分挂掉了,还占了很大一部分资源,整个集群都有可能遭殃)。如果我们这时还是不断进行重试的话,结果大多都是失败的。

zzhongcy的专栏 3539

coding构建镜像,继承自建基础镜像报错 unauthorized: Invalid credential. 请确认输入了正确的用户名和密码。

代码】coding构建镜像,继承自建基础镜像报错unauthorizedInvalidcredential.请确认输入了正确的用户名和密码。

qq_15821487的博客 1113

Aduino 通过I2C接口读取MPU6050模块数据

Aduino ESP9266通过I2C接口读取MPU6050模块数据 MPU6050模块 原理图 所需库:Adafruit_MPU6050 Adafruit_BusIO Adafruit Unified Sensor 接线示意图 ESP8266---MPU6050 VCC -- 3.3v GND -- GND D2 -- SDA D1 -- SCL 示例程序代码 #include <Adafruit_MPU6050.h> #include <Adafruit

perseverance51博客 621

【K8S系列】在 Kubernetes 中使用 Prometheus 进行监控的详细指南

Prometheus 是一个开源的监控和报警工具,广泛用于 Kubernetes 环境中。本文将深入探讨如何通过 Kubernetes 中的注解配置 Prometheus 的抓取设置,以高效监控服务,并确保系统的可靠性和可维护性。

颜淡慕潇 2万+

coding持续集成流程搭建(自动部署)

最近发现coding平台是真的舒服,项目协同、仓库、制品、测试、文档、构建部署应有尽有。尽管年底公司实行10106,上周还是抽空把coding上的自动化部署流程搭建起来了。 此次项目为java项目,在Coding上实现了Jenkins+Docker的持续集成流程。最终达到的效果是:当有代码合并或者提交到master分支后,出发项目构建并部署到指定的服务器上。效果图如下,当然这里还需要加上测试模块...

laichj的博客 7841

挖矿病毒解决实例(隐藏进程,文章较好)(入侵)

CPU起飞了 最近有朋友在群里反馈,自己服务器的CPU一直处于高占用状态,但用top、ps等命令却一直找不到是哪个进程在占用,怀疑中了挖矿病毒,急的团团转。 根据经验,我赶紧让他看一下当前服务器的网络连接,看看有没有可疑连接,果然发现了有点东西: 上Shodan查一下这IP地址: 反向查找,发现有诸多域名曾经解析到这个IP地址: 这是一个位于德国的IP地址,开放了4444,5555,7777等数个特殊的服务端口: 其中这位朋友服务器上发现的连接到的是7777端口,

墨痕诉清风的博客 1万+

QQ音乐API开发指南:5分钟搭建你的专属音乐应用

想要在自己的应用中集成QQ音乐功能却不知从何下手?QQMusicApi为你提供了一套完整的Node.js解决方案,让你能够轻松调用QQ音乐的各种接口,从歌曲搜索到播放链接获取,一站式满足你的音乐应用开发需求。 ## 🎵 什么是QQMusicApi? QQMusicApi是一个基于Express + Axios构建的QQ音乐接口Node.js版本,它封装了QQ音乐的核心API功能,让开发者能够

gitblog_00114的博客 402

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Node.js新手安装指南:从环境配置到实战验证

在现代Web开发中,环境配置是项目成功的基础。Node.js作为JavaScript运行时环境,其安装与配置直接影响开发效率和项目稳定性。理解环境变量、包管理和版本控制等核心概念,是确保开发环境健康运行的关键。通过合理配置,开发者可以避免常见的权限问题和版本冲突,从而专注于业务逻辑实现。本文聚焦于Node.js的安装实践,详细介绍了从官方安装包到NVM版本管理工具的不同方案,并提供了环境验证与常见问题排查的完整流程,帮助开发者快速搭建稳定可靠的开发环境。

weixin_30768881的博客 306

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

春联生成模型中文版在Node.js环境下的API服务搭建指南

本文介绍了如何在星图GPU平台上自动化部署“春联生成模型-中文-base”镜像,并快速搭建一个基于Node.js的API服务。通过该服务,用户只需输入上联或主题词,即可自动生成富有年味的中文春联,轻松为应用或网站增添节日氛围。

weixin_26805451的博客 99

一分钟带你学会大文件上传

在我们日常开发中,上传技术是很常见的,但是当我们需要进行大文件上传的时候,可能会遇到一些问题:1.上传时间比较久2.中间一旦出错就需要重新上传3.一般服务器端会对文件的大小进行限制这几个问题会导致上传的时候用户的体验不好,针对这些问题,我们可以通过分片上传。

maple_szf的博客 1806

快马AI助力:一分钟生成你的首个Node.js服务器原型

最近在尝试搭建一个简单的Node.js服务器原型时,发现了一个特别高效的开发方式,想和大家分享一下。作为一个后端开发新手,我经常需要快速验证一些服务器功能的想法,但每次从零开始搭建环境、写基础代码都很耗时。比如我们想测试一个API接口是否可行,或者前后端数据交互是否顺畅,如果花大量时间在基础搭建上就太不划算了。对于快速验证来说,这个功能简直太方便了。这种集成了AI生成、代码编辑和一键部署的全流程工具,让服务器开发变得前所未有的简单。生成的代码结构清晰,包含了必要的错误处理和中间件配置,比我自己写的更规范。

StarfallRaven13的博客 36

M2LOrder模型Node.js环境配置与项目脚手架生成指南

本文介绍了如何在星图GPU平台上自动化部署🌸 M2LOrder: SAKURA EMOTION MAGIC镜像,以快速搭建Node.js开发环境并生成项目脚手架。该镜像能理解自然语言指令,自动生成集成Express服务器、WebSocket通信及AI模型调用模块的现代化项目结构,帮助开发者专注于核心业务逻辑,大幅提升AI应用开发效率。

weixin_33506815的博客 307

socket多人聊天室c语言,一分钟实现网页多人聊天室【Socket.IO】

socket.io是个基于node.js的快平台实时通讯框架。只用不到10行代码,就可以搭建一个简单的多人实时聊天室。先来看看运行后的效果:socket.io多人聊天室只要简单几步,就可以实现。在这里我们使用本机作为服务端。安装node.js由于socket.io使用node.js为服务端,所以必须安装node.jsNode.js 是一个基于 Chrome V8 引擎的 JavaScript 运行...

weixin_39945792的博客 645

Node.js环境搭建终极指南:从版本管理到工程实践

在现代Web开发中,Node.js作为JavaScript运行时环境,是构建服务器端应用和前端工具链的核心基础。其核心原理在于通过事件驱动、非阻塞I/O模型实现高性能并发处理,这使得它成为构建实时应用和微服务架构的重要技术选择。从技术价值角度看,Node.js不仅统一了前后端的开发语言,还通过npm生态提供了海量可复用的模块,极大提升了开发效率。在实际应用场景中,无论是开发RESTful API、实时聊天应用,还是构建前端构建工具,Node.js都扮演着关键角色。然而,许多开发者在环境配置阶段就遇到版本冲突

weixin_33858485的博客 434

快马ai助力:一分钟生成mysql博客系统后端原型

我测试时还发现个细节:当我说"需要文章状态管理"时,系统不仅加了status字段,还自动枚举了草稿/已发布/已删除三种状态,这种智能理解确实省心。作为一个经常需要验证产品原型的开发者,我发现用传统方式从零开始写数据库设计和API接口实在太耗时了。明确指定MySQL+Node.js后,生成的代码完全符合技术规范,连ES6语法和async/await都正确使用。只需要用自然语言说明"需要博客系统的用户管理、文章发布和评论功能",AI就能理解核心业务场景。的AI辅助功能,整个过程变得特别高效。

YellowSun24的博客 28

Node.js安装及环境配置全攻略:为部署丹青幻境Web服务做准备

本文介绍了如何在星图GPU平台上自动化部署🎨 万象熔炉 · 丹青幻境 (The Universal Crucible)镜像,为构建AI绘画Web服务奠定基础。通过配置Node.js开发环境,用户可以快速搭建后端服务,从而便捷地调用该镜像的AI图片生成能力,实现个性化的艺术创作应用。

weixin_35459464的博客 57

星露谷物语农场规划器上手全攻略:从零布局到存档导入的完整实践

如果你玩过《星露谷物语》,一定经历过这种时刻:第一年冬天发现铱洒水器漏浇了两排作物,想扩建谷仓却发现温室挡了路,最后只能忍痛推掉鸡舍、重排上百株作物,白白搭进去两个星期的收成。这种"返工税"几乎每个玩家都交过,而 **Stardew Valley 农场规划器(stardewplanner)** 的价值,就是把所有试错成本压在动手之前——在浏览器里先把整座农场"画"出来,确认无误再照图施工,游戏里那

gitblog_00935的博客 356
上一篇: 一分钟开始持续集成之旅系列之:Python + Flask 应用
下一篇: 真香!CODING DevOps “极速构建计划”,再也不用担心构建慢了!
腾云 CODING
博客等级 码龄8年 203粉丝 260原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值