Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWSのCI/CDサービスを試してみた!

shuntaka
September 26, 2018
230

 AWSのCI/CDサービスを試してみた!

shuntaka

September 26, 2018
Tweet

Transcript

  1. Code Commit AWS Code Build Test Deploy Code Build Code

    Pipeline Code Deploy 3rd party Github Bitbucket TravisCI CircleCI Jenkins
  2. Build Test Deploy Code Build Code Pipeline Code Deploy TravisCI

    CircleCI Jenkins Code Commit Github Bitbucket Code AWS 3rd party
  3. Code Deploy Deploy Code Commit Code Code Pipeline Github Bitbucket

    Code Build Saasサービス (サーバー必要無) TravisCI CircleCI Jenkins サーバー インストール型 Build Test AWS 3rd party
  4. Code Build Build Test Code Commit Code Code Pipeline Github

    Bitbucket TravisCI CircleCI Jenkins Code Deploy Deploy AWS 3rd party
  5. Bitbucket TravisCI CircleCI Code Pipeline AWS 3rd party Jenkins Code

    Build Test Deploy Code Commit Code Build Code Deploy Github CodePipelineは、各サービスを選 択・手順化する(詳しくは後述)
  6. CodePipeline 承認 ソース ビルド テスト デプロイ 呼び出し の構成検討 Github CodeBuild

    Jenkins solano ci CodeBuild Device Form ghost-inspector Jenkins etc.. ECS CloudFormation CodeDeploy Elastic Beanstalk CodeCommit Lambda S3
  7. S3 CodePipeline の構成検討 Github CodeBuild Jenkins solano ci CodeBuild Device

    Form ghost-inspector Jenkins etc.. ECS CloudFormation CodeDeploy Elastic Beanstalk CodeCommit Lambda 承認 ソース ビルド テスト デプロイ 呼び出し CodePipelineには6つのアク ションがある
  8. S3 CodePipeline の構成 Github CodeBuild Jenkins solano ci CodeBuild Device

    Form ghost-inspector Jenkins etc.. ECS CloudFormation CodeDeploy Elastic Beanstalk CodeCommit Lambda 承認 ソース ビルド テスト デプロイ 呼び出し ソース テスト ビルド 承認 アクションを選択して、 手順(パイプライン)を作成する デプロイ
  9. CodePipeline 承認 ビルド テスト デプロイ 呼び出し の構成検討 CodeBuild Jenkins solano

    ci CodeBuild Device Form ghost-inspector Jenkins etc.. ECS CloudFormation CodeDeploy Elastic Beanstalk Lambda ソース Github CodeCommit 各アクションに対して 様々なサービスを設定(連携)可能 S3
  10. CodePipeline 承認 ソース テスト デプロイ 呼び出し の構成検討 Github CodeBuild Device

    Form ghost-inspector Jenkins etc.. ECS CloudFormation CodeDeploy Elastic Beanstalk CodeCommit Lambda S3 CodeBuild Jenkins solano ci ビルド 各アクションに対して 様々なサービスを設定(連携)可能
  11. S3 CodeCommit CodePipeline 承認 呼び出し の構成 CodeBuild CodeBuild Device Form

    ECS CloudFormation CodeDeploy Elastic Beanstalk Lambda ソース Github Jenkins solano ci ghost-inspector etc.. ビルド テスト デプロイ Jenkins アクションによっては、 サードパーティ製のツールも組み込み可能
  12. CodePipeline 承認 ソース ビルド テスト デプロイ 呼び出し の構成検討 Github CodeBuild

    Jenkins solano ci CodeBuild Device Form ghost-inspector Jenkins etc.. ECS CloudFormation CodeDeploy Elastic Beanstalk CodeCommit Lambda S3
  13. S3 CodePipeline ソース ビルド テスト デプロイ 呼び出し の構成検討 Github CodeBuild

    Jenkins solano ci CodeBuild Device Form ghost-inspector Jenkins etc.. ECS CloudFormation CodeDeploy Elastic Beanstalk CodeCommit Lambda 承認 この後の手順を行うどうかを手動 で選択するプロセス 例えば、デプロイする? Yes or No? のような感じ
  14. S3 CodePipeline 承認 テスト 呼び出し の構成 Jenkins solano ci CodeBuild

    Device Form ghost-inspector Jenkins etc.. ECS CloudFormation Elastic Beanstalk CodeCommit Lambda 今回の試す構成 Github CodeBuild CodeDeploy ソース ビルド デプロイ ①Goのサンプルプロジェ クトをcommit&push ③ビルドを実行して、バイナリへ ④ビルド結果をデプロイ EC2 ②「リポジトリへのpushを検知して CodePiplineのリリース始動
  15. パイプラインを作る前に用意する設定 CodeBuild のプロジェクト作成 (一部) CodeDeploy のアプリケーション作成 (一部) ▪ビルドで利用するコンテナの指定 ・AWS CodeBuildで管理されたイメージ

    ・Dockerイメージ ランタイム:golang:1.10 ▪ デプロイグループの設定 ・Auto Scalingグループ ・Amazon EC2インスタンス ・オンプレミスインスタンス タグのキーが「env」で バリューが「qa」のEC2に デプロイする設定にした OS :Ubuntu
  16. 試すアプリケーションの構成 └─script |- start.sh └─ stop.sh codepipeline-demo |- hello.go |-

    appspec.yml |- buildspec.yml CodeBuildのテストやビルド手順 を記載した設定ファイル
  17. 試すアプリケーションの構成 └─script |- start.sh └─ stop.sh codepipeline-demo |- buildspec.yml |-

    hello.go |- appspec.yml CodeDeployのデプロイ手順を記 載した設定ファイル
  18. └─script |- start.sh └─ stop.sh 試すアプリケーションの構成 codepipeline-demo |- buildspec.yml |-

    appspec.yml |- hello.go Goのソースファイル、CodeBuildビル ドしてバイナリへ。 CodeDeployでバイナリをデプロイす る。
  19. 試すアプリケーションの構成 codepipeline-demo |- buildspec.yml |- hello.go |- appspec.yml └─ stop.sh

    └─script |- start.sh デプロイ後にアプリケーションを 起動するスクリプト
  20. 試すアプリケーションの構成 codepipeline-demo |- buildspec.yml |- hello.go |- appspec.yml └─ stop.sh

    └─script |- start.sh デプロイ前にアプリケーションを 停止するスクリプト
  21. ・CD(継続的デリバリー) http://cloudbees.techmatrix.jp/devops/cd ・Continuous integration vs. continuous delivery vs. continuous deployment

    https://www.atlassian.com/continuous-delivery/ci-vs-ci-vs-cd ・ AWS のサービスを活用して CI/CD #akibaaws https://speakerdeck.com/shinjifujimoto/cd-number-akibaaws?slide=10 ・AKIBA.aws で「AWS のサービスを活用して CI/CD」というタイトルで話しました https://dev.classmethod.jp/cloud/aws/aws-service-cicd-in-akibaaws/ ・AWS Black Belt Online Seminar AWS上のJenkins活用方法 https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online- seminar-awsjenkins ・AWS CodeBuild のビルド仕様に関するリファレンス https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-spec-ref.html ・チュートリアルを通してCodeBuildを理解する #reinvent https://dev.classmethod.jp/cloud/aws/understanding-codebuild/ ・ CodePipeline – 特集カテゴリー – https://dev.classmethod.jp/referencecat/aws-codepipeline/