学习使用云效的3个基本功能
- 代码管理
- 制作仓库
- 流水线
代码管理
在云效中,它为我们提供了一个内部的代码管理仓库。其实就和github,gitlab是一样的,供我们和团队内的其它同学一起协作开发。
以本地的一个工程代码smartplan-user为例,将工程代码上传到云效的代码管理,然后再次基础上进行协作开发。
-
新建代码仓库
-
找到本地项目所在的目录。执行相关命令将本地项目代码上传的远端仓库
cd existing_folder git init git remote add origin https://codeup.aliyun.com/63412cc6bd947c7ec67c22a5/smartplan-user.git git add . git commit git push -u origin master
-
在最后git push -u origin master 推送代码之前,点击头像–>在个人设置中配置相关方式。
这里的https的密码账户不是我们云效的登录用户名好密码,就是专门添加了之后用于git推送代码的。
-
上传成功之后就可以在云效看到了。
制品仓库
云效提供了制品仓库这么一个服务。如下图,大家可以看到,为java后端提供Maven的团队内部仓库,为前端同学提供了NPM的内部仓库。这些仓库充用于存储我们自己开发的内部依赖的包,只供团队之间依赖使用,不会对外暴露。
以刚才的smartplan-user这个服务为例,它需要暴露自己的服务,供其他服务调用。所以这里的smartplan-user-api模块就封装了feign的相关内容,其它微服务如果有调用user服务的需求,就可以依赖这个模块。所以我们需要将它放到制品仓库去。
-
以为maven为例,登录自己的云效的,找到下图的位置,即有详细教程配置教程。
-
将教程中相关的配置设置完毕之后,即可推送到制品仓库仓库。推送成功之后,其它小伙伴配置之后即可使用
流水线
接下来介绍流水线功能,这个功能可以帮助我们将代码检查,编译打包,上传部署,启停服务等一系列频繁而重复的工作,进行自动化的管理。最终达到的效果可以是,代码分支有提交,就可以自动完成刚才说的一些步骤,然后在服务器上,运行着最新的代码。
以刚才的smartplan-user这个服务为例。我们将创建一个流水线,然后最终部署到指定的服务器。
-
进入流水线模块,新创建一个流水线
-
添加流水线源,就是选择代码源和相关设置。
在此我们开启代码源触发,待会就可以达到有commit就可触发流水线的运行。
-
新建第一个任务,比如我们这里是java项目,那我们可以选择一个代码扫描。让我们的源码进行一次阿里的java代码规范的扫描。这个任务基本不用设置什么参数。
-
新建第二个任务,这里我们就选择java构建。
这里需要修改打包路径,一般情况下,我们打包之后,服务的jar包就在target文件夹下,然后这里的deploy.sh这个启停脚本会也需要一并打包。构建这步就会进行编译打包,并且会将打好的包放在云端。在后面供下载。
1.smartplan-user-service/target/smartplan-user-service-1.0-SNAPSHOT.jar
2.deploy.sh
-
新建第三个任务,选择主机部署。
选择自己的下载上一步打包好的制品。选择部署的主机,我这里已经配置了一个主机了。但是大家第一次操作的时候,选择新建主机组。
如果你有阿里云的服务器,那非常的方便。但如果你是其它云的服务器,就选择自有主机
这里我已经新增好了一个实例
回到部署配置页,选择刚才新增的主机组。这里的下载路径,就是将构建那一步产生的包,下载到我们服务器的指定目录,然后就可以在下面编写部署脚本。
写了个简单的脚本
cd /home/jogeen/app/user #切换到下载的目录 ./deploy.sh stop #停掉之前的服务 tar -zxvf package.tgz #解压当前下载的最新包 chmod +x deploy.sh #重新给启停脚本新增运行权限 ./deploy.sh start #用启停脚本启动服务
下面附带一个启停脚本
#!/bin/bash app='smartplan-user-service-1.0-SNAPSHOT.jar' args='-Xms512m -Xmx512m' cmd=$1 pid=`ps -ef |grep $app | grep -v 'grep'| awk '{print $2}'` startup(){ nohup java -jar $args smartplan-user-service/target/$app > logs/server.log & } if [ ! $cmd ]; then echo "Please specify args 'start|restart|stop'" exit fi if [ $cmd == 'start' ]; then if [ ! $pid ]; then startup else echo "$app is running! pid=$pid" fi fi if [ $cmd == 'restart' ]; then if [ $pid ] then echo "$pid will be killed after 2 seconds!" sleep 2 kill -9 $pid fi startup fi if [ $cmd == 'stop' ]; then if [ $pid ]; then echo "$pid will be killed after 2 seconds!" sleep 2 kill -9 $pid fi echo "$app is stopped" fi
-
最后配置好了,可以手动运行流水线,也可以通过提交代码出发。
-