Bitbucket Cloud の使用を開始する
Bitbucket Cloud を初めてお使いですか? 新規ユーザー用のガイドをご利用ください。
ここに記載されている機能は Bitbucket Cloud サポート チームでサポートしていません。
このページに記載されている機能は、高度に洗練されたオンプレミス ランナー操作を行い、極めて複雑な技術にも慣れているお客様を対象としています。
このドキュメンテーションは参考用としてのみ提供されています。
通常、Pipelines ランナーで行われた Pipelines 実行のビルド ログは Bitbucket Cloud に送信され、Bitbucket Cloud API を介して取得できます。
ただし、Bitbucket Cloud API を呼び出さずに、Pipelines ランナー自体を実行しているマシンからビルド ログをローカルで収集した方が良い場合もあります。
これを行うには、ランナー システム全体のログの一部としてビルド ログをキャプチャするようにランナーを設定し、お好みのログ管理ツールを使用してそれらを取り込みます。
-e BITBUCKET_PIPELINES_RUNNER_BUILD_LOG_ENABLED=TRUE を通常のランナー docker run コマンドに追加する
例
1
2
3
4
5
docker container run \
...
-e BITBUCKET_PIPELINES_RUNNER_BUILD_LOG_ENABLED=TRUE \
...
runner:latest
BITBUCKET_PIPELINES_RUNNER_BUILD_LOG_ENABLED 環境変数を TRUE に設定してから通常のランナー start.sh スクリプトを実行する
例
1
2
3
4
5
6
export BITBUCKET_PIPELINES_RUNNER_BUILD_LOG_ENABLED=TRUE
start.sh
# or
BITBUCKET_PIPELINES_RUNNER_BUILD_LOG_ENABLED=TRUE start.sh
Pipelines ランナーでは、お客様から提供されたロガー設定ファイルを使用したロギングの設定をサポートしています。
Logback (https://logback.qos.ch) は、Pipelines ランナーへのログインに使用されるロギング ユーティリティです。ランナー ロギング設定をカスタマイズするには、次のことを行う必要があります。
ランナーからアクセスできる .xml 設定ファイルを用意します。以下の対応する手順を参照してください。
ランナーがそのファイルを使用するように LOGBACK_CONFIGURATION_FILE 環境変数を設定します。以下の対応する手順を参照してください。
ローカルの .xml が必要です (例: my-logback-config.xml)。
このセクションの下部には、既定の設定を含むあらかじめ用意された設定ファイルのセットを用意しています。
構文のガイドラインについては、「第 3 章: 設定」を参照してください。
ランナーからアクセスできるように logback 設定ファイルをマウントし、設定ファイルのパスを指す環境変数 LOGBACK_CONFIGURATION_FILE 引数を docker run コマンドに渡します。
例
1
2
3
4
5
6
docker container run \
...
-v /path/on/host/to/custom-logback.xml:/tmp/custom-logback.xml:ro \
-e LOGBACK_CONFIGURATION_FILE=/tmp/custom-logback.xml \
...
runner:latest
LOGBACK_CONFIGURATION_FILE 環境変数を /path/on/host/to/custom-logback.xml に設定する
例
1
2
3
4
5
6
export LOGBACK_CONFIGURATION_FILE=/path/on/host/to/custom-logback.xml
start.sh
# or
LOGBACK_CONFIGURATION_FILE=/path/on/host/to/custom-logback.xml start.sh
既定の logback 設定ファイルの例
これは、ランナーで使用される既定の Logback 設定ファイルのコピーで、変更はありません。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<configuration>
<define name="BASE_LOG_PATH" class="com.atlassian.pipelines.runner.core.log.BaseLogPathPropertyDefiner"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>com.atlassian.pipelines.stargate.client.core.exceptions.StargateForbiddenException.class.isInstance(throwable)</expression>
</evaluator>
<onMatch>DENY</onMatch>
</filter>
<encoder>
<!-- print [buildLogName] from SystemLogAppenderFilter if exists, otherwise do not print empty [] -->
<pattern>[%date{ISO8601}]%replace([%X{buildLogName}]){'\[\]',''} %message%n%rootException</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${BASE_LOG_PATH}/runner.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${BASE_LOG_PATH}/runner.%d.%i.log</fileNamePattern>
<maxHistory>7</maxHistory>
<maxFileSize>100MB</maxFileSize>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!-- print [buildLogName] from SystemLogAppenderFilter if exists, otherwise do not print empty [] -->
<pattern>[%date{ISO8601}]%replace([%X{buildLogName}]){'\[\]',''} %message%n%rootException</pattern>
</encoder>
</appender>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<logger name="com.atlassian.pipelines.runner" level="${BITBUCKET_PIPELINES_RUNNER_LOG_LEVEL:-INFO}" />
<logger name="build" level="INFO" />
<logger name="build.service.auth-proxy" level="OFF" />
<logger name="com.netflix" level="OFF" />
<logger name="com.atlassian.pipelines.stargate" level="OFF" />
<logger name="com.github.dockerjava" level="OFF" />
</configuration>
詳細なロギング設定ファイルの例
これは、詳細なロギング用の Logback 設定ファイルセットアップのコピーです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<configuration>
<define name="BASE_LOG_PATH" class="com.atlassian.pipelines.runner.core.log.BaseLogPathPropertyDefiner"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>com.atlassian.pipelines.stargate.client.core.exceptions.StargateForbiddenException.class.isInstance(throwable)</expression>
</evaluator>
<onMatch>DENY</onMatch>
</filter>
<encoder>
<!-- print [buildLogName] from SystemLogAppenderFilter if exists, otherwise do not print empty [] -->
<pattern>[%date{ISO8601}]%replace([%X{buildLogName}]){'\[\]',''} %message%n%rootException</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${BASE_LOG_PATH}/runner.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${BASE_LOG_PATH}/runner.%d.%i.log</fileNamePattern>
<maxHistory>7</maxHistory>
<maxFileSize>100MB</maxFileSize>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!-- print [buildLogName] from SystemLogAppenderFilter if exists, otherwise do not print empty [] -->
<pattern>[%date{ISO8601}]%replace([%X{buildLogName}]){'\[\]',''} %message%n%rootException</pattern>
</encoder>
</appender>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<logger name="com.atlassian.pipelines.runner" level="${BITBUCKET_PIPELINES_RUNNER_LOG_LEVEL:-INFO}" />
<logger name="build" level="INFO" />
</configuration>
JSON ロギング設定ファイルの例
ログをプレーン テキストではなく JSON として stdout に出力します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<configuration>
<define name="BASE_LOG_PATH" class="com.atlassian.pipelines.runner.core.log.BaseLogPathPropertyDefiner"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>com.atlassian.pipelines.stargate.client.core.exceptions.StargateForbiddenException.class.isInstance(throwable)</expression>
</evaluator>
<onMatch>DENY</onMatch>
</filter>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${BASE_LOG_PATH}/runner.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${BASE_LOG_PATH}/runner.%d.%i.log</fileNamePattern>
<maxHistory>7</maxHistory>
<maxFileSize>100MB</maxFileSize>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!-- print [buildLogName] from SystemLogAppenderFilter if exists, otherwise do not print empty [] -->
<pattern>[%date{ISO8601}]%replace([%X{buildLogName}]){'\[\]',''} %message%n%rootException</pattern>
</encoder>
</appender>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<logger name="com.atlassian.pipelines.runner" level="${BITBUCKET_PIPELINES_RUNNER_LOG_LEVEL:-INFO}" />
<logger name="build" level="INFO" />
<logger name="build.service.auth-proxy" level="OFF" />
<logger name="com.netflix" level="OFF" />
<logger name="com.atlassian.pipelines.stargate" level="OFF" />
<logger name="com.github.dockerjava" level="OFF" />
</configuration>
設定済みログ パス設定ファイルの例
ベース ログ パスを /tmp に変更する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<configuration>
<variable name="BASE_LOG_PATH" value="/tmp" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>com.atlassian.pipelines.stargate.client.core.exceptions.StargateForbiddenException.class.isInstance(throwable)</expression>
</evaluator>
<onMatch>DENY</onMatch>
</filter>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${BASE_LOG_PATH}/runner.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${BASE_LOG_PATH}/runner.%d.%i.log</fileNamePattern>
<maxHistory>7</maxHistory>
<maxFileSize>100MB</maxFileSize>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!-- print [buildLogName] from SystemLogAppenderFilter if exists, otherwise do not print empty [] -->
<pattern>[%date{ISO8601}]%replace([%X{buildLogName}]){'\[\]',''} %message%n%rootException</pattern>
</encoder>
</appender>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<logger name="com.atlassian.pipelines.runner" level="${BITBUCKET_PIPELINES_RUNNER_LOG_LEVEL:-INFO}" />
<logger name="build" level="INFO" />
<logger name="build.service.auth-proxy" level="OFF" />
<logger name="com.netflix" level="OFF" />
<logger name="com.atlassian.pipelines.stargate" level="OFF" />
<logger name="com.github.dockerjava" level="OFF" />
</configuration>
この内容はお役に立ちましたか?