首页 > 其他分享 >关于coding平台上如何使用持续集成部署前端项目

关于coding平台上如何使用持续集成部署前端项目

时间:2024-11-21 09:59:34浏览次数:1  
标签:集成 npm 令牌 git 项目 前端 coding test

简单介绍,coding平台是腾讯云合作提供的一个在线代码仓库管理平台,跟GitHub和Gitlab类似,然后上面提供了在线部署CI/CD流程,也就是自动化部署,在这平台功能上称之为持续集成。

下面直接进入如何部署的流程:这里以react项目为例,但其实Vue或者react都好,部署无非就是命令行和依赖不同罢了(在经过九九八十一报错后以及某位大佬提点,终于成功)

1. 进入coding首页,点击左侧持续集成

 2. 进入后右上角点击创建构建计划

 3. 选择对应创建的计划模板(一般选择前端-持续集成,自由模板比较简单,或者根据需要选择其他框架配置cos)

 4. 选择模板后,设定计划和选择对应要部署的仓库(这里只展示已经存在coding的仓库,如果是其他的对应选择其他类型即可)下面两个勾选,把第二个创建后执行关掉,默认前往配置详情

 5. 在配置详情-基础信息中用静态配置的jenkisfile,也使用默认的构建机

 6. 点击流程配置,实际上就是jenkinsfile的配置。没有特殊需求,可以先把校验分支删了,不然要做环境变量的分支配置。

 7. 检出代码则默认保留,不用动

 8. 把原本的编译打包和代码扫描分成两步骤。拖动即可改变顺序(虽然代码扫描也可以不用留着)重点在这,编译打包步骤,选择后右侧要自定义构建环境,把镜像选择对应部署项目的node环境,切记加上参数: --net=host -v /root/.npm:/root/.npm

 9. 点击保存后,往下点击执行Shell脚本,右侧填写对应项目编译过程的命令行,如下载npm包和执行build操作,根据各自项目需要填写,就跟在本地跑node编译打包一样。如果有报错,先把中文注释去掉,理论上是不影响。符号#代表注释。

 贴个代码,按需取

npm cache clean --force // 删除缓存
rm -rf package-lock.json node_modules  // 删除json和node文件夹
npm config set registry https://registry.npmmirror.com  // 设置淘宝镜像
 
npm install --legacy-peer-deps --loglevel verbose // 忽略 peer dependencies 警告和输出日志
npm run build // 打包

10. 在npm期间,会出现某个依赖包下载时间超久或者直接404是正常现象,只能不断重启构建直到下载成功,记得重启时要删除对应的缓存和json、node。然后下载成功后就可以注释对应的删除命令行。

11. 如果说项目内存在私有包的情况,就需要在项目文件《.npmrc》中配置通行证等信息,然后提交到项目仓库上,具体要看对应私有仓库的地址和账号密码做权限配置,以下仅为参考:

audit = false
format-package-lock = true
fund = false
strict-peer-dependencies=false
package-manager-strict=false
always-auth=true
strict-ssl = false


registry=https://test.com/npm-proxy/ #私有包仓库地址
//test.com/npm-proxy/:username=用户名称(建议进行md5或者base64加密)
//test.com/npm-proxy/:_password=密码(建议进行md5或者base64加密)

#部分私有包的前缀指定@test,可以对应更改为后面的私有库地址下载依赖
@test:registry=https://test.com/npm-proxy-two/
//test.com/npm-proxy-two/:username=用户名称(建议进行md5或者base64加密)
//test.com/npm-proxy-two/:_password=密码(建议进行md5或者base64加密)

12. 继续配置,点击触发规则,按自己需要进行规则配置。这里可视化操作很简单。主要注意就是代码更新和合并的不同,以及手动触发选择的分支。会根据选择分支进行编译。

 13. 进入变量与缓存配置,根据项目需要配置环境变量,有一些前端项目需要用到环境变量控制,则对应要配置字段值。要注意的是缓存目录,记得勾选项目目录和npm

 14. 以上就是基本配置,接下来只需要在对应的仓库提交代码,等待触发自动构建,或者点击手动构建,看日志输出结果就行。有失败是正常的,大多是依赖搞的鬼,一直手动构建到成功一次为止,后面基本上就不会失败了。依赖已经齐全,除非新增依赖包。

 

 15. 打包出来的dist包,如果说发布测试或者线上地址指向就是这个项目的dist位置,那到这里就圆满结束,完成提交则自动化构建更新。

