自动化部署(三):项目管理平台

一、项目管理平台作用

帮助团队高效规划、执行和监控项目进度,确保任务按时完成并实现目标

  • 敏捷开发:提供标准敏捷研发管理,支持Scrum 与 Kanban

  • 规模化敏捷:支持大型研发团队跨项目协同,实现多项目路线图规划和资源管控

  • 研发工作流:连接多种工具,构建自动化研发工作流、DevOps 工作流

  • 测试管理:测试用例管理和测试计划执行,确保产品交付质量

  • 知识库管理:帮助企业建立规范化知识管理体系,实现文档协同与知识沉淀

二、市场主流平台

  • 阿里云效平台

  • teambition:阿里出品的项目管理平台 https://www.teambition.com/

  • PingCode:PingCode 是2021年中国软件项目管理软件榜单排名TOP1;它满足客户反馈、规划、开发、编码、构建、测试、发布上线的研发全流程管理,支持私有部署、定制开发、SAAS等版本;价格仅是Jira的30%-40%。

  • Worktile:Worktile 是连续多年的项目管理排行榜总榜前三。它是一个通用型的项目管理工具,支持不同类型的团队使用。项目管理方面具备项目管理、项目集管理、项目规划、项目追踪、项目文档管理等项目功能,除此以外还是一工具集合。Worktile 同样支持私有部署、二次开发、saas等版本。

  • Redmine:Redmine是一款开源的、灵活的项目管理Web解决方案。使用Ruby on Rails框架编写的,支持跨平台和跨数据库。主要功能包括:灵活的项目控制;支持多个项目;灵活的问题追踪系统;Gantt图表;新闻、文件/文档管理。

  • Clickup:Clickup 是国外点评网站G2排名第二的项目管理软件,它是一个为所有用户类型打造的项目管理系统,整合了所有业务流程的核心功能——销售、营销、设计和开发等。非常适合境外企业使用,但国内可能并不是最佳选择,因为不具备服务团队和服务器。

  • Jira:Jira是全球知名软件项目管理工具,有非常多的用户认为它好,也有非常多的用户吐槽难用。它足够成熟,但学习成本也足够高。在2020年开始停止在大陆出售本地版,强迫上云。

三、试用阿里云效

官网地址:https://www.aliyun.com/product/yunxiao

在这里插入图片描述

在这里插入图片描述

创建项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

新建迭代

在这里插入图片描述

新建需求

在这里插入图片描述

新建任务

在这里插入图片描述

新建缺陷

在这里插入图片描述

查看工时

在这里插入图片描述

项目总体把控

在这里插入图片描述

给测试人员测试任务

在这里插入图片描述

工作项:查看自身这一天的工作量

在这里插入图片描述

邀请成员加入企业和项目(迭代)

在这里插入图片描述

总结功能

项目协作

在这里插入图片描述

文档功能: 项目排期、需求文档、测试文档

在这里插入图片描述

知识库

在这里插入图片描述

代码管理(类似gitlab)

在这里插入图片描述

流水线(类似jenkens)

在这里插入图片描述

制品库(类似nexus)

在这里插入图片描述

四、体验一把自动构建

云效流水线 Flow 是一款企业级、自动化的持续集成和持续交付工具,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线的CI/CD全流程,帮助企业高质量、高效率的交付业务。

应用场景:没必要自建机房部署代码托管、jekens,并且自己公司的产品部署在服务器上,完全可以利用云效平台进行自动话部署。

在这里插入图片描述

新建代码库

将jzjwebcackend项目,推送到codeup代码管理中,类似gitlab。

在这里插入图片描述

把本地仓库和codeup关联

cd existing_folder
git init
git remote add origin https://codeup.aliyun.com/2e34ed3c151e2cc/jzjwebcackend.git
git add .
git commit
git push -u origin master

初始化成功

在这里插入图片描述

pom中修改生成jar包名 application.jar

<build><finalName>application</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

添加启动脚本deploy.sh

真实生产环境,肯定是使用sh脚本启停我们的项目,所以这个项目的启停脚本写好在根目录,推送

