流水线Flow【可持续集成自动化部署】解决方案

news2024/10/3 6:38:34

文章目录

  • 前言
  • 一、准备项目代码
    • 1.默认的项目
    • 2.浏览器访问
  • 二、使用步骤
    • 1.进入工作台
    • 2.创建流水线
    • 3.代码源
    • 4.代码扫描
    • 5.单元测试
    • 6.代码构建
    • 7.主机部署
    • 8.部署脚本
  • 三、运行测试
    • 1.运行流水线
    • 2.测试报告
    • 3.访问项目
  • 总结


前言

「流水线」,又名「Flow」,是一款企业级、自动化的研发交付流水线, 提供灵活易用的持续集成、持续验证、 持续发布功能,帮助企业高质量、高效率的交付业务。

提示:上面简述来自:阿里云。个人理解就是流水线Flow 自动化部署,类似于 Jenkins,是开发中的一种可持续集成工具,代码检测,支持多种语言部署,废话不多说不说,上操作。


在这里插入图片描述

下面开始演示从0 - 1 项目部署发布整个环节

一、准备项目代码

1.默认的项目

  • Codeup-Demo在这里插入图片描述
  • 拉取代码【不会的可以看这一篇】阿里云效产品【代码管理Codeup】企业项目代码管理在这里插入图片描述
  • 看到代码是一个SpringBoot项目
  • 项目启动,默认端口【8080】

2.浏览器访问

  • 浏览器访问 http://localhost:8080/ 里面有个接口【浏览器随机数打印两句话】
@RestController
public class P3cScannerController {

    @RequestMapping("/")
    public String index() {
        Random R = new Random();
        int randInt = R.nextInt();

        if (randInt % 2 == 0)
            return HelloWorld;

        return HELLO_WORLD;
    }

    private static final ExecutorService THREAD_EXECUTOR = Executors.newSingleThreadExecutor();

    private String HelloWorld = "Welcome to Codeup";

    private static final String HELLO_WORLD = "Nice to meet you";
}
  • 刷新浏览器,即会重新掉一次接口
    在这里插入图片描述
    在这里插入图片描述

二、使用步骤

1.进入工作台

  • 点击运行【流水线】在这里插入图片描述

2.创建流水线

  • 选择项目对于的开发语言,点击创建在这里插入图片描述

3.代码源

  • 选择代码源【这里可以有多种选择,我这里选阿里的这个Codeup】 在这里插入图片描述

  • 上图中:您配置流水线源的源文件将会被下载至工作目录下。如填写demo_abc,则流水线会将文件下载至构建环境的/root/workspace/demo_abc路径下

  • 默认路径是在: /root/workspace/

  • demo_abc : 这个名字可以自定义

4.代码扫描

  • Java代码扫描在这里插入图片描述

5.单元测试

  • Maven单元测试【maven 打包命令不局限于此,可自行添加或删除修改,根据项目需要】在这里插入图片描述

6.代码构建

  • 这里需要注意的是,假如是微服务项目,项目中有多个子模块,这里需要注意 target路径地址
  • 举例
general								 父模块
├─general-admin                      系统模块
│  ├─general-admin-client
│  └─general-admin-server
├─general-auth                       授权认证模块
│  ├─general-auth-client
│  └─general-auth-server
├─general-commons                    公共模块
│  ├─general-commons-base-core       核心模块【base】
│  ├─general-commons-job             任务调度
│  ├─general-commons-oss             文件存储
│  ├─general-commons-sms             消息通讯
  • 写法
general/general-admin/general-admin-server/target/
general/general-auth/general-auth-server/target/
后面的以此类推.........
  • 代码构建【】在这里插入图片描述

