私は何の成功もなしに実験してきましたが、LinuxでホストされているGitlabを実行しており、CI機能を回避しようとしています。
Gitlabのドキュメントによると、Trvis-CIのGitlab実装である.gitlab-ci.yml
ファイルを作成するだけです。今ではその外観から.gitlab-ci.yml
で多くのことを達成できますが、多くのドキュメントはRubyおよび他の言語を参照しています。 Java Mavenプロジェクトのビルド方法については何も言われていません。
Javaで簡単なアプリケーションを構築するにはどうすればよいですか?共有ランナーを使用できますか、または特定のランナーを使用する必要がありますか?その場合、どのランナー実装を選択する必要がありますか:ssh、docker、またはshell?それでは、少なくともMavenでプロジェクトをビルドするために、.gitlab-ci.yml
ファイルに何を入れるべきですか?
Dockerランナーの登録 および 公式のMaven Dockerイメージ のいずれかを使用します。たとえば、maven:3-jdk7
ファイルの.gitlab-ci.yml
:
image: maven:3-jdk-7
build:
script: "mvn install -B"
-B
flag に注意してください。これは非インタラクティブな使用に推奨されます。
私が理解している限りでは、ランナーが共有されているか特定であるかは問題ではありません。
ここに少し情報を追加したいと思います。最初に、共有された特定のランナーに関する混乱を明確にしましょう。
Shared Runner:その名前の通り、共有ランナーはビルドプロセスフローインスタンスであり、インストールされたgitlabインスタンス内のすべてのプロジェクトのジョブを実行するために使用できますAllowed Shared runnersオプションが有効になっています。もちろん、そのためには管理者権限が必要です。現在のgitlabのドキュメントによると、管理者権限でのみ使用して共有ランナーを定義できます。
specific runnerこの種のランナーは、1つのプロジェクトのジョブのみを実行します。
また、これらは、プロジェクトのランナーを選択する際に留意すべきいくつかの重要なポイントです。
ここで、プロジェクトに適切なエグゼキューターを選択するには、gitlabランナーで利用可能なすべてのエグゼキューターを鳥瞰することが非常に重要です。 Gitlabは here でニースのドキュメントを提供することにより、この仕事を簡単にしました。
ランナーとさまざまなエグゼキューターについて詳しく知りたい場合は、この記事から始めることをお勧めします Gitlab Runner
Gitlab CIでJavaプロジェクトをセットアップしようとしてかなりの時間を費やしました。ある程度の成功を収めて機能しました。 rolveが述べたように、最も簡単な解決策は公式リポジトリの画像を使用することです: https://hub.docker.com/_/maven
ただし、プロジェクトの依存関係を取得するときにビルドがタイムアウト要求を取得する原因となった企業プロキシがあります。私は多くの解決策を試し、最終的にこの投稿に出会いました: https://gitlab.com/gitlab-org/gitlab-ce/issues/15167 。
投稿自体は、ビルド間でアクセスできるローカルリポジトリにダウンロードされた依存関係をキャッシュするようにMavenをセットアップすることに関するものです。考えは、in。gitlab-ci.ymlでローカルMaven構成ファイルを記述して、キャッシュディレクトリとプロキシをセットアップできるということです。
before_script:
-echo '<settings
xmlns="http://maven.Apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/SETTINGS/1.0.0
https://maven.Apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/cache/.m2</localRepository>
<proxies>
<proxy>
<active>true</active>
<protocol>'$PROXY_PROTOCOL'</protocol>
<Host>'$PROXY_Host'</Host>
<port>'$PROXY_PORT'</port>
</proxy>
</proxies>
</settings>' > $HOME/.m2/settings.xml
build_debug1:
stage: build
script: "echo $PROXY_Host"
build_debug2:
stage: build
script: "cat $HOME/.m2/settings.xml"
build_maven:
stage: build
script: "mvn $MAVEN_CLI_OPTS package"
artifacts:
paths:
- target/*.jar
deploy_debug1:
stage: package
script: "ls target/"
ビルドデバッグジョブは、プロキシ設定が正しく挿入されているかどうかを確認するだけであることに注意してください。 Project-> Settings-> CI/CD Pipelines-> Secret Variablesに移動して、Gitlabを使用してプロキシ環境変数をシークレットとして設定できます。
最後のdeploy_debug
ジョブは、ターゲットディレクトリで生成されたものを確認することです。
ドキュメントでは、ビルドの制御に使用されるYAML構文について説明しています。
では、次のことから始めてみませんか?:
job1:
script: "mvn package"
おそらく、これはMavenが既にインストールされている場合にのみ機能するため、これをサポートする runner が必要になります。
GitLabは使用していませんが、 ドキュメント は、ビルドを実行するために 公式Maven Dockerイメージ を使用するようにさらにカスタマイズできることを示唆しています。非常に興味深いように見えますが、ドキュメントにJavaの例が欠けていることに同意します。
私はこのコマンドを使用しますが、一般的にJava/mavenビルドのドキュメントは非常にまれです
maven-package:
script: "mvn install -B"