如何在Gitlab上使用Shell和Docker Executor进行Java应用的CI和CD

605 阅读6分钟

在Gitlab上使用Shell和Docker Executor进行Java应用的CI和CD

通过GitLab Runner ,你可以使用各种执行器来实现持续集成(CI)/持续交付(CD)。另一方面,Shell和Docker的应用更为广泛,我们可以更容易地用这些运行器配置仓库。这些运行器可以根据你的要求和可用资源来选择。

简介

本文的代码是用bash编写的,重点是Java Linux应用程序、Shell和Docker执行器。可以用bash脚本来构建和测试该应用程序。

理解shell和Docker执行器

Shell执行器是一个基本的执行器,可以帮助你在安装了GitLab Runner的电脑上本地构建解决方案。因为GitLab Runner是安装在Linux机器上的,所以还必须安装基本的软件。

Docker执行器是一个强大的工具,自带很多软件,可以通过镜像访问。使用这种执行器的好处是,我们将不必手动安装任何软件,因为一切都将由Docker处理。Docker通过从Docker Hub获取所需的镜像来完成这一工作。这样做的消极一面是,出于安全原因,这种通信在一些组织中可能会受到限制。如果是这样,Shell Executor是最理想的选择。

在Shell Executor上的Java实现

要求

这些是必须安装在 Linux 计算机上的一些基本程序。然而,它可以根据编译脚本进行调整,必要时你可能需要获得额外的软件。

以下是软件要求。

  1. Git- 第一个标准是将修改的内容提交给GitLab。这是一个版本管理系统,可以跟踪文件随时间变化的情况。

  2. Apache Ant- 这是一个协助创建进程以及生成项目的jar文件的工具。它提供了额外的项目信息,这些信息应该包含在jar中。

  3. JDK- 你需要在你选择的机器上安装一定版本的JDK,以便创建jar文件。例如,OpenJDK-8是一个合适的Java开发工具包。

路径配置

如果安装成功后没有配置所安装软件的路径。

可以通过运行下面的命令来完成。

Variable /  path
File
  • Git。如果Linux机器中的Git路径还没有设置,请设置它。你可以通过检查你所使用的git类型。export Git = /usr/bin/git
  • javaexport JAVA=/usr/bin/java 可以检查你所使用的java的类型。
  • apache Antexport ANT=/usr/bin/ant 可以检查用哪种Ant。
  • permission。在运行build.xml ,允许它:chmod -R 777*。
  • Build.xml。它将根据其包含的数据创建项目和jar。
  • .GitLab-ci.yml。这个文件包含了所有的CI/CD设置,包括软件和脚本路径,应该位于项目的根目录中。你可以在本节中描述这个仓库应该如何工作。在把这个文件放进根目录之前,请检查这个文件是否是一个有效的yml文件。

设置GitLab Runner

按照下面的说明,下载并配置GitLab Runner。

  1. 用下面的命令在Linux电脑上安装GitLab Runner。
sudo chmod +x /usr/local/bin/gitlab-runner
  1. 使用下面的命令允许它执行。
sudo chmod +x /usr/local/bin/gitlab-runner
  1. 使用下面的命令建立一个GitLab CI。
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
  1. 使用下面的命令将其安装并作为服务运行。
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
  1. 使用下面的命令来启动GitLab Runner。
sudo GitLab-runner start
  1. 在注册存储库之前,使用下面的命令停止GitLab Runner。
sudo gitlab-runner stop
  1. 要注册一个仓库,在GitLab Runner被正确停止后,在终端运行以下命令。