#!/bin/bash# 修改APP_NAME为云效上的应用名
APP_NAME=applicationPROG_NAME=$0
ACTION=$1
APP_START_TIMEOUT=20    # 等待应用启动的时间
APP_PORT=8083          # 应用端口
HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT}/demo/test  # 应用健康检查URL
APP_HOME=/home/admin/${APP_NAME} # 从package.tgz中解压出来的jar包放到这个目录下
JAR_NAME=${APP_HOME}/target/${APP_NAME}.jar # jar包的名字
JAVA_OUT=${APP_HOME}/logs/start.log  #应用的启动日志# 创建出相关目录
mkdir -p ${APP_HOME}
mkdir -p ${APP_HOME}/logs
usage() {echo "Usage: $PROG_NAME {start|stop|restart}"exit 2
}health_check() {exptime=0echo "checking ${HEALTH_CHECK_URL}"while truedostatus_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code}  ${HEALTH_CHECK_URL}`if [ "$?" != "0" ]; thenecho -n -e "\rapplication not started"elseecho "code is $status_code"if [ "$status_code" == "200" ];thenbreakfifisleep 1((exptime++))echo -e "\rWait app to pass health check: $exptime..."if [ $exptime -gt ${APP_START_TIMEOUT} ]; thenecho 'app start failed'exit 1fidoneecho "check ${HEALTH_CHECK_URL} success"
}
start_application() {echo "starting java process"nohup java -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 &echo "started java process"
}stop_application() {checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`if [[ ! $checkjavapid ]];thenecho -e "\rno java process"returnfiecho "stop java process"times=60for e in $(seq 60)dosleep 1COSTTIME=$(($times - $e ))checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`if [[ $checkjavapid ]];thenkill -9 $checkjavapidecho -e  "\r        -- stopping java lasts `expr $COSTTIME` seconds."elseecho -e "\rjava process has exited"break;fidoneecho ""
}
start() {start_applicationhealth_check
}
stop() {stop_application
}
case "$ACTION" instart)start;;stop)stop;;restart)stopstart;;*)usage;;
esac

新建流水线

  • 进入云效 > 流水线 Flow 首页 > 我的流水线,单击 新建流水线,打开 选择流水线模板弹窗,选择对应的开发语言,可以查看当前语言下的默认流水线模板,可以根据模板快速创建流水线。
  • 单击 Java,选择 Java · 构建、部署到阿里云ECS/自有主机模板,单击创建,进入流水线编辑页面。

在这里插入图片描述

编排流水线

  • 进入流水线编辑页 > 流程配置,打开 添加流水线源,选择 示例代码源,默认选中 Java 代码类型,自动填充代码仓库地址、默认分支、工作目录等。
  • 单击 添加,流水线源区域便会出现已添加的流水线源。

在这里插入图片描述

配置测试

在这里插入图片描述

配置构建任务

  • 单击 Java 构建上传任务,打开任务配置面板。
  • 查看java构建步骤配置,可按需修改。
  • 查看 构建物上传步骤配置,可按需修改。本例中,需要将target/application.jar和deploy.sh两个文件打包到制品中,打包路径按下图配置。

在这里插入图片描述

配置部署任务

  • 接下来配置主机部署任务,在制品下拉框中选择“制品名称.default”,也就是前面的“Java构建上传”步骤归档的那个制品。为了配置主机组,需要先创建一个,点击“新建主机组”。

在这里插入图片描述

在这里插入图片描述

刷新页面

在这里插入图片描述
在这里插入图片描述

部署脚本:需要运行启停脚本

  • a.下载路径:表示希望把”构建上传”任务中的压缩包下载到机器上的什么位置,在本例的值为:/home/admin/app/package.tgz
  • b.执行用户:希望以是哪个用户的身份进行脚本执行,本例的值为:root
  • c.部署脚本:在机器上执行脚本的具体内容,本例的值为:
mkdir -p /home/admin/application
tar zxvf /home/admin/app/package.tgz -C /home/admin/application/
chmod 777 /home/admin/application/deploy.sh
sh /home/admin/application/deploy.sh restart

在这里插入图片描述

运行流水线

上述配置完成,单击 保存并运行,可以看到 保存成功 提示,并打开 运行配置弹窗。默认 master分支,单击 运行即可触发流水线运行,进入流水线运行页。

在这里插入图片描述

查看部署情况

在这里插入图片描述

验证项目是否启动

在这里插入图片描述

推送代码触发构建

流水线配置中,开启代码触发

在这里插入图片描述

代码管理中配置Webhooks

在这里插入图片描述

测试一下

在这里插入图片描述

在这里插入图片描述

测试真实代码提交

push

在这里插入图片描述

在这里插入图片描述

回滚

如果发布完成之后发现线上服务有问题,则需要快速回滚。云效Flow提供了通过历史版本直接进行回滚的能力。在流水线运行页面点击”部署历史“,然后选择相应的部署任务,便可以看到该部署任务所有的成功部署记录。

在这里插入图片描述

在这里插入图片描述

通知

为了更好的进行协作,Flow提供了通知能力在流水线不同的生命周期节点上进行通知。一般来讲开发团队会关心部署的成功和失败,那么可以将该事件推送到团队的钉钉群中,配置方式如下,点击”添加插件”,选择钉钉机器人通知,填入webhook地址,运行时机选择”失败“,”成功”

在这里插入图片描述

再次运行之后,就会收到相应的通知:

在这里插入图片描述

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

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

相关文章

常用集合-数据结构-MySql

目录 java核心&#xff1a; 常用集合与数据结构: 单例集合: 双列集合: 线程安全的集合: ConcurrentHashMap集合: HashTable集合: CopyOnWriteArrayList集合: CopyOnWriteArraySet集合: ConcurrentLinkedQueue队列: ConcurrentSkipListMap和ConcurrentSkipListSet&…

IP属地与视频定位位置不一致:现象解析与影响探讨

在数字化时代&#xff0c;IP属地和视频定位位置已成为我们获取网络信息、判断内容真实性的重要依据。然而&#xff0c;有时我们会发现&#xff0c;某些视频内容中展示的定位位置与其发布者的IP属地并不一致。这种不一致现象引发了广泛的关注和讨论。本文旨在深入剖析IP属地与视…

计算机毕业设计hadoop+spark股票基金推荐系统 股票基金预测系统 股票基金可视化系统 股票基金数据分析 股票基金大数据 股票基金爬虫

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

机器学习-数据集划分

文章目录 一. 为什么要划分数据集二. 数据集划分的方法1. 留出法&#xff1a;2. 交叉验证&#xff1a;将数据集划分为训练集&#xff0c;验证集&#xff0c;测试集3. 留一法&#xff1a;4. 自助法&#xff1a; 一. 为什么要划分数据集 为了能够评估模型的泛化能力&#xff0c;可…

Vue 拦截监听原理

Vue 渐进式JavaScript 框架 学习笔记 - Vue 拦截监听原理 目录 拦截监听原理 如何跟踪变化 拦截监听示例 观察者 注意:vue3的变化 总结 拦截监听原理 如何跟踪变化 当你把一个普通的Javascript 对象传入 Vue 实例作为data选项&#xff0c;Vue 将遍历此对象所有的proper…

全面评测 DOCA 开发环境下的 DPU:性能表现、机器学习与金融高频交易下的计算能力分析

本文介绍了我在 DOCA 开发环境下对 DPU 进行测评和计算能力测试的一些真实体验和记录。在测评过程中&#xff0c;我主要关注了 DPU 在高并发数据传输和深度学习场景下的表现&#xff0c;以及基本的系统性能指标&#xff0c;包括 CPU 计算、内存带宽、多线程/多进程能力和 I/O 性…

基于JAVA的校园二手商品交易平台的设计与开发

摘 要&#xff1a;政府政策引导与社会观念的转变使得国内大学生的创业意识逐渐提高&#xff0c;很多高校大学生开始自主创业。目前我国各大高校暂且还没有较为成型的针对校内学生创业者的校园网络服务平台。本文首先主要是介绍了关于java语言以及web开发的相关技术&#xff0c;…

HarmonyOS Next 应用UI生成工具介绍

背景 HarmonyOS Next适配开发过程中难买难要参考之前逻辑&#xff0c;但是可能时间较长文档不全&#xff0c;只能参考Android或iOS代码&#xff0c;有些逻辑较重的场景还可以通过AI工具将Android 的Java代码逻辑转成TS完成部分复用。对于一些UI场景只能手动去写&#xff0c;虽…

总结6..

背包问题的解决过程 在解决问题之前&#xff0c;为描述方便&#xff0c;首先定义一些变量&#xff1a;Vi表示第 i 个物品的价值&#xff0c;Wi表示第 i 个物品的体积&#xff0c;定义V(i,j)&#xff1a;当前背包容量 j&#xff0c;前 i 个物品最佳组合对应的价值&#xff0c;同…

【数据结构篇】顺序表 超详细

目录 一.顺序表的定义 1.顺序表的概念及结构 1.1线性表 2.顺序表的分类 2.1静态顺序表 2.2动态顺序表 二.动态顺序表的实现 1.准备工作和注意事项 2.顺序表的基本接口&#xff1a; 2.0 创建一个顺序表 2.1 顺序表的初始化 2.2 顺序表的销毁 2.3 顺序表的打印 3.顺序…

上位机工作感想-2024年工作总结和来年计划

随着工作年限的增增长&#xff0c;发现自己越来越不喜欢在博客里面写一些掺杂自己感想的东西了&#xff0c;或许是逐渐被工作逼得“成熟”了吧。2024年&#xff0c;学到了很多东西&#xff0c;做了很多项目&#xff0c;也帮别人解决了很多问题&#xff0c;唯独没有涨工资。来这…

阿里云-银行核心系统转型之业务建模与技术建模

业务领域建模包括业务建模和技术建模&#xff0c;整体建模流程图如下&#xff1a; 业务建模包括业务流程建模和业务对象建模 业务流程建模&#xff1a;通过对业务流程现状分析&#xff0c;结合目标核心系统建设能力要求&#xff0c;参考行业建 模成果&#xff0c;形成结构化的…

【C++笔记】红黑树封装map和set深度剖析

【C笔记】红黑树封装map和set深度剖析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】红黑树封装map和set深度剖析前言一. 源码及框架分析1.1 源码框架分析 二. 模拟实现map和set2.1封装map和set 三.迭代器3.1思路…

win32汇编环境,怎么得到磁盘的盘符

;运行效果 ;win32汇编环境,怎么得到磁盘的盘符 ;以下代码主要为了展示一下原理&#xff0c;应用GetLogicalDrives、GetLogicalDriveStrings函数、屏蔽某些二进制位、按双字节复制内容等。以下代码最多查8个盘&#xff0c;即返回值中的1个字节的信息 ;直接抄进RadAsm可编译运行。…

mybatis(19/134)

大致了解了一下工具类&#xff0c;自己手敲了一边&#xff0c;java的封装还是真的省去了很多麻烦&#xff0c;封装成一个工具类就可以不用写很多重复的步骤&#xff0c;一个工厂对应一个数据库一个environment就好了。 mybatis中调用sql中的delete占位符里面需要有字符&#xf…

重学SpringBoot3-WebClient配置与使用详解

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞??收藏评论 重学SpringBoot3-WebClient配置与使用详解 1. 简介2. 环境准备 2.1 依赖配置 3. WebClient配置 3.1 基础配置3.2 高级配置3.3 retrieve()和exchange()区别 4. 使用示例 4.1 基本请求操…

.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

深度学习系列75:sql大模型工具vanna

1. 概述 vanna是一个可以将自然语言转为sql的工具。简单的demo如下&#xff1a; !pip install vanna import vanna from vanna.remote import VannaDefault vn VannaDefault(modelchinook, api_keyvanna.get_api_key(my-emailexample.com)) vn.connect_to_sqlite(https://va…

【线性代数】列主元法求矩阵的逆

列主元方法是一种用于求解矩阵逆的数值方法&#xff0c;特别适用于在计算机上实现。其基本思想是通过高斯消元法将矩阵转换为上三角矩阵&#xff0c;然后通过回代求解矩阵的逆。以下是列主元方法求解矩阵 A A A 的逆的步骤&#xff1a; [精确算法] 列主元高斯消元法 步骤 1&am…

[0242-06].第06节:SpringBoot对SpringMVC的自动配置

SpringBoot学习大纲 一、基于SpringBoot搭建Web工程&#xff1a; 1.1.编码实现步骤&#xff1a; a.创建SpringBoot项目 b.选中依赖&#xff1a;选中我们所需要的模块 1.2.SSM中的WEB开发配置与SpringBoot中WEB开发自动配置对比&#xff1a; a.SSM中的WEB开发&#xff1a; 1…