一、项目管理平台作用
帮助团队高效规划、执行和监控项目进度,确保任务按时完成并实现目标
-
敏捷开发:提供标准敏捷研发管理,支持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地址,运行时机选择”失败“,”成功”
再次运行之后,就会收到相应的通知: