2015-09-11 10 views
14

私のサイトをAWS S3に自動配置したいと思います。サイトの構築とアップロードを自動化するノードスクリプトを作成しましたが、masterリポジトリのブランチがgithubで更新されるとスクリプトが自動的に実行されるようにしたいと思います。github pushで静的サイトをs3にデプロイするのに最適な方法は?

AWS CodeDeployを調べましたが、具体的にはEC2に展開しているようです。私もAWS Lambdaを見てきましたが、gitを使ってレポのコピーを取る明確な方法はないようですので、スクリプトを実行できます。

私が使用できるサービス(AWSと結ばれていることが望ましい)はどれですか?

答えて

5

直接ではなく、AWSのサービスを使用して(あなたは、彼らはほぼすべてがなどEC2にデプロイ、はるかに複雑な設定を期待して言うように)、あなたは、このようなShippableCodeshipまたはWerckerとしてCIプロバイダを使用したほうが良いかもしれません。

これらはすべてgitアップデートから起動し、ビルドコマンドを実行し、CIイメージ/コンテナにユーティリティをインストールし、S3にファイルをコピーします。

私はそれはgitのデプロイではないことを知っている....しかし、代わりにセットアップするあなたの目的のために正確なツールを構築してきましたが、彼らは

7

:-)まだ私のレーダーに現れていないいくつかのスタートアップは、おそらくありますCIボックス、私はs3cmdを使用しました。このコマンドを実行

http://s3tools.org/s3cmd

S3と私のビルドディレクトリを同期します。私はLinux上でそれを使用してい

s3cmd sync -r ~/code/mysite/build s3://www.mysite.com --delete-removed 

。彼らのOSXとWindowsの話が何であるかは不明です。

git pushソリューションを実際に行っている場合は、git repoをフォルダにプルして実行するタイミングジョブを設定してから実行することができます。私は安いLinux VMのどこかでこれを行う。あなたは完全なCIを行くつもりがない限り、おそらく多くのポイントはありません。

+0

これはGitのコミット後フックに追加されます可能性があり、それが行うだろう。 – Zlatko

+0

ええ、いい考えです。 WindowsがLinuxバイナリを実行できるという最近の発表とともに、s3cmdはおそらくWindowsでも動作します。とてもクール。 https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/ –

7

私は以前も同じ目標を持っていましたが、今では少なくとも私の問題を解決する小さなツールをリリースしました。 AWS Lambdaを使用し、pushの後にリポジトリの特定のブランチをS3にデプロイします。 GitHubデプロイメントキーをフルに活用できます.GitHubデプロイメントキーは、パーソナルアクセストークンとしてのアクセス許可が少なく、リポジトリごとに構成できます。

github-bucketをご覧ください。お役に立ちますか?

github-s3-deploy-architecture

0

はおそらく、あなたの簡単なユースケースのために圧倒していますが、S3にあなたのgithubのリポジトリをプッシュするために非常に単純なCodePipelineを作成することができます。

+0

CodePipelineでS3を出力として選択するにはどうすればよいですか? – LC1983

0

シンプルで簡単なコードシップを使用することをお勧めしますが、S3バケットに対する適切なアクセス許可(ポリシー)を持つIAMユーザーを作成する必要があります。

コードシップの基本計画は無料です。

これまでのところ、githubのファイルを削除する際にコードシップがファイルを削除しないことがありますが、s3はgithubリポジトリではありませんが、とにかくgithubアップデートのputObject操作がうまくいきます私には十分です。

+0

この動作は証明されていませんが、それを読んでください:_aws s3を使用している場合sync_ _-- delete(ブール値)同期中に宛先に存在し、ソース*に存在しないファイルは削除されます。 From:http:// docs .aws.amazon.com/cli/latest/reference/s3/sync.html – Nigel

3

TravisCIを使用している場合、deploymentはかなり簡単です。あなたは.travis.ymlに追加する必要があります唯一の部分は次のとおりです。

deploy:       
    provider: s3       
    access_key_id: "YOUR AWS ACCESS KEY" 
    secret_access_key: 
    secure: "w/DlbHt1+IAMENCRYPTED" 
    bucket: "YOUR BUCKET" 

My blog postは、AWS側のためのすべての詳細(ユーザー設定、IAMおよびS3バケット構成)だけでなく、githubのとtravisCI側を説明します。

2

これは、非常に単純な2ステップコードパイプラインで設定できます。基本的には、AWS Consoleのさまざまなセクションに記入するだけです。個別のCIツールと複雑さが増す必要はありません。

piplineの最初の手順で、GithubからプルしてS3に保存します。これはAWS Consoleで簡単に設定できます。

次CodeDeployのステップでは、あなたがAWS CLIようAWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYのための環境変数を設定する必要があります

cd /path/to/public/directory && aws s3 sync --acl public-read --delete . s3://your.bucket.name 

を行うにはAWS CLIを(CodeDeployにプリインストール)を使用することができますデプロイメントステップ中に実行することができます。また、「環境変数」の下の「アドバンスト」セクションで、CodeDeployのAWSコンソールで実行することもできます。環境変数が設定され、そのAWSユーザに適切な権限がある場合は、CodeDeploy内で必要なaws-cliコマンドを実行できます。

これが完了すると、Githubにチェックインすると、CodePipelineが起動し、数分後にS3にファイルが保存されます。

+0

GithubからS3にプルを設定するにはどうすればよいですか?それはラムダですか?またはCodePipelineですか? – LC1983

+0

CodePipelineウィザードで、ソースの入力を求められます。 Githubはサポートされているソースの1つで、Githubをソースとして選択してください。 CodePipelineがGithubアカウントを読み取る権限を持つようにGithub認証を設定する必要があります(プライベートレポの場合)。これはすべてコンソールから行われます。私が初めてこれをしたとき、私はコンソールを通してすべてのことをすることに何の問題もありませんでした - 手順はかなり明確です。 –

+0

私はコードを取得できますが、S3をn出力として設定することはできません。 – LC1983

0

私は過去にDeploy Botを使用していましたが、私はそれにかなり満足しています。

Git経由でS3やFTPにプッシュすることもできますし、ビルドスクリプトを実行したり、Slackに通知したりすることもできます。

https://deploybot.com/

関連する問題