Jsonnet
Droneは、yaml構成の代替としてJsonnetスクリプトをサポートします。 Jsonnetは、Json構文を拡張し、データを生成、翻訳、および改良するための構造を追加するデータテンプレート言語です。
Jsonnetは、高度なスクリプト機能とコードの再利用の恩恵を受ける複雑な構成のプロジェクトを対象としています。
使用法
gitリポジトリのルートに.drone.jsonnet
ファイルを作成することで、個々のプロジェクトにJsonnetを使用できます。次に、リポジトリ設定画面から、それに応じてリポジトリ構成ファイルを更新します。
例
パイプライン構成を返すスクリプトの例を次に示します。返されるパイプラインオブジェクトは、yamlで定義されたパイプラインと同じ構造を使用することに注意してください。
1 {
2 "kind": "pipeline",
3 "type": "docker",
4 "name": "default",
5 "steps": [
6 {
7 "name": "build",
8 "image": "alpine",
9 "commands": [
10 "echo hello world",
11 ]
12 }
13 ]
14 }
ツーリング
コマンドラインツールを使用して、Jsonnet構成ファイルをyamlに自動的に変換できます。これは、ローカルテストに役立ちます。
$ drone jsonnet --stdout
kind: pipeline
name: default
steps:
- name: build
image: alpine
commands: [ echo hello world ]
一般的な問題
以下のエラーは、Droneが構成をjsonnetファイルとして認識しないことを示している可能性があります。この問題の最も一般的な根本原因は、Droneサーバの設定でjsonnetを有効にするのを忘れていることです。
yaml: line 1: mapping values are not allowed in this context
この問題の2番目に一般的な根本原因は、ファイルの名前をjsonnet拡張子に変更するのを忘れていることです。 Droneは、jsonnetファイル拡張子を明示的に使用しない限り、構成ファイルがyamlで記述されていることを前提としています。