阿里云效自动化部署保姆级教程,教你做一个合格的使用工程师

阿里云效是一个综合的DevOps平台,我们这里只是使用它的部分功能,代码管理、流水线和镜像仓库。本文的主线流程是教你如何使用免费的工具做自动化部署,业务流程:创建代码仓库->创建流水线->在服务器做一些配置脚本->提交代码->自动触发流水线ci->部署应用到服务器

创建代码仓库

我们假设你已经掌握了git的使用,那么这一个步骤对你来说应该很容易。首先访问阿里云效DevOps网址,登录之后,看到如下界面

点击「代码管理」,会打开一个新页面,然后依次点击「添加库」->「新建代码库」

创建完成后,目前还是一个空的仓库,所以我们需要把本地代码提交上去,去spring starter创建一个简单的web项目。

下载到本地之后解压,然后执行一下命令把代码传到我们刚创建的仓库中

shell 复制代码
cd demo
git init
git remote add origin https://codeup.aliyun.com/xxxxx/demo/demo-backend.git
git add .
git commit -m 'init'
git push -u origin master

刷新一下页面,就看到代码已经上传上来了

创建流水线

后端代码的流水线,我们使用docker进行部署,所以你需要先在服务器上安装docker,前端的流水线直接编译然后放到nginx相应的目录下。

点击创建流水线,会打开新页面,进入流水线页面

选择上述流水线,会进入流程配置界面,目前的流程配置共分为三个步骤:

  • 流水线源
  • 构建
  • 部署

流水线源

设置仓库地址和触发时机(可以做到提交后自动部署)

构建

先用maven编译成jar包,然后根据Dockerfile把jar包构建镜像,并上传到阿里云镜像库,上述步骤需要配置很多,第一次配置会缺很多东西,比如阿里云的容器镜像服务(ACR)、仓库,这些配置只需要点击旁边的➕新增即可。

有一点我需要特别强调,那就是Dockerfile,建议直接把Dockerfile放到项目的根目录下,这样后面的配置都不需要改动。 下面的配置是执行构建docker镜像所需要的配置

bash 复制代码
docker build -f ${Dockerfile路径} -t ${仓库}:${标签} ${ContextPath}

所以你的Dockerfile在项目根目录下,相当于执行下面的命令,注意后面有个.,表示context path是当前目录。

bash 复制代码
cd demo
docker build -f Dockerfile -t ${仓库}:${标签} .

在代码仓库创建一个Dockerfile,并提交到远程仓库

bash 复制代码
FROM openjdk:8

RUN mkdir -p /app
COPY target/*.jar /app/app.jar
WORKDIR /app

RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone

CMD java -jar app.jar
EXPOSE 8080

部署

因为模板的部署是用k8s部署,而我们是用docker部署到主机上,所以要先删掉,新建一个

我们去服务器上新建一个目录专门放部署脚本,如果你使用的是ubuntu记得切换到root用户

bash 复制代码
sudo su
mkdir -p demo/data && cd demo
touch app.yml server.env

app.yml是docker-compose配置文件,${image}是构建步骤的上传的镜像

yaml 复制代码
version: '2'
services:
  backend:
    image: demo-server
    volumes:
      - /home/ubuntu/demo/data:/data
    env_file:
      - server.env
    ports:
      - "8082:8080"
    container_name: "demo-server"

server.env是环境变量,可以替换application.yml里的配置

ini 复制代码
DEMO_HELLO=你好

修改一下代码: application.yml添加配置

makefile 复制代码
demo:
  hello: "hello"

DemoApplication.java修改代码

less 复制代码
@RestController
@SpringBootApplication
public class DemoApplication {

	@Value("${demo.hello}")
	private String hello;

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}


	@GetMapping("/api/hello")
	public String hello(@RequestParam String name) {
		return hello + " " + name;
	}
}

上传代码,之后开始写部署脚本

bash 复制代码
cd /home/ubuntu/demo
echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin registry.cn-qingdao.aliyuncs.com
docker pull $image
docker tag $image demo-server
docker-compose -f app.yml up -d
docker container prune -f
docker image prune -a -f

image变量配置 镜像仓库用户名和密码

都配置完成之后,点保存并运行

部署成功!

相关推荐
安静读书1 天前
持续集成与持续部署:CI/CD简介
运维·ci/cd
安静读书2 天前
持续集成与持续部署:CI/CD实现教程
ci/cd
AliCloudROS4 天前
2分钟在阿里云ECS控制台部署个人应用(图文示例)
阿里云·ci/cd·持续部署
天草二十六_简村人4 天前
jenkins用户在执行scp的时候如何做免密登录
运维·ci/cd·node.js·jenkins·php·devops
Lalolander4 天前
通过华为鲲鹏认证发行上市的集成平台产品推荐
大数据·人工智能·科技·安全·ci/cd·华为·持续集成
golitter.5 天前
CI/CD认识
运维·ci/cd
莫尔道嘎老范5 天前
vue+vite前端项目ci过程中遇到的问题
前端·vue.js·ci/cd
小技与小术7 天前
CICD持续集成与持续交付
ci/cd·云原生·kubernetes
杨哥带你写代码7 天前
Spring Boot编程训练系统:敏捷开发与持续集成
spring boot·ci/cd·敏捷流程
qq_4337169511 天前
编写第一个 Appium 测试脚本:从安装到运行!
自动化测试·软件测试·jmeter·ci/cd·职场和发展·appium·jenkins