ホームページ  >  記事  >  Java  >  GitlabのCI/CD機能をもう使わなくなったらアウトです。

GitlabのCI/CD機能をもう使わなくなったらアウトです。

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-07-30 17:12:123512ブラウズ

GitlabのCI/CD機能でも自動デプロイが実現できることを最近知りましたが、使い方はとても簡単です! Git ウェアハウスとして Gitlab を使用している場合は、その CI/CD 機能を試してみるとよいでしょう。この記事では、Gitlab の CI/DI 機能を実践するための例として SpringBoot の自動デプロイメントを引き続き取り上げます。

SpringBoot実践型電子商取引プロジェクトモール(50kスター)アドレス:https://github.com/macrozheng/mall

インストール

GitlabのCI/CD機能により実現自動デプロイメントを行うには、Gitlab、Gitlab Runner、Maven などのサービスをインストールする必要があります。

Gitlab のインストール

まず、Gitlab をインストールしましょう。Gitlab のインストールと使い方について知らない友人は、「10 分で独自の Git ウェアハウスを構築する」を参照してください。

次のコマンドを使用して、Gitlab サービスを実行します。ここで注意する必要があるのは、ドメイン名を介して Gitlab にアクセスできるように、hostname 属性が追加されていることです (不要なトラブルを避けるため)。環境変数は直接設定可能 Gitlab の root アカウントのパスワード;

docker run --detach \
  --hostname git.macrozheng.com \
  --publish 10443:443 --publish 1080:80 --publish 1022:22 \
  --name gitlab \
  --restart always \
  --volume /mydata/gitlab/config:/etc/gitlab \
  --volume /mydata/gitlab/logs:/var/log/gitlab \
  --volume /mydata/gitlab/data:/var/opt/gitlab \
  -e GITLAB_ROOT_PASSWORD=12345678 \
  gitlab/gitlab-ce:latest

ドメイン名 git.macrozheng.com を介して Gitlab にアクセスする必要があります。ドメイン名をお持ちでない場合は、それを行うことができますマシンのホスト ファイルを変更することで;

192.168.7.134 git.macrozheng.com

Gitlab はポート 1080 で実行されるため、ポートを追加せずにアクセスしたい場合は、Nginx をリバース プロキシとして使用できます。 Nginxの「知ってはいけないNginxの素晴らしい使い方」が読めます! 》を実行し、Nginx 設定フォルダーに git.conf 設定ファイルを追加します。内容は次のとおりです。

server {
    listen       80; # 同时支持HTTP
    server_name  git.macrozheng.com; #修改域名

    location / {
        proxy_pass   http://192.168.7.134:1080; # 设置代理服务访问地址
        index  index.html index.htm;
    }

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

その後、ドメイン名 git.macrozheng.com を通じて Gitlab にアクセスし、アカウントのパスワード root を入力します。 : 12345678、つまり、ログインできます;

GitlabのCI/CD機能をもう使わなくなったらアウトです。

# SpringBoot アプリケーション コードを Gitlab にアップロードすると、Gitlab の準備が整います。ここで注意が必要なのは、Gitlab を起動するときにホスト名を指定しないと、プロジェクトの HTTP アクセス アドレスがコンテナの ID になり、このアドレスを使用して Git リポジトリにアクセスできなくなることです。

GitlabのCI/CD機能をもう使わなくなったらアウトです。

Gitlab Runner のインストール

Gitlab は単なるコード ウェアハウスです。CI/CD を実装したい場合は、gitlab-runner をインストールする必要があります。ランナーは Gitlab に相当し、タスクの実行者であり、Gitlab はタスクを実行する必要があるときにこれを呼び出します。

まず、gitlab-runner の Docker イメージをダウンロードし、alpine-bleeding を選択します。このバージョンは非常にコンパクトです。

docker pull gitlab/gitlab-runner:alpine-bleeding

次のコマンドを使用して gitlab-runner を実行します;

docker run --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mydata/gitlab-runner:/etc/gitlab-runner \
-d gitlab/gitlab-runner:alpine-bleeding

この時点で gitlab-runner のコンテナ ログを確認すると、config.toml ファイルに次のエラーが見つかります。が見つかりません。この問題は心配しないでください。gitlab-runner を Gitlab に登録すると、このファイルは自動的に生成されます。

ERROR: Failed to load config stat /etc/gitlab-runner/config.toml: no such file or directory  builds=0

次に、gitlab-runner を Gitlab に登録し、Project-> を開く必要があります。設定 -> CI/CD 機能、ランナー登録に必要なアドレスとトークンを取得します;

GitlabのCI/CD機能をもう使わなくなったらアウトです。

次に、次のコマンドを使用して gitlab-runner コンテナーの内部に入ります。

docker exec -it gitlab-runner /bin/bash

次のコマンドを使用してランナーをコンテナに登録します;

gitlab-runner register

登録すると、対話型インターフェイスが表示され、登録アドレス、トークン、エグゼキュータのタイプ、その他の情報の入力を求められます。 . ssh executor はリモートから Linux コマンドを実行できるのでとても使いやすいのでオススメです!

GitlabのCI/CD機能をもう使わなくなったらアウトです。

登録が完了すると、次の内容の config.toml ファイルが生成されていることがわかります。将来的にランナーの構成を変更したい場合は、このファイルを直接変更するだけです。

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-runner"
  url = "http://192.168.7.134:1080/"
  token = "c2kpV6tX6woL8TMxzBUN"
  executor = "ssh"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.ssh]
    user = "root"
    password = "123456"
    host = "192.168.7.134"
    port = "22"

