キューサービスの管理

パッケージ

他のサービスと同様にAPIは、Docker imageとしてポート80番で公開されています。

$ docker run -d -p 9003:80 screwdrivercd/queue-service:latest
$ open http://localhost:9003

私たちのDockerImageには、バージョン(例: v1.2.3)とフローティングタグlatest, stableタグがついています。 特に理由がなければstableまたは固定のバージョンタグを利用してください。

構成

Screwdriver.cdは既にほとんどの設定をデフォルトにしています。 環境変数を変更または config/local.yamlを作成することでデフォルトを上書きすることができます。 環境変数はすべてここに定義してあります。

認証

APIから受信するJWTのバリデーションを設定します。

環境変数 必須 説明
JWT_ENVIRONMENT いいえ JWT を生成する環境です。例えば prod や beta などを指定します。JWT に環境変数を含めたくないのであれば、この環境変数は設定しないでください。(''のような設定もしないでください)
SECRET_JWT_PRIVATE_KEY はい JWTに署名するための秘密鍵です。次のコマンドにより生成できます。
$ openssl genrsa -out jwt.pem 2048
SECRET_JWT_PUBLIC_KEY はい 署名を検証するための公開鍵です。次のコマンドにより生成できます。
$ openssl rsa -in jwtqs.pem -pubout -out jwtqs.pub
SECRET_JWT_SD_API_PUBLIC_KEY none JWTの署名の検証に使用する公開鍵です。APIで設定したものと同じものを使用してください。
# config/local.yaml
auth:
    jwtPrivateKey: |
        PRIVATE KEY HERE
    jwtPublicKey: |
        PUBLIC KEY HERE
    jwtSDApiPublicKey: |
        PUBLIC KEY HERE

サービス

サービスがどのようにトラフィックをlistenしているかを設定します。

環境変数 デフォルト 説明
PORT 80 サービスが受けているポート
HOST 0.0.0.0 サービスが立ち上がるホスト (このマシンからの接続のみを受け入れるように localhost に設定)
URI http://localhost:80 外部ルーティング可能な URI (通常は、ロードバランサまたはCNAME)
HTTPD_TLS false SSLサポートの有無です。有効にする場合はfalsetls.createServerに渡すJSONオブジェクトに置き換えてください。
# config/local.yaml
httpd:
    port: 443
    host: 0.0.0.0
    uri: https://localhost
    tls:
        key: |
            PRIVATE KEY HERE
        cert: |
            YOUR CERT HERE

Redisキューの設定

キューを構成するための設定を行います。

環境変数 必須 デフォルト 説明
REDIS_HOST はい 127.0.0.1 Redis ホスト
REDIS_PORT はい 6379 Redis ポート
REDIS_PASSWORD はい a-secure-password Redis パスワード
REDIS_TLS_ENABLED いいえ false Redis tls 有効化
REDIS_DB_NUMBER いいえ 0 Redis db 番号
REDIS_QUEUE_PREFIX いいえ ’’ Redis queue プレフィックス
# config/local.yaml
queue:
  redisConnection:
    host: "127.0.0.1"
    port: 6379
    options:
      password: a-secure-password
      tls: false
    database: 0
  prefix: ''

Blocked Byの設定

blockedByのための設定を行います。

環境変数 必須 デフォルト 説明
PLUGIN_BLOCKEDBY_REENQUEUE_WAIT_TIME いいえ 1 ブロックされている場合に再エンキューする前に待機する時間(分)
PLUGIN_BLOCKEDBY_BLOCK_TIMEOUT いいえ 120 ジョブのブロックによりタイムアウトとなるまでの最大時間(分)
PLUGIN_BLOCKEDBY_BLOCKED_BY_SELF いいえ true 同じジョブをブロックされるかどうか
PLUGIN_BLOCKEDBY_COLLAPSE いいえ true 同タイミングに同じジョブで複数のビルドが走った場合に1つのビルドに集約するかどうか
# config/local.yaml
plugins:
  blockedBy:
    reenqueueWaitTime: 5
    blockTimeout: 180
    blockedBySelf: false
    collapse: false

Pushgatewayの設定

ビルドメトリクスを取得する場合はPushgatewayの設定を追加する必要があります。

環境変数 必須 デフォルト 説明
ECOSYSTEM_PUSHGATEWAY_URL いいえ   Pushgateway URL

Scheduler

Schedulerが有効な場合、Queue ServiceはビルドをRabbitMQ Build Clusterキューに渡し、Build Cluster Queue Workerで処理されます。

キー 環境変数 説明
enabled SCHEDULER_ENABLED true の場合、ビルドはRabbitMQのビルドクラスターキューに送られ、処理が行われます。
protocol RABBITMQ_PROTOCOL RabbitMQに接続するためのプロトコル。非sslの場合はamqp、sslの場合はamqpsを使用します。デフォルト: amqp
username RABBITMQ_USERNAME RabbitMQのキューを利用することを許可された、接続するユーザー
password RABBITMQ_PASSWORD パスワード
host RABBITMQ_HOST RabbitMQクラスタのホスト名 デフォルト: 127.0.0.1
port RABBITMQ_PORT RabbitMQのポート デフォルト: 5672
vhost RABBITMQ_VIRTUAL_HOST キュー用の仮装ホスト デフォルト: /screwdriver
connectOptions RABBITMQ_CONNECT_OPTIONS オプションを使用して、heartbeatチェックを設定し、接続が切れた場合に時間内に再接続することができます。デフォルト: ‘{ “json”: true, “heartbeatIntervalInSeconds”: 20, “reconnectTimeInSeconds”: 30 }’

Executors

RabbitMQ Schedulerが使用されていない場合、Queue Serviceは直接executorを呼び出すことができます。設定内容は、APIの設定構成と同じです。