那么如果说发布测试或者线上地址是在其他地方,如另一个Git项目,就需要继续往下走步骤。这里只演示把dist包复制迁移到另一个Git项目上提交更新。

16. 新增一个步骤,在build构建后执行

 17 . 分为三段shell脚本执行,第一段首先删除原有可能存在的目标项目,比如要把dist包迁移往test项目,则要删除test文件夹,给后面的git clone让路,不然会提示已经存在非空的文件夹。

rm -rf test

18. 第二段shell脚本,执行git clone 目标项目地址,如果说是其他Git平台,不是coding平台下的,要现在环境变量设置GIT_PASSWORD和GIT_USERNAME,作为clone项目时候的凭证依据,也可以用ssh公钥,具体请百度或者AI,这里只演示同为coding的目标项目。

先设置coding目标项目的项目令牌USERNAME和PASSWORD两个环境变量,项目令牌获取步骤如下:(需要有对应项目开发者权限,找管理开)

在 CODING DevOps 中,项目令牌用于自动化脚本、CI/CD 流水线等场景中进行身份验证。获取项目令牌的步骤如下:

进入项目设置:
登录 CODING 账号,进入你想要生成项目令牌的项目。
在项目的首页,点击左侧菜单栏的“项目设置”。
选择开发者选项:
在“项目设置”页面中,找到并点击“开发者选项”。
生成项目令牌:
在“开发者选项”页面中,找到“项目令牌”部分。
点击“新建令牌”,然后按照页面上的指示填写必要的信息,比如令牌名称、过期时间和访问权限等。
设置好之后,点击“确定”或“创建”按钮来生成项目令牌。
保存令牌:
生成令牌后,系统会显示令牌的具体值。请务必保存好这个值,因为这是唯一一次能看到完整令牌的机会。一旦关闭或离开页面,就无法再次查看完整的令牌值了。
使用令牌:
使用生成的项目令牌时,通常是以 Basic Auth 的形式使用,即在 HTTP 请求头中加入 Authorization: Basic <Base64(用户名:令牌)>,这里的 <Base64(用户名:令牌)> 是将用户名和令牌拼接成字符串后经过 Base64 编码的结果。

  在设置环境变量建议为加密状态。防止泄露。

 19. 执行第二段shell脚本如下:CSMBP_BRANCH代表的是分支,这里只clone近5条,是为了快速部署,反正每次部署成功提交后,后面还会把这里的文件夹删了

git clone --depth 5 -b ${CSMBP_BRANCH} https://${USERNAME}:${PASSWORD}@除域名外的项目地址.git

20. 目标项目成功clone到本地后,开始执行第三段shell脚本,把原本编译项目的dist包放到对应目标项目的路径中,并git add进行提交,可参考脚本如下:

buildFolder="testBuild"
webFolder="web/test"

if [ "$webFolder" != "" ]; then

