私たちのサイトをAWS S3にデプロイすることを自動化したいです。サイトの構築とアップロードを自動化するノードスクリプトを作成しましたが、githubでリポジトリのmaster
ブランチが更新されるたびにスクリプトを自動的に実行したいと思います。
AWS CodeDeployを調べましたが、EC2に具体的にデプロイするためのようです。 AWS Lambdaも見てきましたが、git
を使用してレポジトリのコピーをプルする明確な方法がないため、スクリプトを実行できます。
使用できるサービス(できればAWSに関連付けられているもの)はありますか?
私はしばらく前に同じ目標を達成しましたが、少なくとも私にとっては問題を解決する小さなツールをリリースしました。それは使用しています AWS Lambda
そして、リポジトリの特定のブランチをS3
Push
の後。 GitHubデプロイキーを最大限に活用できます。このキーは、個人アクセストークンとしての権限が少なく、リポジトリごとに構成できます。
github-bucket をご覧ください。これも役に立つかもしれません。
Git deployではないことを知っています...しかし、CIボックスを設定する代わりに、s3cmdを使用しました。
このコマンドを実行すると、ビルドディレクトリがs3と同期されます。
s3cmd sync -r ~/code/mysite/build s3://www.mysite.com --delete-removed
Linuxで使用しています。 OSXとWindowsのストーリーが何なのかわかりません。
本当にgit Pushソリューションを使用している場合は、gitレポをフォルダーにプルし、それに対してこれを実行する時間指定ジョブをセットアップできます。安価なLinux VMの別の場所でこれを行います。ただし、完全なCIに移行する場合を除き、おそらくあまり意味はありません。
これは、非常にシンプルな2ステップCodePipelineで設定できます。基本的に、AWSコンソールのさまざまなセクションに記入するだけです。個別のCIツールとその追加された複雑さは必要ありません。
ピップラインの最初のステップで、GithubからプルしてS3に保存します。これはAWSコンソールから簡単に設定できます。
次のCodeDeployステップでは、AWS CLI(CodeDeployにプリインストールされている)を使用して、
cd /path/to/public/directory && aws s3 sync --acl public-read --delete . s3://your.bucket.name
AWS CLIをデプロイステップで実行できるように、AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYの環境変数を設定する必要があります。これは、CodeDeployのAWSコンソールの「環境変数」の下の「詳細」セクションでも実行できます。環境変数が設定され、そのAWSユーザーが正しいアクセス許可を持っている場合、CodeDeploy内で必要なaws-cliコマンドを実行できます。
これが完了したら、Githubにチェックインすると、CodePipelineが開始され、数分後にファイルがS3に配置されます。
TravisCIを使用している場合、 deployment は非常に簡単です。 .travis.yml
に追加する必要があるのは次の部分のみです。
deploy:
provider: s3
access_key_id: "YOUR AWS ACCESS KEY"
secret_access_key:
secure: "w/DlbHt1+IAMENCRYPTED"
bucket: "YOUR BUCKET"
私のブログ投稿 は、AWS側(ユーザーセットアップ、IAMおよびS3バケット構成)のすべての詳細と、githubおよびtravisCI側について説明しています。
単純なユースケースではおそらく圧倒されますが、非常に単純な CodePipeline を作成して、githubリポジトリをS3にプッシュすることができます。
また、シンプルで簡単なコードシップを使用することをお勧めしますが、S3バケットに対する適切なアクセス許可(ポリシー)を持つIAMユーザーを作成する必要があります。
コードシップの基本計画は無料です。
さて、これまでのところ問題があるかもしれませんが、gitshipでファイルを削除してもコードシップではファイルが削除されないことがわかります。
Deploy Botを使用したことがありますが、非常に満足しています。
Gitを介してS3またはFTPにプッシュでき、ビルドスクリプトを実行したり、通知をSlackにプッシュしたりすることもできます。