我想自動將我們的網站部署到AWS S3。我已經編寫了一個節點腳本來自動構建和上傳該網站,但是我希望腳本自動運行,只要我們的回購庫的master
分支在github上更新即可。在github推送上將靜態站點部署到s3的最佳策略?
我看了一下AWS CodeDeploy,但看起來像是專門部署到EC2。我也看過AWS Lambda,但似乎沒有一種明確的方式來使用git
來購買回購副本,因此我可以運行該腳本。
我可以使用的任何服務(最好綁定到AWS)?
我想自動將我們的網站部署到AWS S3。我已經編寫了一個節點腳本來自動構建和上傳該網站,但是我希望腳本自動運行,只要我們的回購庫的master
分支在github上更新即可。在github推送上將靜態站點部署到s3的最佳策略?
我看了一下AWS CodeDeploy,但看起來像是專門部署到EC2。我也看過AWS Lambda,但似乎沒有一種明確的方式來使用git
來購買回購副本,因此我可以運行該腳本。
我可以使用的任何服務(最好綁定到AWS)?
我知道這不是git的部署....而是的建立一個CI盒子,我只用了s3cmd。
執行此命令同步與S3我的build目錄。
s3cmd sync -r ~/code/mysite/build s3://www.mysite.com --delete-removed
我在Linux上使用它。不確定他們的OSX和Windows故事是什麼。
如果你真的在使用git推送解決方案後,可以設置一個定時作業,將git repo拖到一個文件夾中,然後對其執行此操作。我在其他地方在廉價的Linux VM上執行此操作。除非你要去完整的CI,否則可能沒有多少意義。
我前段時間有同樣的目標,現在已經發布了一個小工具,至少可以解決這個問題。它使用AWS Lambda
,並在push
之後將存儲庫的特定分支部署到S3
。您可以充分利用GitHub部署密鑰,該密鑰具有較少的權限作爲個人訪問令牌,並且可以在每個存儲庫中進行配置。
請看看github-bucket,它可能也會幫助你。
我也推薦使用codeship,簡單易用,但是您需要創建具有適當權限(這是策略)的IAM用戶到S3存儲桶。
codeship的基本計劃是免費的。
那麼可能有問題到目前爲止我可以看到codeship不會刪除文件,因爲你刪除github中的文件,畢竟,s3不是github repo,但無論如何,很多github更新的putObject操作都很好用對我來說足夠了。
沒有證明這個工作,但讀到:如果您使用_aws s3 sync_ _--刪除(布爾)在目標中存在但不在源*中的文件在同步過程中被刪除_ From:http:// docs .aws.amazon.com/cli/latest/reference/s3/sync.html – Nigel
如果您使用的是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段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_ACCESS_KEY_ID環境變量和AWS_SECRET_ACCESS_KEY讓AWS CLI可以在部署步驟中運行,也可以在AWS環境變量的高級部分中的CodeDeploy AWS控制檯中完成。一旦設置了環境變量,並且該AWS用戶擁有正確的權限,則可以在CodeDeploy中運行所需的任何aws-cli命令。
完成此操作後,當您檢入Github時,CodePipeline將啓動,幾分鐘後您的文件將在S3上。
這有可能會加入到一個git post-commit鉤子,它會做。 – Zlatko
是的,好主意。我剛想到,最近宣佈Windows將能夠運行Linux二進制文件,s3cmd可能也適用於Windows!非常酷。 https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/ –