LoginSignup
1
0

More than 5 years have passed since last update.

1つの CircleCI ワークフローで複数の Packer を切り替えてみる

Posted at

1つの CircleCI ワークフローで複数の Packer を切り替えてみる

昨日の記事だと、1個のレポジトリで1個の CircleCI を使って、1個の Packer が動いて、1つの AMI ができるという感じでした。

今日やりたいのは、こんな感じです。

  • 1つのレポジトリ
  • 1つの CircleCI
  • 複数の Packer
  • 1回に1個の AMI

まず、1つのレポジトリでやってしまうと、複数の Packer を動かせたとしても、一度に複数のイメージができてしまって、ちょっと無駄です。でも、1つのレポジトリで1つのイメージだとそれもまたレポジトリがたくさん必要になってしまいます。なので、1つのレポジトリだけど、ブランチを切った時に指定のイメージができるようなことをやってみたいと思います。

今回は、テストソースを用意してみました。

ブランチでの切り分け

ブランチで切り分けるにはどうすればいいかなということで・・・

circleci/config.yml
version: 2
jobs:
  build:
    docker:
      - image: hashicorp/packer:1.3.3
    working_directory: ~/packer
    steps:
      - checkout
      - attach_workspace:
          at: ~/packer
      - run:
          name: Build
          command: |
            if [ "${CIRCLE_BRANCH}" == "ubuntu" ]; then
              packer build build_ubuntu.json
            fi
            if [ "${CIRCLE_BRANCH}" == "amazon" ]; then
              packer build build_amazon.json
            fi
          no_output_timeout: 30m
workflows:
  version: 2
  build-and-deploy:
    jobs:
      - build:
          context: AMI

steps->command の中で、ブランチごとの切り分けを作りました。
ubuntu のブランチだったら、build_ubuntu.json が動いて、amazon のブランチだったら、build_amazon.json が動くようになっています。

実際は、

  • git checkout -b ubuntu
  • git push origin ubuntu

とやると CircleCI 側でプッシュをフックして AMI 作成まで動くハズです。

まとめ

今回はソースと昨日の記事を見て貰えればだいたいわかると思うので、かなり省略してます。
あんまり作成したいイメージが増えると切り分け多くなって面倒そうなので、何か他にいい方法ないかなーと思案してますが・・・

1
0
3

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
1
0