7.主机部署

  • 主机部署【右边新建主机】在这里插入图片描述
  • 这里选择主机类型【我这里是腾讯云的服务器】大家可以根据自己的服务器来进行选择在这里插入图片描述
  • 添加主机【复制命令,在自己发服务器中执行:一定要是root权限】在这里插入图片描述
  • 提示 : 这个命令只是一个案例,具体还是以自己生成的为准
 bash  <(curl http://agent-install-default.oss-cn-hangzhou.aliyuncs.com/production-install.sh) 'http://devops.aliyuncs.com/api/getSnByRegion?regionId=46e8e93a-1696-4e71-8563-fc64b07de17b&sign=mlzDn1GYyPRyHN0RXf%2FunQ%3D%3D&aliyunRegion=default&timestamp=1671120883579&scope=flow' http://agent-install-default.oss-cn-hangzhou.aliyuncs.com/production-agent.tgz http://devops.aliyuncs.com/api/verifySnAndRegionId?sign=afe3vxJl6A7jxvDde9p%2BYw%3D%3D 46e8e93a-1696-4e71-8563-fc64b07de17b 1671120883579 default
  • 执行命令,安装完成如下图在这里插入图片描述
  • 安装后等待几秒钟,这里就会显示刚刚添加的服务器在这里插入图片描述
  • 详细配置在这里插入图片描述
  • 部署配置-下载路径:/home/admin/app/package.tgz 点击运行流水线的时候,服务器会会从Git中拉取代码,并打包,打包后的文件名称为 :package.tgz ,所以在部署脚本可以将这个文件解压完后选择性的删除
  • 执行用户:这里根据服务器分配的权限来定,一般使用 root

8.部署脚本

  • 官网介绍:点击访问
  • 因为实际的部署脚本已经打包到了构建产出的压缩包中,因此部署脚本可以简单的进行解压和执行即可
  • 首先创建一个目录【存放部署脚本deploy.sh,及项目 jar 文件】
mkdir -p /home/admin/application
# 解压到 temp 临时目录下
tar zxvf /home/admin/app/package.tgz -C /home/admin/app/
# 执行部署脚本
sh /home/admin/application/deploy.sh restart
  • 写部署脚本【deploy.sh】前,首先需要知道项目打包后的名称是什么,idea中打包测试在这里插入图片描述

  • deploy.sh 脚本内容

#!/bin/bash
PID_CODEUP=$(ps -ef | grep codeup-demo-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID_FXIAOKE" ]
then
    echo codeup-demo-0.0.1-SNAPSHOT.jar 服务已关闭。
else
    echo 正在关闭codeup-demo-0.0.1-SNAPSHOT.jar 服务,进程ID为:$PID_CODEUP
    kill $PID_CODEUP
fi

echo 删除历史版本
rm -rf /home/admin/application/codeup-demo-0.0.1-SNAPSHOT.jar
echo /home/admin/application/codeup-demo-0.0.1-SNAPSHOT.jar

echo 正在移动项目文件
sudo mv -f /home/admin/app/temp/codeup-demo-0.0.1-SNAPSHOT.jar /home/admin/application/
echo /home/admin/app/temp/codeup-demo-0.0.1-SNAPSHOT.jar /home/admin/application/

echo 删除临时生产的文件
rm -rf /home/admin/app/

echo 服务codeup-demo-0.0.1-SNAPSHOT.jar正在启动中........
nohup java -jar -XX:+UseG1GC -Xms128m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=512m /home/admin/application/codeup-demo-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
  • 脚本简述:

1、首先去根据这个项目名称去查找当前以启动的线程,然后使用kill命令,停止该进程。
2、删除之前的历史版本
3、在解压后的文件中,找到jar文件并移动至指定目录下。
4、删除生成的临时文件。
5、启动项目【这里根据自己的项目添加 JVM 运行参数大小】

三、运行测试

1.运行流水线

  • 点击右上方【运行】在这里插入图片描述

2.测试报告

  • 如下图在这里插入图片描述

3.访问项目

  • 浏览器访问项目:ip:8080在这里插入图片描述

  • 项目部署成功!

总结

以上就是内容为个人部署发布的内容,本文仅仅是简单介绍了流水线的玩法,大家有更好的玩法可以留言相互讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java+MySQL基于SSM的学生宿舍管理系统的设计与实现 开题 论文

随着我国教育制度的改革,各大高校一直在不断的扩招相对应的学生的数量也在不断的增加。在学生数量增加之后学校后勤人员就需要对后勤部分更加精准的进行管理,其中宿舍管理就是后勤管理中比较重要的一个组成部分。如何能够对学生的宿舍信息进行更加科学合理的管理是当前大多数高…

单张图像三维人脸重建必备入门face3d--pipeline

作者&#xff1a;小灰灰 来源&#xff1a;投稿 编辑&#xff1a;学姐 上期传送门&#x1f449;单张图像三维人脸重建必备入门face3d—3DMM 三维人脸的必备入门就要看Yao Feng写的https://github.com/YadiraF/face3d 这个代码主要介绍了3D人脸的一些功能&#xff0c;处理网格数…

Python -- 函数

目录 函数的介绍 1.函数定义和调用 2.函数的参数 2.1 定义、调用带有参数的函数 2.2 调用函数时参数的顺序 3.函数的返回值 3.1 返回值介绍&#xff1a; 3.2 带有返回值的函数 3.3 保存函数的返回值 4.文档注释 4.1 基本使用 4.2 高级使用 5.函数调用函数 6.函数高…

基于java的拼图游戏的设计与实现-计算机毕业设计

项目介绍 java版拼图游戏的功能有开始游戏&#xff0c;背景图片(可自己选择添加图片)&#xff0c;难度选择&#xff08;9格的初级&#xff0c;16格中级和以及25格的高级&#xff09;&#xff0c;成绩统计&#xff0c;分数排名等功能。游戏界面具有外观简洁美丽&#xff0c;操作…

Django学习Day4

1.静态文件 静态文件一般是指网页中的图片、js、css、音视频文件。是指不会随着用户的请求动态变更的文件信息和互联网资源。 关于静态文件的配置&#xff0c;需要在settings.py中进行指定。 &#xff08;1&#xff09;配置静态文件的访问路径。 &#xff08;2&#xff09;ST…

【NodeJs学习笔记】WebPack介绍

什么是WebPack WebPack主要用于模块打包。 它做的事情是&#xff0c;分析项目结构&#xff0c;找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言&#xff08;Scss&#xff0c;TypeScript等&#xff09;&#xff0c;并将其打包为合适的格式以供浏览器使用。 官…

如何使用 Git 操控Gitee远程库?如何进行 团队内协作 与 跨团队协作 ?这一篇就够了~

目录 前言 一、创建别名 二、推送本地库到远程库 三、拉取远程库代码到本地库 四、 克隆远程库到本地 五、团队内协作 六、跨团队协作 前言 如何通过Git操作Gitee/GitHub远程库&#xff1f;在Gitee/GitHub上如何进行 团队协作 与 跨团队协作&#xff0c;看完本篇&#x…

关于游戏介绍的HTML网页设计 HTML5期末考核大作业 HTML静态游戏网页作业 web前端开发技术 web课程设计 网页规划与设计

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

LeetCode 热题 C++ 98. 验证二叉搜索树 101. 对称二叉树

力扣98 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1&#xff1a…

记一次 .NET 某工控MES程序 崩溃分析

一&#xff1a;背景 1.讲故事 前几天有位朋友找到我&#xff0c;说他的程序出现了偶发性崩溃&#xff0c;已经抓到了dump文件&#xff0c;Windows事件日志显示的崩溃点在 clr.dll 中&#xff0c;让我帮忙看下是怎么回事&#xff0c;那到底怎么回事呢? 上 WinDbg 说话。 二&…

Linux文件权限概念

目录 前言 1、Linux 文件属性 1.1、档案类型权限 1.2、连结数 1.3、档案拥有者 1.4、档案所属群组 1.5、档案容量 1.6、档案最后被修改的时间 1.7、档名&#xff08;文件名&#xff09; 2、如何改变文件属性和权限 2.1、改变所属群组, chgrp 2.2、改变档案拥有者, c…

Codeforces Round #838 (Div. 2) E. Tree Sum(组合数学 prufer序列 枚举边算贡献)

题目 n(n<5e5)个点的树&#xff0c;边只能选-1或1&#xff0c; 若对于每个点i来说&#xff0c;i相连的所有边的乘积值为-1&#xff0c;则称这棵树是「good tree」 根据Cayley公式&#xff0c;有种树形&#xff0c; 对于每一种树形&#xff0c;每条边都有2种选择&#xff…

什么是飞书机器人?如何定时发送飞书机器人消息?

什么是飞书机器人&#xff1f; 机器人是飞书应用的一种能力类型。基于飞书的机器人能力&#xff0c;开发者能够以较低的开发成本&#xff08;只需在服务端开发&#xff09;&#xff0c;实现在飞书单聊或群组中的消息推送和简单互动&#xff0c;完成企业系统数据与飞书的互联互通…

42_CAN列表模式接收中断实验

目录 CAN结构体 CAN_InitTypeDef初始化结构体详解 发送及接收结构体: CanTxMsg及CanRxMsg详解 CAN_FilterlnitTypeDef筛选器结构体讲解 硬件连接图 实验源码 CAN结构体 从STM32的CAN外设我们了解到它的功能非常多,控制涉及的寄存器也非常丰富,而使用STM32标准库提供的各…

pandas数据分析总结

Pandas 是 Python 语言的一个扩展程序库&#xff0c;用于数据分析。其中DataFrame&#xff0c;Json&#xff0c;数据筛选的使用频次很高&#xff0c;值得重点将基本用法学习并总结。 版本信息&#xff1a;python 3.7 pandas 1.3.5 一、DataFrame DataFrame 是一个表格型的数…

【持续更新】计算机类PDF整理

计算机相关的书籍太多太多了&#xff0c;整理太多反而很乱&#xff0c;这边我根据自己的经验和理解选了一些典型的书籍&#xff0c;大部分是自己看过觉得很有用的&#xff0c;有些是听说很nice的&#xff0c;有些是经典的&#xff0c;大家可以自行下载。 持续更新中&#xff0…

Kaggle竞赛——Titanic泰坦尼克之灾(0.76315==>0.79186)

Kaggle竞赛网址&#xff1a;https://www.kaggle.com/c/titanic 上一章&#xff1a;Kaggle竞赛——Titanic泰坦尼克之灾&#xff08;保姆级基础版&#xff09; 本次Kaggle泰坦尼克之灾分析过程大致分为&#xff1a; 第1步&#xff1a;了解数据&#xff08;上一章&#xff09; …

19_SpringBoot拓展注解@SpringBootApplication和@Configuration

文章目录Spring Boot拓展注解SpringBootApplication和Configuration0x01_SpringBootApplicationSpringBootConfigurationEnableAutoConfigurationComponentScan0x02_ConfigurationFull 全模式&#xff0c;Lite 轻量级模式Spring Boot拓展注解SpringBootApplication和Configurat…

计算机网络原理 课后习题(作业)持续更新ing

【1-03 】试从多个方面比较电路交换、报文交换和分组交换的主要优缺点 &#xff08;1&#xff09;电路交换的主要特点: ①电路交换三个阶段&#xff1a;建立连接、通信、释放连接&#xff1b; ②在整个通信过程中&#xff0c;通信的双方自始至终占用着所使用的物理信道。 由…

多线程知识笔记(五)_单例模式

文章目录1、什么是单例模式2、饿汉模式3、懒汉模式1、什么是单例模式 单例模式是一种设计模式。 什么是设计模式呢&#xff1f;设计模式就是一种模板&#xff0c;就像做饭的时候&#xff0c;新手做饭什么调料都是一把放进锅里&#xff0c;有的菜就讲究调料的先后顺序&#xff…