Gitlab の CI/CD 設定で、ランナーが正常に登録されたことがわかります。

GitlabのCI/CD機能をもう使わなくなったらアウトです。

Maven のインストール

SpringBoot プロジェクトのパッケージ化には Maven が必要なので、最初にそれをサーバーにインストールする必要があります。

Maven Linux インストール パッケージをダウンロードします。ダウンロード アドレス: https://maven.apache.org/down...

GitlabのCI/CD機能をもう使わなくなったらアウトです。

ダウンロード後、以下のコマンドを指定したディレクトリに抽出します;

cd /mydata
tar -zxvf apache-maven-3.8.1-bin.tar.gz

/etc/profile ファイルを変更し、環境変数設定を追加します:

export MAVEN_HOME=/mydata/apache-maven-3.8.1
export PATH=$PATH:$MAVEN_HOME/bin

Maven のバージョンを確認して、インストールが成功したかどうかをテストします。

mvn -v
Maven home: /mydata/apache-maven-3.8.1
Java version: 1.8.0_292, vendor: AdoptOpenJDK, runtime: /mydata/java/jdk1.8/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

JDK のインストール

JRE は CentOS にデフォルトでインストールされており、Maven を使用するには JDK をインストールする必要があります。

JDK 8 をダウンロードします。ダウンロード アドレス: https://mirrors.tuna.tsinghua...

GitlabのCI/CD機能をもう使わなくなったらアウトです。

ダウンロードが完了したら、JDK を次の場所に抽出します。指定されたディレクトリ;

cd /mydata/java
tar -zxvf OpenJDK8U-jdk_x64_linux_xxx.tar.gz
mv OpenJDK8U-jdk_x64_linux_xxx.tar.gz jdk1.8

/etc/profile ファイルに環境変数 JAVA_HOME を追加します。

vi /etc/profile
# 在profile文件中添加
export JAVA_HOME=/mydata/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
# 使修改后的profile文件生效
. /etc/profile

使用

一切准备就绪,接下来通过Gitlab的CI/CD功能就可以实现SpringBoot应用的自动化部署了!

首先在项目的根目录下添加.gitlab-ci.yml文件,定义了两个任务,一个任务会将应用代码打包成Jar包并复制到指定目录,另一个任务会通过运行脚本run.sh打包应用的Docker镜像并运行;

# 打包任务
build-job:
  stage: build
  # 指定标签,只有具有该标签的runner才会执行
  tags:
    - docker
  script:
    # 使用Maven打包
    - mvn clean package
    # 将jar包、Dockerfile、运行脚本复制到指定目录
    - cp target/mall-tiny-gitlab-1.0-SNAPSHOT.jar /mydata/build/mall-tiny-gitlab-1.0-SNAPSHOT.jar
    - cp Dockerfile /mydata/build/Dockerfile
    - cp run.sh /mydata/build/run.sh

# 部署任务
deploy-job:
  stage: deploy
  tags:
    - docker
  script:
    # 进入指定目录并执行运行脚本
    - cd /mydata/build
    - chmod +x run.sh
    - ./run.sh

这里值得一提的是,默认情况下runner只会执行具有相同标签的Job,由于我们对Job和runner都设置了标签为docker,所以我们这里是可以执行的。如果你没有设置标签的话,需要在runner的编辑界面设置下让runner可以执行没有标签的Job;

GitlabのCI/CD機能をもう使わなくなったらアウトです。

由于我们的gitlab-runner采用的是ssh的执行器,它会登录到我们指定的服务器,执行我们在.gitlab-ci.yml中定义的script命令,在此之前还会先从Git仓库中获取代码,所以我们还需修改下服务器上的host文件;

vim /etc/hosts
192.168.7.134 git.macrozheng.com

接下来就是要把脚本提交到Git仓库上去,提交后会在Project->CI/CD->Pipelines中发现正在执行的任务;

GitlabのCI/CD機能をもう使わなくなったらアウトです。

打开Pipeline的详情页面,可以发现我们定义的两个任务都已经执行成功了;

GitlabのCI/CD機能をもう使わなくなったらアウトです。

打开Job的详情界面,我们可以看到任务执行过程中输出的日志信息;

GitlabのCI/CD機能をもう使わなくなったらアウトです。

如果你想手动执行Pipeline,而不是提交触发的话,可以在Pipelines页面点击Run Pipeline按钮即可;

GitlabのCI/CD機能をもう使わなくなったらアウトです。

运行成功后,可以通过如下地址访问项目:http://192.168.7.134:8088/swa...

GitlabのCI/CD機能をもう使わなくなったらアウトです。

总结

如果你用Gitlab作为Git仓库的话,使用它的CI/CD功能来实现自动化部署确实很不错!安装一个轻量级gitlab-runner,编写简单的.gitlab-ci.yml脚本文件即可实现。其实我们之前以及介绍过很多种自动化部署方案,比如Jenkins、Gogs+Drone、Gitlab CI/CD,我们可以发现一个共同点,这些方案都离不开Linux命令。 所以说要想玩转自动化部署,还是得先玩转Linux命令!

相关视频教程推荐:Java视频教程

以上がGitlabのCI/CD機能をもう使わなくなったらアウトです。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。