組織間マージ
複数の組織を使い分けているとき(例: 開発用と本番用)、片方の組織の内容をもう片方へ反映できます。左ナビゲーションの「組織間マージ」から開きます。
運べるのはフロー・ファンクション・テーブル・認証情報・環境変数の5種類です。
突き合わせはコードで行う
Section titled “突き合わせはコードで行う”組織をまたぐと、同じものでもIDが変わります。そのため「どれとどれが同じものか」は、各リソースのコード(組織内で一意な短い名前)で判断します。
名前では突き合わせません。名前には一意制約がなく、同じ組織に同名を複数作れるためです。名前は「マージで運ぶかどうかを選べる項目」のひとつになります。
- 左ナビゲーションの「組織間マージ」を開きます。
- 上部でマージ元とマージ先の組織を選びます。マージ先は後から選んでも構いません(選ぶまではマージ元の一覧だけが出ます)。
- リソースの種類ごとにタブが分かれています。差分表で、運ぶものにチェックを入れます。
- 「マージ」を押すと、何がどう変わるかの一覧が確認ダイアログに出ます。
- 内容を確かめて「マージを実行」を押します。
確認ダイアログには「反映する項目」と並んで**「注意」欄**があります。マージはできるものの、そのあと人の手が要るもの(認証情報のスコープ、IDで書かれた参照)がここに出ます。
差分表の見かた
Section titled “差分表の見かた”左がマージ元、右がマージしたあとマージ先がどうなるかです。反映される項目は緑、削除されるものは赤い取り消し線で表示されます。中央の「操作」列で、運ぶ項目を1つずつ選べます。
| 表示 | 意味 |
|---|---|
| 作成 | マージ元にだけあるので、マージ先に作られます |
| 削除 | マージ先にだけあるので、マージ先から消されます |
| 更新 | 両方にあり、選んだ項目がマージ先へ反映されます |
「比較」ボタンから、下書きと各リビジョンを左右に選んで差分を見られます。開いた直後は両側のアクティブなリビジョン(今それぞれの組織で動いているもの)が選ばれています。フローはノードグラフを並べて違うノードを目立たせ、ノードを押すとその中身の差分が出ます。ファンクションはスクリプトの差分がそのまま出ます。リビジョン名はリンクになっていて、押すとそのリビジョンの詳細が別タブで開きます。
スクリプトノードはスクリプト本文が、トリガーノードは設定が差分に出ます。定期実行はスケジュール(CRON)に加えてタイムゾーン・サーバー停止中に過ぎた実行の扱い・遡って補填する上限が、フォームは入力項目(コード・型・必須・メモ)と送信ボタンのラベルが、それぞれ1行ずつ並びます。
同じ組織の中で見比べる
Section titled “同じ組織の中で見比べる”マージ先は選ばなくても構いません。 マージ元だけを選ぶと、その組織のフロー・ファンクション・テーブル・認証情報・環境変数の一覧が出ます(マージ先と同じ組織を選んだときも同じ表示になります)。
この状態では運ぶ先が無いので、チェックボックスと「マージ」は使えません。代わりに、フローとファンクションの「比較」から同じ組織の中で下書きと各リビジョンを見比べられます。既定では「アクティブなリビジョン → 下書き」が選ばれるので、公開してから下書きで何を直したかがそのまま出ます。左右のラジオで別の版を選べば、リビジョンどうしの比較もできます。
マージしたくなったらマージ先を選んでください。差分表が左右2列に変わり、運ぶ項目を選べるようになります。
下書きとリビジョンは別々に選ぶ
Section titled “下書きとリビジョンは別々に選ぶ”フローとファンクションには下書き(編集中の状態)とリビジョン(公開した版)があり、差分表ではそれぞれ独立したチェックになっています。
| チェック | 起きること |
|---|---|
| 下書き | マージ元の下書きが、マージ先の下書きを上書きします |
| アクティブなリビジョン | マージ元のアクティブなリビジョンが、マージ先に新しいリビジョンとして1つ追加されます |
足したリビジョンがアクティブになり、マージ先のそれまでのリビジョンは履歴として残ります(消えたり書き換わったりしません)。
リソースごとの注意
Section titled “リソースごとの注意”ランナーは運びません。 ランナーは組織ごとに別のものなので、マージ先で選び直してください。→ ランナー
HTTPリクエストトリガーのシークレットも運びません。 Webhook の URL は .../{フローID}/{ノードID}/{シークレット} で、このシークレットだけが認証です。運んでしまうと、マージ元の URL を知っている人がマージ先のフローも叩けてしまいます。
アーカイブは削除と同じく「する / しない」を選ぶ操作です。マージ先で動いているフローを止めることがあるため、既定では選ばれません。
スクリプトの参照はコードで書く
Section titled “スクリプトの参照はコードで書く”スクリプトの import は、synqlet:environment-variables/API_URL のようにコードでも、synqlet:environment-variables/019dae…のようにIDでも書けます。
既定ではスキーマ(名前・フィールド)だけを運びます。「値」を選ぶと行データを全件コピーしますが、新しく作成するときだけです。すでにあるテーブルへ行を足すと、どちらの行が正しいのか決められないためです。
行データは既定では選ばれません。 開発用のデータをそのまま本番へ持ち込むことになりやすいので、運ぶかどうかは毎回選んでください。
スキーマはフィールド単位で選べます。運べるのは追加・削除・必須の解除の3つで、既定では追加と必須の解除が選ばれています。
- 追加(マージ元にだけあるフィールド) — マージ先の後ろに足されます
- 削除(マージ先にだけあるフィールド) — ⚠️ その列の値が全行から消えます。 取り返しがつかないので既定では選ばれません
- 必須を外す(マージ先だけが必須になっているフィールド) — マージ先の「必須」が外れます。制約が緩くなるだけで値は1つも失われないので、既定で選ばれています
- 食い違い(上のどれにも当てはまらない違い) — オレンジで違いを出すだけで、マージでは揃えられません
新しく作成するときは、選んだフィールドだけでテーブルが作られます(行データも、そのフィールドぶんだけコピーされます)。
値は既定では運びません。 値は組織ごとに違うのが普通(開発と本番のURLなど)で、マージ元の値をそのまま持ち込むと壊れることが多いためです。
秘密情報(シークレット)は運びません。 マージで作られた認証情報は必ず「未連携」になるので、マージ先で連携してください。→ 認証情報を再連携する
秘密情報はマージ元の組織の認証情報の鍵の公開鍵で暗号化されていて、Synqlet は秘密鍵を持たないため暗号文を作り直せないためです。マージ先に既にある認証情報の連携は、マージしてもそのまま残ります(上書きされません)。
スコープは1つずつ増減するので、差分表のマージ先の列では増えるスコープを緑、無くなるスコープを赤い取り消し線で出します(もともとあって残るスコープはそのままの色です)。入りきらないときはマウスを乗せると全部読めます。
途中で失敗したとき
Section titled “途中で失敗したとき”マージは全体でひとつの処理です。どれか1つでも失敗したら、すべて元に戻ります。フローだけが入って、それが使う環境変数が入っていない、という中途半端な状態にはなりません。
失敗したときはその理由が表示されます。原因を直してから、もう一度マージしてください。