ConoHaVPSにCircleCIで自動デプロイする話


ConoHa Advent Calendar 2020 の12日目を投稿させていただきます。
よろしくお願いします。

はじめに

  • ConoHaにはAWSでいうCodeBuildなどのようなものは無い...?
  • jenkinsのテンプレートを試す時間が無かった
  • 既存のサービスで手軽に自動デプロイしたかった話。

なぜConoHaで?

  • このはちゃんがかわいいからです!

構成

従来のもの

  • ミスりそう。
  • 統一した環境でのビルド/テストしたい。
  • 毎回sshしたりしないといけない...。

CircleCIを使うもの

  • 基本自動(構成上、更新内容によっては手動作業必要かも?)
  • 統一した環境でのビルド/テスト

CircleCIのconfig

CircleCIでconfigのymlファイルを書いてビルド設定をします。詳しく書くと長くなってしまうので概略だけ。

version: 2
jobs:
  build:
    docker:
      - image: circleci/golang:1.14.2-node
    working_directory: /home/circleci/go/src/github.com/<ProjectName>
    steps:
      - checkout
      - add_ssh_keys:
          fingerprints:
          - ${FINGER_PRINT}

      - run: go vet ./... # (例)
      - run: go test ./... # (例)
      - run: go build ...... # (例)
      - run: zip -r ./artifacts.zip go_bin1 go_bin2 ......
      - store_artifacts:
          path: ./artifacts.zip
      - run: 
          command: ssh -o StrictHostKeyChecking=no ${USER_NAME}@${HOST_NAME} "<各自のデプロイ用のコマンド>"
          no_output_timeout: 1m

大まかな手順としては
1. checkoutして成果物をビルド。
2. 成果物をartifactとして保存。
3. SSHした先でAPI使ってダウンロード。
となります。

APIは現状だと

wget -q -O <file_path> https://circleci.com/api/v1.1/project/github/<user_name>/<project_name>/<job_number>/artifacts?circle-token=<api_token>

でダウンロードして展開すれば完了ですね!(その他再起動などは置いといて)

まとめ

純ConoHaで自動ビルド/デプロイできるようにしたいですね!(jenkinsのtemplate)

今後の課題

  • Jenkinsのテンプレートを使って純ConoHa自動デプロイを目指す。

宣伝(?)

お得な割引きっぷが使えるようになったので皆さん是非課金買いましょう!

参考/引用