if ! [ -d "./test/$webFolder" ]; then
mkdir -p ./test/$webFolder
fi
cd ./test
git pull --rebase
cd ..
rm -rf ./test/$webFolder/*
ls
cd ./dist
zip -r $buildFolder.zip ./$buildFolder
cd ..
mv ./dist/$buildFolder/** ./test/$webFolder
cd ./test/$webFolder
git add .
git commit -m "$(echo "ci("coding"):多产品打包\n分支:$BRANCH_NAME\n打包项目:$PROJECT\n触发人:$TRIGGER_USER_NAME\n构建记录:https://codingcorp.coding.csair.com/p/map-b_touch/ci/job/${JOB_ID}/build/${CI_BUILD_NUMBER}/pipeline")"
git push
else
echo "webFolder 为空"
exit 1
fi

 大概意思解说:buildFolder代表的是打包出来的dist中存在要迁移的包名,要更改成名为testBuild的文件夹名,webFolder则是要放在test目标项目下的路径位置,后面基本就是做判断是否存在值,然后进行testBuild文件压缩,再用mv脚本命令进行迁移路径过去,最后进行git提交,然后输出commit记录。完成提交到对应的线上项目Git。

  以上就是coding进行自动化构建的过程,普通项目直接run build后进行dist包迁移就行,如果说build多个类型,比如npm run build dev环境 或者 npm run build AC(项目简称),则可以考虑根据commit提交信息进行正则区分环境,再对应区分环境和项目走后续的流程。这里不多描述,具体可以看我的另一个文章《coding根据Git提交信息,进行全自动化构建不同环境和项目进行部署的脚本Demo》,根据提交信息全自动化进行编译打包不同环境和项目的。

  此篇完结。

标签:集成,npm,令牌,git,项目,前端,coding,test
From: https://www.cnblogs.com/xiaozhu007/p/18528295

相关文章

  • Spring Boot 集成 Flyway,数据库也能做版本控制,太牛逼了!
     一、Flyway是什么?  我们都知道,Git/SVN是代码界的版本控制工具,那么,Flyway就是一款数据库界的版本控制工具,它可以记录数据库的变化记录。 可能很多公司都是通过人工去维护、同步数据库脚本,但经常会遇到疏忽而遗漏的情况,举个简单的例子: 我们在开发环境对某个表新......
  • Open-RAG:将开源LLM模型集成为高效RAG模型 | ENMLP'24
    本文是对公开论文的核心提炼,旨在进行学术交流。如有任何侵权问题,请及时联系号主以便删除。来源:晓飞的算法工程笔记公众号,转载请注明出处论文:Open-RAG:EnhancedRetrieval-AugmentedReasoningwithOpen-SourceLargeLanguageModels论文地址:https://arxiv.org/abs/24......
  • 医院/数据中心机房动力环境监控系统及IBMS集成系统解决方案
    机房动力环境监控系统                          系统概述机房广泛应用于政府、银行、证券、教育、医疗、电力、学校等行业,各类型的业务数据直接由机房提供支撑,机房断电、系统故障、人为操作不当都有可能造成各种业务中断或数据丢失,继而影响企业......
  • 前端面试经验之手写节流
    思路:    第一步:直接封装方法。接收2个参数(fn:执行函数,time:设置默认执行时间)    第二步:声明定时器变量    第三步:return函数,函数内部里假设有定时器就return。没定时器就给定时器赋值延迟定时器,时间为 time    第四步:延迟定时器函数里......
  • 【小游戏】保姆级超有意思的贪吃蛇前端项目,小时候的回忆——你确定不来看看??
    文章目录整体架构流程技术细节整体架构流程HTML5+CSS3+JS技术细节一.打开vscode,新建文件名称如下,当然你的css也可以写在html里代码如下<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content=&qu......
  • 前端工程化,搭建项目(eslint + preitter + husky + lint-staged + commitlint + com...)
    基本介绍本文主要描述手动搭建vite项目,并且通过eslint、preitter、husky、lint-staged、commitlint、commitizen来进行项目约束规范。创建项目首先创建项目文件夹,并初始化package.json#初始化项目,添加package.jsonnpminit#手动安装vitenpmivite-D并在根目......
  • 前端:HTML (学习笔记)【2】
    目录三,form表单1,表单(1)定义:(2)action属性(3)method属性2,表单元素(1)文本框(2)密码框(3)单选按钮checked(4)多选按钮(5)普通按钮(6)特殊按钮(7)下拉列表(8)文件(9)隐藏域(10)多行文本框(11)时间控件3,HTML5新增type类型(1)email:HTML5的类型可以增加校验(2)url:用于网址输入。(3)color......
  • 前端:JavaScript (学习笔记)【1】
    目录​​​​​​​一,介绍JavaScript二,JavaScript的特点1,脚本语言 2,基于对象的语言 3,事件驱动4,简单性5,安全性6,跨平台性7,JS和java的区别(1)公司不同,前身不同(2)基于对象和面向对象(3)变量类型强弱不同(4)运行的位置不同8,HTML和CSS和JS这之间的关系三,JavaScript的引入......
  • 【前端知识】vue路由组件vue router详细介绍
    什么是vuerouter概述VueRouter的基本工作原理代码样例及注释1.定义组件2.定义路由3.创建Vue实例并挂载路由4.在模板中使用`<router-view>`注释说明特性与关注点路由模式一、Hash模式二、History模式三、Abstract模式四、选择路由模式的建议路由Hash模式示例......
  • Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
    Redisson是一个高性能的JavaRedis客户端,提供了丰富的分布式工具集,如分布式锁、Map、Queue等,帮助开发者简化Redis的操作。在集成Redisson到项目时,开发者通常有两种选择:使用Redisson原始依赖。使用RedissonSpringBootStarter。这篇文章将详细介绍这两种集成......