LoginSignup
0
0

CodePipelineからliquibaseのコマンド自体を渡す

Posted at

はじめに

CodePipelineもliquibaseも初めてなため、おかしなやり方かもしれませんが、誰かの役に立てばと思います。

背景

liquibaseをCodePipeline上で動かすにあたって、動的にコマンドやchangesetのファイルを指定したいため、CodePipelineからliquibaseのコマンド自体を渡せるようにしました。
(ほかにもっといいやり方があれば教えていただけると助かります)

やり方

まずは出来合いのCodePipeline、CodeBuildを用意してください。
CodePipeline、CodeBuildの作り方は他記事を参照してください。

ざっくり構成を箇条書きすると以下です。

  • CodePipeline
    • sourceステージ
      • githubからliquibaseのマイグレーションファイルを取得
    • buildステージ
      • liquibaseのinstallからコマンド実行までをCodeBuildで実行

CodePipelineにCOMMAND変数を作成する

以下画像の通り、Pipelineに変数を追加

image.png

BuildステージにCOMMAND変数を渡す

以下図のようにすれば、BuildステージにCOMMAND変数を環境変数として定義できます。
CodePipelineで定義した変数は#{variables.変数名}とすれば、Buildステージで参照できます。

image.png

CodeBuildから、Buildステージで定義したCOMMAND変数を参照する

出来合いのCodeBuildのbuildSpec.ymlを編集します。
buildフェーズでliquibaseコマンドにCodePipelineで定義したCOMMAND変数を渡します。

    build:
        commands:
            - echo "COMMAND=$COMMAND"
            - liquibase $COMMAND 

CodePipelineを実行

CodePipelineを実行すると、以下のようにCOMMANDの入力欄が出てきます。
ここで実行したいliquibaseコマンドを指定すれば、そのコマンドがCodeBuildが実行されます。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0