阿里云效CICD流水线提交前后端项目

本文详细描述了后端和前端项目如何通过新建流水线、上传代码仓库、构建镜像以及处理多模块和跨域问题进行部署。重点介绍了Java构建和使用Dockerfile创建镜像的过程,以及如何在前端项目中配置Nginx和处理单元测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

后端

一、新建流水线

1进入流水线

2新建流水线

 3选择流水线模板

二、上传后端项目

1 将后端项目发布至代码仓库后,在流水线中选择流水线源

我们在选择流水线源之后会出现扫描失败的情况

 查看日志发现是因为我们的项目是多模块项目,再扫描的时候无法在本地找到相关模块

 只需要我们在上传项目的时候

解释

2Java构建

3构建个人版镜像

4添加服务链接 

 5 在wms-app目录下新建Dockerfile文件(Dockerfile文件名中的D一定要是大写的)文件,重新推送项目

运行后

再次进我们免费私仓,即可看到流水线上传的新镜像 

前端

一、新建流水线

二、上传前端项目

1 添加流水线源

 2 构建项目

3新建dockefile

FROM nginx
COPY dist /usr/share/nginx/html
RUN rm -f /etc/nginx/conf.d/default.conf
ADD default.conf /etc/nginx/conf.d/default.conf

4新建default.conf

upstream wms-app {
    server 192.168.14.3:3666 ;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        
        try_files $uri $uri/ /index.html; #解决单页面找不到路径问题 404
    }
   
    location /api/ {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'POST,GET,OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'Authorization'; #跨域设置
            proxy_pass http://wms-app ;  #可以配置多个下游服务,具有负载功能
            #proxy_pass http://192.168.14.3:3666; #仅配置一个下游服务,不具有负载均衡能力

    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }


}

5提交更新代码仓库

5构建镜像

 6删除单元测试并运行

再次进我们免费私仓,即可看到流水线上传的新镜像 

扩展 

父子项目打包发布至私仓库

1、方法一

在不需要发布至私仓的模块上添加如下代码:

<plugin>
           <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
                 <skip>true</skip>
             </configuration>
    </plugin>

在项目的跟下,双击

方法二 通过命令

忽略递归子模块,只发布父项目

mvn clean package deploy -N

其中 scm-api,scm-dto是模块名称,中间用逗号 

如果想跳过单元测试,用如下命令 

mvn clean deploy  -DskipTests

### 实现阿里云云效流水线 RuoYi-SpringBoot 项目自动化部署 #### 准备工作 为了在阿里云云效流水线上实现RuoYi-SpringBoot项目的自动化部署,需先完成一些准备工作。确保已创建好阿里云账号并开通了云效服务;同时,在本地环境中准备好待部署的Spring Boot应用源码以及Dockerfile文件用于构建镜像[^1]。 #### 创建仓库与分支策略 将RuoYi-SpringBoot工程推送到GitLab或其他支持Webhook功能的版本控制系统中去,并设置合理的分支管理策略以便于后续触发CI/CD流程。对于主要开发工作的master/main分支建议开启保护模式防止误操作影响生产环境稳定性[^2]。 #### 构建自定义Maven命令 针对特定需求定制maven打包指令,比如指定JDK版本、跳过测试用例执行等参数优化编译效率。此部分可通过`.mvn/jvm.config` 和 `.mvn/mvn.config` 文件来配置全局变量或者通过pipeline脚本动态传递给maven插件使用[^3]。 ```bash # .mvn/jvm.config -Xms512m -Xmx1024m # .mvn/mvn.config -DskipTests=true clean package ``` #### 编写Pipeline YAML配置文件 编写适用于当前场景下的持续集成管道描述文档(通常是yaml格式),明确定义各个阶段的任务列表及其依赖关系。下面是一个简单的例子展示了如何利用官方提供的Java模板快速搭建起一套完整的CICD体系结构: ```yaml version: 1.0 stages: - compile - test - build_image - deploy jobs: maven_compile_job: stage: compile steps: - mvn clean install -Dmaven.test.skip=true unit_test_job: stage: test script: - mvn test docker_build_push_job: image: registry.cn-hangzhou.aliyuncs.com/cloudnative/docker:latest stage: build_image only: changes: - '**/*.java' services: - docker:dind before_script: - export DOCKER_BUILDKIT=1 script: - echo "$DOCKER_PASSWORD" | docker login --username="$DOCKER_USERNAME" --password-stdin $REGISTRY_URL - cd ./ruoyi-cloud/ - docker build -t ${IMAGE_NAME}:${CI_COMMIT_REF_SLUG} . - docker push ${IMAGE_NAME}:${CI_COMMIT_REF_SLUG} kubernetes_deploy_job: type: deploy environment: name: production url: http://${K8S_SERVICE_IP}/api/v1/namespaces/${NAMESPACE}/services/${SERVICE_NAME}:http/proxy/ when: manual dependencies: - docker_build_push_job script: - apk add curl - curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl - chmod +x ./kubectl - mv ./kubectl /usr/local/bin/ - mkdir -p ~/.kube - echo "${KUBECONFIG}" >~/.kube/config - kubectl apply -f deployment.yaml ``` 上述代码片段实现了从源码拉取到最终发布上线整个过程中涉及到的关键环节控制逻辑表达[^4]。 #### Kubernetes集群中的资源对象声明 最后一步是在目标Kubernetes集群内部署应用程序所需的各类资源配置清单,如Deployment、Service、Ingress等API对象的具体属性设定。这通常保存在一个名为`deployment.yaml` 的文本文件里供kubctl工具读取解析后提交至apiserver处理请求。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: labels: app: ruoyi-springboot-app name: ruoyi-springboot-deployment spec: replicas: 3 selector: matchLabels: app: ruoyi-springboot-app template: metadata: labels: app: ruoyi-springboot-app spec: containers: - envFrom: - secretRef: name: db-secret image: 'registry.cn-hangzhou.aliyuncs.com/my-repo/ruoyi-springboot:${TAG}' livenessProbe: failureThreshold: 3 initialDelaySeconds: 40 periodSeconds: 10 successThreshold: 1 tcpSocket: port: 9090 name: ruoyi-springboot-container ports: - containerPort: 9090 --- apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: lb-wz9hjg**** labels: app: ruoyi-springboot-service name: ruoyi-springboot-service spec: externalTrafficPolicy: Cluster healthCheckNodePort: 30727 loadBalancerID: lb-wz9hjg**** ports: - nodePort: 30727 port: 80 protocol: TCP targetPort: 9090 selector: app: ruoyi-springboot-app sessionAffinity: None type: LoadBalancer ``` 以上就是关于如何借助阿里云云效平台实施RuoYi-SpringBoot项目的自动部署方案介绍[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值