仕事(授業)のネタとして、GitHub上でお手軽PHP環境(Laravel基本環境付き)を提供するリポジトリを作っています。 これをテンプレートとしているのですが、この中でいろいろ諸問題を抱えつつ今年度は終わろうとしています。

で、これを少し改良したいというのがこの学生休み期間の野望のひとつだったりするわけですよ。

GitHub Actionsについては、いろんなところで資料が公開されているわけですが、なんだかんだでノウハウは自分で蓄積しなくてはいけません。ということで書籍も入手しつついろいろ研究しているわけですが…

その中でも記載されているデータパッシング(受け渡し)がなんともわかりにくく、地味に苦労していたのでした。

やりたいことは、ActionsでDockerイメージを2つ(Webサーバー部分・アプリケーションサーバー部分)作成する1ときに、それぞれに付けるタグ名を共通化することです。 現在、各イメージを作成する際に、それぞれでタイムスタンプベースの値をタグとしているのですが、当然のようにこの2つが同時起動の保証が無いために変わってしまうのです。別にソレが悪いわけではないのですが、なんとなく気持ち悪いのです。

graph TD;
    A[テスト]--> X[Webイメージ作成]
    A--> L[Appイメージ作成]

    subgraph Webイメージ作成;
        X --> Y[タグ名生成]
        Y --> Z[Webイメージ作成]
    end

    subgraph Appイメージ作成;
        L --> M[タグ名生成]
        M --> N[Webイメージ作成]
    end

ということで、これをこうしたい、と。

graph TD;
    A[テスト]--> B[タグ生成]
    B-->X[Webイメージ作成]
    B-->L[Appイメージ作成]

    subgraph Webイメージ作成;
        X --> Y[タグ名持ち込み]
        Y --> Z[Webイメージ作成]
    end

    subgraph Appイメージ作成;
        L --> M[タグ名持ち込み]
        M --> N[Webイメージ作成]
    end

理想的にはテストとタグ生成は独立しているのでジョブ分けをすることになります。


  1. これはこれでマトリックスビルドにしたいのですが、それはまだ別の機会で。 ↩︎