sudo gitlab-runner register
  1. 当使用GitLab Runner注册一个仓库时,你必须回答以下问题。
  • 为你的GitLab实例输入以下URL。每个组织的格式都会不同,但都是类似于http://gitlab.example.com
  • 路径。进入你的GitLab账户并登录。展开运行器,选择你想用运行器设置CI/CD注册的存储库。
  • 对于这个运行器,输入gitlab-ci token :这将是每个项目的唯一令牌,注册时需要,可以在这里找到。
  • 输入这个运行器的GitLab-ci描述。把运行者的名字(任何名字)。这将有助于你回忆起谁在跑步。
  • 对于这个运行者,填写以下gitlab-ci标签。这是可选的,当yml文件中的某个标签可用时,启动GitLab runner。
  • 执行者来了。你会得到一个执行器的列表供你挑选,然后是shell类型(因为GitLab runner会运行我们的系统)。
  1. 成功注册后,使用以下命令运行GitLab Runner。
sudo GitLab-runner start

为了确保GitLab Runner已经注册了仓库,并确保运行器正在运行,请进入GitLab账户→选择你想用runner注册的仓库→设置→CI/CD→展开runner。

一个绿色的圆圈将出现,这个项目的活跃运行者会显示一个信息。

如果这个圆圈是灰色的,说明运行器还没有启动,必须重新启动。

Linux版GitLab运行器命令

  • Sudo GitLab-runner register- 必须使用 GitLab Runner 来注册项目。
  • Sudo GitLab-runner register- 开始运行器。
  • Sudo GitLab-runner stop- 必须停止运行器。
  • Sudo GitLab-runner status- 了解 GitLab-runner 的运行状况。
  • Sudo GitLab-runner unregister -name test-runner- 取消项目的运行器注册,用你的运行器名称替换test-runner,你可以在config.toml 文件(你的GitLab-runner所在的位置)中找到。
  • Sudo GitLab-runner unregister -Urlgitlab.example.com/-token t0k3n- 可以用一个URL和一个token来删除运行器。
  • Sudo GitLab-runner unregister -all-runners所有的运行器都应该被取消注册
  • Sudo GitLab-runner restart- GitLab Runner服务被停止,然后用此命令重新启动。
  • Sudo GitLab-runner uninstall- 该命令将GitLab Runner作为一项服务停用并卸载它。
  • sudo GitLab-runner exec- 运行此命令以获得可用的执行器列表。
  • sudo GitLab-runner -help- 通过运行该命令,你可以看到最近的命令列表。
  • sudo GitLab-runner run -help- 可以看到环境变量的名称。
  • sudo GitLab-runner -debug- 以调试模式运行一个命令。
  • Sudo GitLab-runner exec shell- 查看shell选项的完整列表。

gitlab-ci.yml_shell执行器。

在shell执行器模式下,.gitlab-ci.yml 的内容如下所示。

改变它以适应要求。

stages:
 - build
 - execute

build:
 stage: build
 script:
   - ant -f build.xml

 artifacts:
   paths:
   - abc.jar

execute:
 stage: execute
 script:
  - pwd
  - cd scripts
  - chmod -R 777 *
  - pwd
  - ./run.sh

Docker执行器上的Java实现

不需要手动安装任何软件,因为所有东西都会从Docker容器中提取。不过,你可以通过在yml文件中输入名称并导出路径来安装基本软件。

要在Docker执行器模式下启动GitLab运行器,请进入GitLab运行器设置(上文),选择Docker而不是shell。

.gitlab-ci.yml_ Docker executor

在Docker执行器模式下,.gitlab-ci.yml 的内容列在下面。

如果有必要,请修改它。

image: ubuntu:latest

stages:
 - build
 - execute

before_script:
 - echo "Before script section"
 - apt-get update && apt-get -y install openjdk-8-jdk  && apt-get -y install ant


build:
 stage: build
 script:
   - ant -f build.xml

 artifacts:
   paths:
   - abc.jar

execute:
 stage: execute
 script:
  - pwd
  - cd scripts
  - chmod -R 777 *
  - pwd
  - ./runtest.sh

总结

在本教程中,我们已经了解了路径配置、GitLab运行程序以及所使用的命令。有了这些知识,我们就可以使用Docker和shell执行器在Java应用程序中自由实现持续集成/持续交付。