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 のインストールと使い方について知らない友人は、「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、つまり、ログインできます;
# SpringBoot アプリケーション コードを Gitlab にアップロードすると、Gitlab の準備が整います。ここで注意が必要なのは、Gitlab を起動するときにホスト名を指定しないと、プロジェクトの HTTP アクセス アドレスがコンテナの ID になり、このアドレスを使用して Git リポジトリにアクセスできなくなることです。
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-runner コンテナーの内部に入ります。
docker exec -it gitlab-runner /bin/bash
次のコマンドを使用してランナーをコンテナに登録します;
gitlab-runner register
登録すると、対話型インターフェイスが表示され、登録アドレス、トークン、エグゼキュータのタイプ、その他の情報の入力を求められます。 . ssh executor はリモートから Linux コマンドを実行できるのでとても使いやすいのでオススメです!
登録が完了すると、次の内容の 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 設定で、ランナーが正常に登録されたことがわかります。
SpringBoot プロジェクトのパッケージ化には Maven が必要なので、最初にそれをサーバーにインストールする必要があります。
Maven Linux インストール パッケージをダウンロードします。ダウンロード アドレス: https://maven.apache.org/down...
ダウンロード後、以下のコマンドを指定したディレクトリに抽出します;
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"
JRE は CentOS にデフォルトでインストールされており、Maven を使用するには JDK をインストールする必要があります。
JDK 8 をダウンロードします。ダウンロード アドレス: https://mirrors.tuna.tsinghua...
ダウンロードが完了したら、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-runner采用的是ssh的执行器,它会登录到我们指定的服务器,执行我们在.gitlab-ci.yml中定义的script命令,在此之前还会先从Git仓库中获取代码,所以我们还需修改下服务器上的host文件;
vim /etc/hosts 192.168.7.134 git.macrozheng.com
接下来就是要把脚本提交到Git仓库上去,提交后会在Project->CI/CD->Pipelines中发现正在执行的任务;
打开Pipeline的详情页面,可以发现我们定义的两个任务都已经执行成功了;
打开Job的详情界面,我们可以看到任务执行过程中输出的日志信息;
如果你想手动执行Pipeline,而不是提交触发的话,可以在Pipelines页面点击Run Pipeline按钮即可;
运行成功后,可以通过如下地址访问项目:http://192.168.7.134:8088/swa...
如果你用Gitlab作为Git仓库的话,使用它的CI/CD功能来实现自动化部署确实很不错!安装一个轻量级gitlab-runner,编写简单的.gitlab-ci.yml脚本文件即可实现。其实我们之前以及介绍过很多种自动化部署方案,比如Jenkins、Gogs+Drone、Gitlab CI/CD,我们可以发现一个共同点,这些方案都离不开Linux命令。 所以说要想玩转自动化部署,还是得先玩转Linux命令!
相关视频教程推荐:Java视频教程
以上がGitlabのCI/CD機能をもう使わなくなったらアウトです。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。