当前位置: 首页 > news >正文

张店易宝网站建设旅游网站怎么设计

张店易宝网站建设,旅游网站怎么设计,郁金香导航 汕头大学网址大全,免费h5页面制作软件DevOps 提到 Jenkins#xff0c;想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合#xff0c;是一种方法论#xff0c;并不特指某种技术或者工具。DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。…DevOps 提到 Jenkins想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合是一种方法论并不特指某种技术或者工具。DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。通过自动化的软件交付使软件的构建测试发布更加的快捷、稳定、可靠。 CI CI 的英文名称是Continuous Integration中文翻译为持续集成。 试想软件在开发过程中需要不断的提交合并进行单元测试和发布测试版本等等这一过程是痛苦的。持续集成CI是在源代码变更后自动检测、拉取、构建的过程。 CD  CD 对应两个概念 持续交付Continuous Delivery 持续部署Continuous Deployment 持续交付 提交交付顾名思义是要拿出点东西的。在 CI 的自动化流程阶段后运维团队可以快速、轻松地将应用部署到生产环境中或发布给最终使用的用户。 从前端的角度考虑在某些情况下肯定是不能直接通过自动化的方式将最终的 build 结果直接扔到生产机的。持续交互就是可持续性交付供生产使用的的最终 build。最后通过运维或者后端小伙伴进行部署。 持续部署  作为持续交付的延伸持续部署可以自动将应用发布到生产环境。 Jenkins 安装  示例服务器为 阿里云 CentOS 服务器。安全组中增加 8080 端口 Jenkins 默认占用 Jenkins 安装大体分两种方式一种使用 Docker 另一种则是直接安装示例选择后者。不管使用哪种方式安装最终使用层面都是一样的。 Linux 安装[1] Docker 安装[2] # 下载 Jenkins 资源sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo# 获取并导入信任 的包制作者的秘钥sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key# 升级 yum 源中的所有包sudo yum upgrade# Jenkins 依赖于 java 所以需要安装 JDKsudo yum install java-11-openjdk# 安装 Jenkinssudo yum install jenkins复制代码 如果最终 Jenkins 没有找到包而导致没有安装成功检查第一步和第二部执行结果并重新执行。 可以使用 systemctl 命令管理 Jenkins 服务 systemctl[3] # 启动 Jenkins 服务systemctl start jenkins# 重启 Jenkins 服务systemctl restart jenkins# 停止 Jenkins 服务systemctl stop jenkins# 查看 Jenkins 服务状态systemctl status jenkins复制代码 启动服务后访问服务器地址 8080 端口Jenkins 默认为 8080 端口。 Jenkins 使用及 Freestyle 任务构建 首次进入使用 cat /var/lib/jenkins/secrets/initialAdminPassword 查看密码。 随后进入插件安装页面暂时安装系统推荐插件即可。 然后创建用户 构建目标拉取 github 代码 点击 新建 Item 创建一个 Freestyle Project 在 源码管理 处选择 git 输入仓库地址点击添加。 输入 github 账号和密码这里的密码有时候可能会出现问题可以使用 token github 如何生成 token [4] 配置只是一方面同时服务器也要具备 git 环境。 yum install git 构建目标部署到本机 部署前端项目肯定是离不开 nginx 的。 yum install nginx。 安装完成后同样可以使用 systemctl 命令管理 nginx 服务。 nginx 具体配置这里就不说了。本示例项目中静态文件托管目录为 /usr/share/nginx/html/dist。 接着来到 Jenkins 这里。想要部署前端项目还需要依赖一个 Node 环境需要在 Manage Jenkins - Manage Plugins 在可选插件中搜索 nodejs 选择对应插件进行安装安装完成后需要重启才会生效。 然后到 系统管理 - 全局工具配置 中配置 Node (吐槽没有安装任何插件时系统管理以及其子页面全是英文安装完插件后又变成了中文。这国际化不知道是系统原因还是它的原因 )。 随后去修改刚才创建的任务。在 构建环境 中会多出一个选项 Provide Node npm bin/ folder to PATH 勾选即可。然后在 构建 中选择 增加构建步骤 - 执行 shell 输入打包发布相关的命令。Jenkins 会逐行执行。 npm install yarn -gyarn installyarn build# 打包 build 后的文件tar -zcvf dist.tar.gz dist/# 删除 build 后的文件rm -rf dist/# 移动 build 后的压缩包到 nginx 托管目录下。sudo mv dist.tar.gz /usr/share/nginx/html# 进入托管目录下cd /usr/share/nginx/html# 解压sudo tar -zxcf dist.tar.gz# 删除压缩包sudo rm -rf dist.tar.gz复制代码 由于项目构建时是在 Jenkins 的工作目录下执行脚本会出现权限问题。导致即使使用了 sudo 还会出现类似以下错误。 We trust you have received the usual lecture from the local SystemAdministrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.复制代码 解决方案在 /etc/sudoers 文件中增加 jenkins ALL(ALL) NOPASSWD:ALL 表示在执行 sudo 时不需要输入密码。 如果不使用 sudo 则会出现以下错误。 xxxxxxx: Permission denied 解决方案修改 /lib/systemed/system/jenkins.service 文件。将 Userjenkins 修改为 Userroot表示给 Jenkins 赋权限。修改配置文件后记得重启服务。 构建的过程中还可能出现以下错误 ERROR: Error fetching remote repo origin复制代码 解决方案由于需要构建的代码在 github 上面这种错误表示拉取代码失败了重试几次就可以了。 工作目录 上面提到一个很重要的概念就是 工作目录 在上面的 shell 默认就是在这里执行的。工作目录是由两部分组成。 /var/lib/jenkins/workspace/ 类似于前缀吧。 web-deploy 这个其实是上面构建任务的名字。 总结Jenkins 的执行目录是 /var/lib/jenkins/workspace/web-deploy。也就是说输入的每一条命令都是在这里面执行的。搞清楚定位能避免好多问题特别是前端的部署就是打包移动解压很容易搞错路径。 构建目标侦听 git 提交到指定分支进行构建 来到 Jenkins 中选择 系统管理 - 系统配置 找到 Jenkins URL 将其复制。 随后在尾部添加 github-webhook/ 尾部斜杠一定不要丢。整体结构大致为 http://192.168.0.1:8080/github-webhook/ 登录 github 需要集成的项目中添加 webhook。在 Payload URL 中将上述内容填入。 然后修改 Jenkins 任务配置 构建触发器中选择 GitHub hook trigger for GITScm polling 由于在上面的源码管理中已经指定了main分支此时如果这个分支的代码有改动就会触发自动构建。 构建目标部署到目标主机 在真实的开发场景中Jenkins 几乎不会和前端资源放到一个服务器。大多数情况下 Jenkins 所处的服务器环境就是一个工具用的服务器放置了一些公司中常用的工具。因此构建到指定的服务器也至关重要。 1系统管理 - 插件管理 搜索 Publish Over SSH 进行安装。 2然后在系统管理 - 系统配置中找到 Publish over SSH 点击新增再点击高级然后选中 Use password authentication, or use a different key 完成后可点击右下角 Test Confirguration 进行测试。 3继续修改构建任务。先修改原有的构建脚本。因为要发布到远程所以原有的发布命令要进行去除。 npm install yarn -gyarn installyarn build# 只打包然后删除文件夹。tar -zcvf dist.tar.gz dist/rm -rf dist/复制代码 4选择构建后操作 - Send build artifacts over SSH Rransfer Set Source files要上传到目标服务器的文件。它是一个相对路径相对于 Jenkins 的工作目录 由于上面的 shell 执行之后在工作目录中只有一个压缩包so 直接写一个文件名即可。 Remove prefix去前缀。假设此时打包文件在 /var/lib/jenkins/workspace/web-deploy/assets/dist.tar.gz那么 Rransfer Set Source files 则应该为 assets/dist.tar.gz此时 Remove prefix 配置为 assets/ 则可以去除这个前缀否则会在目标服务中创建 assets 。 Remote directory远程的静态资源托管目录。由于配置服务器默认为 /所以 usr/share/nginx/html/ 不用以 / 开头。 Exec command远程机执行 shell由于配置服务器默认为 / 所以 工作目录也是以 / 开始。 执行成功后查看执行日志会有类似以下结果 SSH: Connecting from host [iZuf6dwyzch3wm3imzxgqfZ]SSH: Connecting with configuration [aliyun-dev] ...SSH: EXEC: completed after 202 msSSH: Disconnecting configuration [aliyun-dev] ...# 如果 Transferred 0 file 则需要查看配置的路径是否正确。表示文件并没有被移动到远程主机中。SSH: Transferred 1 file(s)Finished: SUCCESS复制代码 构建目标钉钉机器人通知 1系统管理 - 插件管理 搜索 DingTalk 进行安装。文档[5] 2钉钉群创建机器人。钉钉群 - 只能群助手 - 添加机器人 - 自定义 3定义机器人名字和关键字创建完成后先将 webhook 中的内容复制。  4Jenkins 中 系统管理 - 系统配置 - 钉钉 - 新增 配置完成后可点击右下角进行测试。  5修改构建任务配置。  通知人atAll 勾选后  不到准确的人。。输入框内可填写需要被  人的手机号多个换行。 自定义内容支持 markdown 写法可以使用一些环境变量。192.168.0.1:8080/env-vars.html/ 实现默认 执行人[6] 6构建成功 Pipline 构建 上一章节中着重介绍了如何构建 freestyle 的任务但是 Jenkins 远不止于此。在本章开始之前强烈建议阅读文档[7]重点关注流水线相关内容。 新建任务 - 选择流水线 其他内容可以都不用管只关注流水线 有两种选择演示就选择第一种。 直接在 Jenkins 中书写配置。 在项目的 Jenkinsfile 配置文件中写配置。 在正式开始之前应该了解 Jenkins Pipline 的基础概念。 pipeline { agent any // 在任何可用的代理上执行流水线或它的任何阶段。 stages { stage(Build) { // 定义 Build 阶段。 steps { // 执行与 Build 阶段相关的步骤。 } } stage(Deploy) { // 定义 Deploy 阶段。 steps { // 执行与 Deploy 阶段相关的步骤。 } } }}复制代码 pipline定义流水线整个结构可以看做是根节点 agent指示 Jenkins 为整个流水线分配一个执行器比如可以配置 Docker stages对整个 CI 流的包裹个人认为没多大用还必须得有。 stage可以理解为是对某一个环节的描述。注意参数就是描述内容可以是任何内容。不要想歪了只能传递 Build Deploy 这些。 steps描述了 stage 中的步骤可以存在多个。 了解到这里还是不够的。流水线入门[8] 流水线语法参考[9] Pipline 复刻 Freestyle 这里先直接把配置贴出来。后续结合内容在进行分析。 点击查看完整配置 // 自定义 钉钉插件 的 错误信息和成功信息def successText [ ### 新的构建信息请注意查收, ${env.JOB_BASE_NAME}任务构建font colorgreen成功/font 点击查看[构建任务 #${env.BUILD_NUMBER}](http://106.14.185.47:8080/job/${env.JOB_BASE_NAME}/${env.BUILD_NUMBER}/)]def failureText [ ### 新的构建信息请注意查收, ${env.JOB_BASE_NAME}任务构建font colorred失败/font 点击查看[构建任务 #${env.BUILD_NUMBER}](http://106.14.185.47:8080/job/${env.JOB_BASE_NAME}/${env.BUILD_NUMBER}/)]// 1侦听 github push 事件properties([pipelineTriggers([githubPush()])])pipeline { agent any // 环境变量定义。 environment { GIT_REPO http://github.com/vue-ts-vite-temp.git } stages { // 2拉取 github 代码通过 GitSCM 侦听 push 事件。 stage(Pull code) { steps { checkout( [ $class: GitSCM, branches: [[name: */main]], extensions: [], userRemoteConfigs: [ [ credentialsId: 381325e4-0f9c-41ea-b5f6-02f8ea2a475a, url: env.GIT_REPO ] ], changelog: true, poll: true, ] ) } } stage(Install and build) { steps { // 3前面安装过的 nodejs 插件使用 nodejs(v14.19.0) { sh npm install yarn -g sh yarn install sh yarn build } } } stage(Pack) { steps { sh tar -zcvf dist.tar.gz dist/ sh rm -rf dist/ } } stage(Deploy) { steps { // 4前面下载的 Publish Over SSH 插件的使用 sshPublisher( publishers: [ sshPublisherDesc( configName: aliyun-dev, transfers: [ sshTransfer( cleanRemote: false, excludes: , execCommand: cd /usr/share/nginx/html/ tar -zxvf dist.tar.gz rm -rf dist.tar.gz , execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: [, ], remoteDirectory: /usr/share/nginx/html/, remoteDirectorySDF: false, removePrefix: , sourceFiles: dist.tar.gz ) ], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false ) ] ) } } } post { success { // 5DingTalk 插件的使用。 dingtalk ( robot: 1314, type: ACTION_CARD, title: Jenkins构建提醒, text: successText, btns: [ [ title: 控制台, actionUrl: http://106.14.185.11:8080/ ], [ title: 项目预览, actionUrl: http://github.com/ ], ], at: [] ) } failure { dingtalk( robot: 1314, type: ACTION_CARD, title: Jenkins构建提醒, text: failureText, btns: [ [ title: 控制台, actionUrl: http://106.14.185.11:8080/ ], [ title: 项目预览, actionUrl: http://github.com/ ], ], at: []// 这里是手机号多个之间,隔开 ) } }}复制代码 这么多内容手写无疑是很难受的好在 Jenkins 提供了一些帮助工具。访问地址为Jenkins地址  /job  当前任务  /pipeline-syntax/例如http://localhost:8080/job/dev-deploy/pipeline-syntax/或者进入任务构建页面点击流水线语法进入 进入该页面后请熟读并背诵以下三项。重点放到第一项。  回头看上面的脚本注释都带有序号。根据注释序号开始解释。 1在片段生成器中选择 properties: Set job properties 生成代码片段。由于只是使用了 git hook trigger 所以要对生成的片段稍作修改。 2如果不是为了侦听 github push 选择 git: Git 即可但现在应该选择 checkout: Check out from version control随后填写信息生成代码即可。  3选择 nodejs: Provide Node npm bin/folder to Path 4选择 sshPublisher: Send build artifacts over SSH像上面流水线一样配置之后直接生成代码即可。 5DingTalk 文档 总结 通过插件生成的代码稍作组合就成为了完整的配置。但整体难度还是要略高于 Freestyle 任务。毕竟生成的代码有部分也不是拿来即用的并且 Pipline 基本语法一定要有所掌握。不然生成的代码都不晓得放到哪里合适。
http://www.dnsts.com.cn/news/61326.html

