コンテンツにスキップ

組織間マージ

複数の組織を使い分けているとき(例: 開発用と本番用)、片方の組織の内容をもう片方へ反映できます。左ナビゲーションの「組織間マージ」から開きます。

運べるのはフロー・ファンクション・テーブル・認証情報・環境変数の5種類です。

組織をまたぐと、同じものでもIDが変わります。そのため「どれとどれが同じものか」は、各リソースのコード(組織内で一意な短い名前)で判断します。

名前では突き合わせません。名前には一意制約がなく、同じ組織に同名を複数作れるためです。名前は「マージで運ぶかどうかを選べる項目」のひとつになります。

  1. 左ナビゲーションの「組織間マージ」を開きます。
  2. 上部でマージ元とマージ先の組織を選びます。マージ先は後から選んでも構いません(選ぶまではマージ元の一覧だけが出ます)。
  3. リソースの種類ごとにタブが分かれています。差分表で、運ぶものにチェックを入れます。
  4. 「マージ」を押すと、何がどう変わるかの一覧が確認ダイアログに出ます。
  5. 内容を確かめて「マージを実行」を押します。

確認ダイアログには「反映する項目」と並んで**「注意」欄**があります。マージはできるものの、そのあと人の手が要るもの(認証情報のスコープ、IDで書かれた参照)がここに出ます。

左がマージ元、右がマージしたあとマージ先がどうなるかです。反映される項目は緑、削除されるものは赤い取り消し線で表示されます。中央の「操作」列で、運ぶ項目を1つずつ選べます。

表示 意味
作成 マージ元にだけあるので、マージ先に作られます
削除 マージ先にだけあるので、マージ先から消されます
更新 両方にあり、選んだ項目がマージ先へ反映されます

「比較」ボタンから、下書きと各リビジョンを左右に選んで差分を見られます。開いた直後は両側のアクティブなリビジョン(今それぞれの組織で動いているもの)が選ばれています。フローはノードグラフを並べて違うノードを目立たせ、ノードを押すとその中身の差分が出ます。ファンクションはスクリプトの差分がそのまま出ます。リビジョン名はリンクになっていて、押すとそのリビジョンの詳細が別タブで開きます。

スクリプトノードはスクリプト本文が、トリガーノードは設定が差分に出ます。定期実行はスケジュール(CRON)に加えてタイムゾーン・サーバー停止中に過ぎた実行の扱い・遡って補填する上限が、フォームは入力項目(コード・型・必須・メモ)と送信ボタンのラベルが、それぞれ1行ずつ並びます。

マージ先は選ばなくても構いません。 マージ元だけを選ぶと、その組織のフロー・ファンクション・テーブル・認証情報・環境変数の一覧が出ます(マージ先と同じ組織を選んだときも同じ表示になります)。

この状態では運ぶ先が無いので、チェックボックスと「マージ」は使えません。代わりに、フローとファンクションの「比較」から同じ組織の中で下書きと各リビジョンを見比べられます。既定では「アクティブなリビジョン → 下書き」が選ばれるので、公開してから下書きで何を直したかがそのまま出ます。左右のラジオで別の版を選べば、リビジョンどうしの比較もできます。

マージしたくなったらマージ先を選んでください。差分表が左右2列に変わり、運ぶ項目を選べるようになります。

下書きとリビジョンは別々に選ぶ

Section titled “下書きとリビジョンは別々に選ぶ”

フローとファンクションには下書き(編集中の状態)とリビジョン(公開した版)があり、差分表ではそれぞれ独立したチェックになっています。

チェック 起きること
下書き マージ元の下書きが、マージ先の下書きを上書きします
アクティブなリビジョン マージ元のアクティブなリビジョンが、マージ先に新しいリビジョンとして1つ追加されます

足したリビジョンがアクティブになり、マージ先のそれまでのリビジョンは履歴として残ります(消えたり書き換わったりしません)。

ランナーは運びません。 ランナーは組織ごとに別のものなので、マージ先で選び直してください。→ ランナー

HTTPリクエストトリガーのシークレットも運びません。 Webhook の URL は .../{フローID}/{ノードID}/{シークレット} で、このシークレットだけが認証です。運んでしまうと、マージ元の URL を知っている人がマージ先のフローも叩けてしまいます。

アーカイブは削除と同じく「する / しない」を選ぶ操作です。マージ先で動いているフローを止めることがあるため、既定では選ばれません。

スクリプトの参照はコードで書く

Section titled “スクリプトの参照はコードで書く”

スクリプトの import は、synqlet:environment-variables/API_URL のようにコードでも、synqlet:environment-variables/019dae…のようにIDでも書けます。

既定ではスキーマ(名前・フィールド)だけを運びます。「値」を選ぶと行データを全件コピーしますが、新しく作成するときだけです。すでにあるテーブルへ行を足すと、どちらの行が正しいのか決められないためです。

行データは既定では選ばれません。 開発用のデータをそのまま本番へ持ち込むことになりやすいので、運ぶかどうかは毎回選んでください。

スキーマはフィールド単位で選べます。運べるのは追加・削除・必須の解除の3つで、既定では追加と必須の解除が選ばれています。

  • 追加(マージ元にだけあるフィールド) — マージ先の後ろに足されます
  • 削除(マージ先にだけあるフィールド) — ⚠️ その列の値が全行から消えます。 取り返しがつかないので既定では選ばれません
  • 必須を外す(マージ先だけが必須になっているフィールド) — マージ先の「必須」が外れます。制約が緩くなるだけで値は1つも失われないので、既定で選ばれています
  • 食い違い(上のどれにも当てはまらない違い) — オレンジで違いを出すだけで、マージでは揃えられません

新しく作成するときは、選んだフィールドだけでテーブルが作られます(行データも、そのフィールドぶんだけコピーされます)。

値は既定では運びません。 値は組織ごとに違うのが普通(開発と本番のURLなど)で、マージ元の値をそのまま持ち込むと壊れることが多いためです。

秘密情報(シークレット)は運びません。 マージで作られた認証情報は必ず「未連携」になるので、マージ先で連携してください。→ 認証情報を再連携する

秘密情報はマージ元の組織の認証情報の鍵の公開鍵で暗号化されていて、Synqlet は秘密鍵を持たないため暗号文を作り直せないためです。マージ先に既にある認証情報の連携は、マージしてもそのまま残ります(上書きされません)。

スコープは1つずつ増減するので、差分表のマージ先の列では増えるスコープを緑、無くなるスコープを赤い取り消し線で出します(もともとあって残るスコープはそのままの色です)。入りきらないときはマウスを乗せると全部読めます。

マージは全体でひとつの処理です。どれか1つでも失敗したら、すべて元に戻ります。フローだけが入って、それが使う環境変数が入っていない、という中途半端な状態にはなりません。

失敗したときはその理由が表示されます。原因を直してから、もう一度マージしてください。