自社ホスト ランナーへのログインを設定する

ここに記載されている機能は Bitbucket Cloud サポート チームでサポートしていません

このページに記載されている機能は、高度に洗練されたオンプレミス ランナー操作を行い、極めて複雑な技術にも慣れているお客様を対象としています。

このドキュメンテーションは参考用としてのみ提供されています。

ビルド ログをランナーでローカルに公開する

通常、Pipelines ランナーで行われた Pipelines 実行のビルド ログは Bitbucket Cloud に送信され、Bitbucket Cloud API を介して取得できます。

ただし、Bitbucket Cloud API を呼び出さずに、Pipelines ランナー自体を実行しているマシンからビルド ログをローカルで収集した方が良い場合もあります。

これを行うには、ランナー システム全体のログの一部としてビルド ログをキャプチャするようにランナーを設定し、お好みのログ管理ツールを使用してそれらを取り込みます。

Linux Docker ランナー

-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

Linux bash ランナー / macOS bash ランナー / Windows PowerShell ランナー

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 ランナーへのログインに使用されるロギング ユーティリティです。ランナー ロギング設定をカスタマイズするには、次のことを行う必要があります。

  1. ランナーからアクセスできる .xml 設定ファイルを用意します。以下の対応する手順を参照してください。

  2. ランナーがそのファイルを使用するように LOGBACK_CONFIGURATION_FILE 環境変数を設定します。以下の対応する手順を参照してください。

1. 設定ファイルを用意する

  • ローカルの .xml が必要です (例: my-logback-config.xml)。

  • このセクションの下部には、既定の設定を含むあらかじめ用意された設定ファイルのセットを用意しています。

  • 構文のガイドラインについては、「第 3 章: 設定」を参照してください。

2. 設定ファイルを使用する

Linux Docker ランナー

ランナーからアクセスできるように 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

Linux bash ランナー / macOS bash ランナー / Windows PowerShell ランナー

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>

 

その他のヘルプ