📅  最后修改于: 2023-12-03 15:23:08.964000             🧑  作者: Mango
本文将介绍如何在 GitLab 上使用 Shell 和 Docker Executor 实现 Java 应用程序的持续集成和持续部署(CICD)。
GitLab 是一个基于 Git 的版本控制系统和合作工具,可以让团队开发更加高效。GitLab 提供了许多功能,包括代码存储库、问题追踪、持续集成和持续部署等。
Shell Executor 是 GitLab Runner 提供的一种执行器,可以在 GitLab CI / CD 中运行 shell 脚本。
Docker Executor 是 GitLab Runner 提供的另一种执行器,可以在Docker容器中运行自定义镜像。这可以确保你的编译和测试环境与你的目标部署环境保持一致。
在本文中,我们将使用 Shell Executor 和 Docker Executor 来实现 Java 应用程序的 CICD。
Java 应用程序的 CICD 流程通常包括以下步骤:
现在,我们就开始实现 Java 应用程序的 CICD。
首先,我们需要准备一个 Docker 镜像,以便在 GitLab Runner 中使用。你可以使用 Dockerfile 创建一个自定义镜像,也可以使用现有的镜像。
在本文中,我们将使用 openjdk:11-jre 镜像来构建我们的 Java 应用程序并运行测试用例。在运行测试用例之前,需要将应用程序包复制到 Docker 容器中。以下是 Dockerfile 的示例:
FROM openjdk:11-jre
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
接下来,我们需要添加一个 GitLab Runner。GitLab Runner 是一个代理程序,它运行 CI / CD pipeline 并执行定义的脚本。
你可以在官方文档中找到如何安装 GitLab Runner 的指南。或者,你可以选择使用 GitLab.com 的共享 Runner。
现在,我们将设置 GitLab CI / CD pipeline,用于构建、测试和部署 Java 应用程序。
以下是一个示例的 .gitlab-ci.yml 文件:
stages:
- build
- test
- deploy
variables:
DOCKER_DRIVER: overlay
IMAGE_NAME: registry.gitlab.com/<your-gitlab-username>/<your-project-name>
build:
stage: build
image: openjdk:11-jdk
script:
- ./gradlew build -x test
- docker build -t $IMAGE_NAME .
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
- docker push $IMAGE_NAME
test:
stage: test
image: docker:19.03.12
services:
- docker:19.03.12-dind
script:
- docker pull $IMAGE_NAME
- docker run -d --rm --name my-app -p 8080:8080 $IMAGE_NAME
- sleep 10
- docker logs my-app
- curl -I localhost:8080
- docker stop my-app
deploy:
stage: deploy
image: docker:19.03.12
services:
- docker:19.03.12-dind
script:
- docker pull $IMAGE_NAME
- docker run -d --name my-app -p 80:8080 $IMAGE_NAME
这个文件定义了三个阶段:build、test 和 deploy。在构建阶段,我们使用 Gradle 构建应用程序,并将其打包到 Docker 镜像中。Docker 镜像然后被推送到 GitLab 的镜像仓库中。
在测试阶段,我们使用 Docker 运行容器,然后运行测试用例。在运行测试之前,我们需要拉取镜像。
在部署阶段,我们仅拉取 Docker 镜像并使用 Docker 运行容器。
现在,当你提交代码并推到 GitLab 时,GitLab Runner 将自动运行 CI / CD pipeline。
你可以浏览运行的管道,了解构建、测试和部署的进度和状态。当运行完成时,你可以在服务器上访问你的应用程序,确保它正在正确运行。
在本文中,我们介绍了如何在 GitLab 上使用 Shell 和 Docker Executor 在 Java 应用程序(Linux)中实现 CICD。我们讨论了 CICD 流程、设置 Docker 镜像、添加 GitLab Runner 和编写 pipeline 脚本。
通过使用 GitLab Runner 和 Docker,可以确保代码的构建、测试和部署过程可靠和可重复。这有助于团队更加高效地开发和部署应用程序。