相关文章:

  • 网站建设seo虾哥网络站酷网怎么接单赚钱
  • 北京网页设计公司关键词优化的原则
  • iis网站正在建设中网页制作基础教程电子教材
  • 网站开发选asp还是hphlogo设计软件手机版
  • 长治推广型网站开发云南省建设造价协会网站
  • 有哪些可以做策划方案的网站个人网站开发开题报告
  • 色彩设计网站大田县建设局官方网站
  • 青浦苏州网站建设好看的静态网站
  • 网站建设服务怎么样html网页特效
  • 网站建设商城模板老狼请客高清免费观看mx
  • 免费建设com网站网站开发手机版
  • 制定网站推广方案品牌策划案模板
  • 织梦修改网站背景颜色贵阳能做网站的公司有哪些
  • 网站怎么建立支付平台清溪做网站的电话
  • 有哪些网站是免费学做网页的济南网络优化哪家专业
  • 广州网站优化步骤网站中点击链接怎么做
  • 自己做网站需要备份么网站设计公司报价
  • 外链 网站权重在线seo短视频
  • 深圳网站建设专业的公司手机在线做ppt的网站有哪些问题
  • 做新年公告图片的网站修改仪表盘WordPress
  • 域名是网站吗广西网络推广公司
  • 网站创建二级域名做网站如何团队分工
  • 网站建设开发费用入什么科目网站怎么做h5支付
  • 网站流量能打开wifi打不开自建wap网站
  • 网站实现留言功能设计企业网站哪家好
  • 购物网站创业时是如何做宣传的免费logo生成器有哪些
  • 论坛网站建设开源工具外贸都是在哪些网站做
  • 一家网站建设公司需要什么资质怎样建设网站教程
  • 做视频点播网站如何赚钱没有网站如何做落地页
  • 互动网站案例公司网站制作都需要图片