blog

GitLab CI + Docker 継続的インテグレーションマニュアル

伝統的なソフトウェア開発では、コードの統合は通常、全員が作業を終えた後にプロジェクトの終了間際に行われ、多くの時間と労力がかかります。継続的インテグレーションとは、コードのビルド、テスト、統合をより定...

May 27, 2020 · 4 min. read
シェア

従来のソフトウェア開発では、コードの統合は通常、全員が作業を終えた後のプロジェクト終了間際に行われ、多くの時間と労力がかかっていました。継続的インテグレーションは、コードのビルド、テスト、統合をより定期的に行うために、統合フェーズをソフトウェア開発フェーズに置くプラクティスです。

「継続的インテグレーションはバグをなくすのではなく、バグを非常に見つけやすくし、修正しやすくするものです。

継続的インテグレーションによって、開発者が新しいコードをコミットするとすぐに、ビルド、ユニットテスト、テストが可能になります。そこからテスト結果を使用して、新しいコードや環境設定が元のコードや他の開発者のコードや環境設定と正しく統合されるかどうかを判断することができます。

GitLab CIはすでにGitLabに統合されているので、プロジェクトに.gitlab-ci.ymlファイルを追加し、継続的インテグレーション用のRunnerを追加するだけです。また、GitLabがアップグレードされるにつれて、GitLabはますます強力になっていきます。

CI

docs.gitlab.com/runner/inst...CI操作にはGitLab Runnerのインストールが必要で、上記のリンク先には様々なインストール方法が紹介されていますが、この記事ではdockerによるインストール方法を紹介します。

docker pull gitlab/gitlab-runner:latest
docker run -d --name gitlab-runner --restart always 
 -v /var/run/docker.sock:/var/run/docker.sock 
 -v /srv/gitlab-runner/config:/etc/gitlab-runner 
 gitlab/gitlab-runner:latest

docker exec gitlab-runner -it bash javaとmavenをインストールしてください。

コンテナ内にJavaとMavenをインストール

wget https://..///-/---..gz
wget https://....///-/..//--..-..gz
tar -zxvf jdk-8u201-linux-x64.tar.gz mv jdk1.8.0_201
tar -xvf apache-maven-3.6.3-bin.tar.gz

環境変数の設定

vim /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_201
export MAVEN_HOME=/opt/apache-maven-3.6.3
export PATH=${JAVA_HOME}/bin:${MAVEN_HOME}/bin:${PATH}
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

システム設定ファイルの再読み込み: source /etc/profile

プロジェクトのCI利用方法

.gitlab-ci.ymlファイルはプロジェクトのリポジトリのルートディレクトリに保存され、GitLab CI/CDのPipelineを定義するために使われます。これは本当にただの設定ファイルで、理解するのはとても簡単ですが、Pipelineの概念と.gitlab-ci.ymlファイルの設定方法を理解する必要があります。

プロジェクトの .gitlab-ci.yml ファイルを以下の内容で作成します。

build:
 script: "pwd && mvn install"

パーミッション拒否のプロンプトが表示されたり、mvnコマンドのプロンプトが表示されたりする場合は、自分で作成したディレクトリにmavenをインストールしており、インストールパスに問題があることが原因です。/etc/gitlab-runner/config.toml主な理由は、gitlab-runnerの設定ファイル.gitlab-ci.ymlスクリプトスクリプトの実行では、ユーザーが唯一の/ホーム/ gitlab-runnerフォルダ物事の下にアクセスすることができますgitlab-runnerであるため、他の場所は、いくつかのコマンドを実行する場合は、ソリューション内のdockerを変更することができます!

vi /etc/gitlab-runner/config.toml
## コンテンツを追加する
[runners.docker]
 tls_verify = false
 image = "latest"
 privileged = true
 disable_cache = false
 volumes = ["/cache"]

CIランナーを実行するためのGitLabの設定

下のイメージからわかるように、4つの方法があるので、ここでは手動で設定します。
今回はDockerを使ったインストール方法を選択したので、docker to executeに以下の名前を入力し、イメージの2番目と3番目の項目のlinkとtokenを設定します。
gitlab-ci-multi-runner register

プロンプトに従って、2番目と3番目の項目のurlとtokenを入力します。

セットアップの成功が確認できます。

api経由でCIを起動

最後のcrulコマンドをコピーして自動ビルドを実行します。 CIは新しいコードがコミットされたときにもトリガーされます。

Read next

Java juc メモ [1] - atomic パッケージ

アトミックパッケージの下のパッケージは、クラスの原子操作の可能な限りロックフリーの実装として並行シナリオのシリーズを提供し、コアのアイデアは、CASを使用することです+軽量楽観的ロックのループの実装は、並行競合の場合には熾烈な効率ははるかに実装をロックするよりも良くなりますされていません。JCPのJSR-166実験によるStriped64に加えて...

May 27, 2020 · 7 min read