当前位置: 首页 > news >正文

建设工程质量安全管理体系网站租用微信做拍卖网站

建设工程质量安全管理体系网站,租用微信做拍卖网站,衡阳seo优化报价,福州优化广告公司Gitlab runner的使用示例(二):Maven Docker 自动化构建与部署 在本篇文章中,我们将详细解析一个典型的 GitLab CI/CD 配置文件(gitlab-ci.yml),该文件主要用于通过 Maven 构建 Java 应用&…

Gitlab runner的使用示例(二):Maven + Docker 自动化构建与部署

在本篇文章中,我们将详细解析一个典型的 GitLab CI/CD 配置文件(gitlab-ci.yml),该文件主要用于通过 Maven 构建 Java 应用,并使用 Docker 容器化部署。

配置文件整体长这样:

image: maven:3.8.4-openjdk-17stages:- build- deployvariables:DOCKER_IMAGE: "achun-gallery-image"DOCKER_CONTAINER_NAME: "achun-gallery-container"# 构建阶段:Maven 打包
build-job:stage: buildscript:- mvn clean install -DskipTests- cd achun-gallery-app- mvn clean package -DskipTeststags:- m5_serviceonly:- mainartifacts:paths:- achun-gallery-app/target/**# 部署阶段:使用 Docker 启动项目
deploy-job:stage: deployscript:- docker stop $DOCKER_CONTAINER_NAME || true- docker rm $DOCKER_CONTAINER_NAME || true- cd achun-gallery-app- docker build -t $DOCKER_IMAGE .- docker run -d -v /data/logs/:/data/logs -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --restart always --name $DOCKER_CONTAINER_NAME -p 9519:9519 $DOCKER_IMAGEtags:- m5_serviceonly:- maindependencies:- build-jobartifacts:paths:- achun-gallery-app/target/**

下面会逐步解释各个部分。

1. 基本镜像选择

image: maven:3.8.4-openjdk-17

在 GitLab CI/CD 中,image 用于指定 CI/CD 流水线运行时使用的基础镜像。这里我们选择的是 maven:3.8.4-openjdk-17,这是一个预装了 Maven 3.8.4 和 OpenJDK 17 的官方 Docker 镜像,适合构建基于 Java 的 Maven 项目。

解释:

  • Maven:负责项目的构建与管理,执行 mvn 命令。
  • OpenJDK 17:项目使用的 Java 版本,确保代码可以在此 JDK 上编译和运行。

2. 定义阶段(stages)

stages:- build- deploy

在 GitLab CI/CD 中,stages 定义了流水线的阶段。这个配置文件中包含两个阶段:

  • build:构建 Java 项目。
  • deploy:部署已经构建的项目。

流水线会按顺序依次执行这些阶段。

3. 定义全局变量

variables:DOCKER_IMAGE: "achun-gallery-image"DOCKER_CONTAINER_NAME: "achun-gallery-container"

variables 定义了 CI/CD 流水线中使用的全局变量。在这个配置文件中:

  • DOCKER_IMAGE:指定 Docker 镜像的名称为 achun-gallery-image
  • DOCKER_CONTAINER_NAME:指定 Docker 容器的名称为 achun-gallery-container

这些变量会在后续的 deploy 阶段使用,方便代码维护和复用。

4. 构建阶段:Maven 打包

build-job:stage: buildscript:- mvn clean install -DskipTests- cd achun-gallery-app- mvn clean package -DskipTeststags:- m5_serviceonly:- mainartifacts:paths:- achun-gallery-app/target/**

解释:

  • stage:指定该作业属于 build 阶段。
  • script:定义构建项目时执行的命令:
    • mvn clean install -DskipTests:清理项目、安装依赖并编译项目,跳过测试。
    • cd achun-gallery-app:进入子目录 achun-gallery-app,这是项目的主要代码所在目录。
    • mvn clean package -DskipTests:再次清理项目,并打包应用程序的可执行文件(如 .jar 文件),跳过测试。
  • tags:指定该作业运行在哪些 Runner 上,此处 m5_service 是 GitLab Runner 的标签,表明该作业将被分配到具备此标签的 Runner 上运行。
  • only:限制该作业仅在 main 分支上执行。
  • artifacts:指定构建产物的路径。在这里,它保存了 achun-gallery-app/target/ 目录下的所有文件,主要是打包后的 .jar 文件,供后续的 deploy 阶段使用。

Maven 命令:

  • mvn clean install:会下载依赖项并将应用编译为 .class 文件。
  • mvn package:创建最终的可执行 .jar 文件,用于部署。

5. 部署阶段:使用 Docker 启动项目

deploy-job:stage: deployscript:- docker stop $DOCKER_CONTAINER_NAME || true- docker rm $DOCKER_CONTAINER_NAME || true- cd achun-gallery-app- docker build -t $DOCKER_IMAGE .- docker run -d -v /data/logs/:/data/logs -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --restart always --name $DOCKER_CONTAINER_NAME -p 9519:9519 $DOCKER_IMAGEtags:- m5_serviceonly:- maindependencies:- build-jobartifacts:paths:- achun-gallery-app/target/**

解释:

  • stage:此作业属于 deploy 阶段。
  • script:定义了部署的命令步骤:
    1. docker stop $DOCKER_CONTAINER_NAME || true:尝试停止正在运行的同名容器。如果容器不存在,则忽略错误。
    2. docker rm $DOCKER_CONTAINER_NAME || true:删除同名容器,确保新的容器可以被启动。
    3. cd achun-gallery-app:进入项目目录。
    4. docker build -t $DOCKER_IMAGE .:基于当前目录的 Dockerfile 构建一个新的 Docker 镜像,名称为 achun-gallery-image
    5. docker run -d -v /data/logs/:/data/logs -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --restart always --name $DOCKER_CONTAINER_NAME -p 9519:9519 $DOCKER_IMAGE:运行一个新的 Docker 容器,指定容器的日志路径和时间设置,并将容器端口 9519 映射到主机的 9519 端口。

详细说明:

  • docker stop/rm:先停止并移除同名的现有容器,避免名称冲突。

  • docker build:使用当前目录中的 Dockerfile 构建新的 Docker 镜像。

  • docker run

    • -d:后台运行容器。
    • -v:挂载日志目录和时间设置,确保容器中的日志可以与主机同步,并保持主机的时区设置。
    • --restart always:保证 Docker 容器异常退出后自动重启。
    • -p 9519:9519:将容器的端口映射到主机上,允许外部访问应用。
  • tags:同样使用 m5_service 标签来指定 Runner。

  • only:限制部署阶段只在 main 分支上执行,确保代码已经被合并到主分支后才会进行生产环境的部署。

  • dependencies:定义作业的依赖关系,deploy-job 依赖于 build-job,确保部署是在构建成功后进行的。

  • artifacts:再一次定义打包产物的路径,以确保 Docker 部署时可以获取到正确的构建文件。

总结

这个 GitLab CI/CD 配置文件为 Java 项目定义了一个自动化的构建和部署流程。通过 Maven 进行代码编译和打包,再通过 Docker 容器化应用,并在服务器上启动。整个过程包含了项目的编译、打包、镜像构建与容器部署,自动化程度高且维护方便。

核心步骤:

  1. 构建阶段:利用 Maven 清理、编译并打包项目。
  2. 部署阶段:使用 Docker 镜像化应用并启动容器,映射日志和时间设置,确保应用的持久运行。

通过 GitLab CI/CD 自动化管道,我们可以确保项目的持续集成与交付(CI/CD),大大提升开发和运维效率。

参考链接

  • GitLab CI/CD 官方文档
  • Maven 官方文档
  • Docker 官方文档

在这里插入图片描述

http://www.yayakq.cn/news/156887/

相关文章:

  • 做公益做的好的的网站网站建设信息介绍
  • 首次做淘宝客网站要安装程序吗在哪个网站订酒店做申根签证
  • 网站资料库建设的功能需求typecho wordpress比较
  • 专业的做pc端网站鸿扬家装公司简介
  • 南京做网站建设的公司排名客户跟进系统 免费
  • WordPress又拍云联盟代码南宁企业网站seo
  • 漳州网站建设 林做的网站在百度上搜不出来
  • 做网站维护要什么专业重庆市场所码图片
  • 网站建设哪专业口碑宣传
  • wordpress 站内信国家企业信用信息网查询
  • 宝山网站建设服务线上推广方案怎么写
  • 无锡专业网站制作网站建设中 意思
  • 网站建设模板可用吗wordpress插件 一键登录
  • 使用vue做简单网站教程寻找东莞微信网站建设
  • 网站建设策划书编制微信公众平台微网站怎么做
  • 手机网站关键词排名查询网站的搭建流程
  • 郑州网站顾问热狗网vs2010网站开发示例
  • 免费企业网站源码生成wordpress 随机阅读数
  • 成绩分析智能网站怎么做外贸企业网站设计公司
  • 怎样做后端数据传输前端的网站网站建设艾瑞市场分析
  • 对接标准做好门户网站建设重庆企业网站推广代理
  • 厦门的企业网站网站建设分析魅族
  • 淮安市网站企业网站营销的实现方式
  • 网站建设证据保全wordpress答题跳转
  • 东莞模板网站设计wordpress 文章标题外链
  • 如何购买网站流量北京市建设工程发包承包交易中心网站
  • 特效素材免费下载网站详情页设计思路遵循哪五个营销环节
  • 做推广效果哪个网站好公司网站一般用什么软件做
  • 关于网站建设的广告语做网站环境配置遇到的问题
  • 万网网站建设选哪个好做摄影网站的公司