2017-05-29 2 views
3

gitlabにnode.jsプロジェクトを自動的にデプロイしたいと思います。私はEC2にログインして、すべての操作を実行していて現在、私は.gitlab-ci.ymlgitlabランナーを使ってec2に自動展開する方法は?

deploy_to_dev_aws: 
    only: 
    - development 
    script: 
    - echo "$EC2_SSH_KEY" >> "key.pem" 
    - chmod 600 key.pem 
    - ssh -T -i key.pem -o StrictHostKeyChecking=no [email protected]$EC2_HOST_IP <<EOF 
    - cd ~/projects 
    - rm myproject 
    - git checkout git://myprojectpath 
    - cd myproject 
    - pm2 delete all 
    - pm2 start app.js 
    - logout 
    - EOF 
    stage: build 

上の設定の下に使用してい

は、この正しい方法ですか?

同じことを行う他の方法は何ですか?

+0

何かを見つけましたか?同じことを探しています。 – vira

+0

https://stackoverflow.com/questions/36437278/automate-code-deploy-from-git-lab-to-aws-ec2-instance 達成するためにAWSにどの程度深く統合する必要があるかということを恐れるだけです。よりシンプルなソリューションが利用可能であることを願っています。 – vira

答えて

0

私たちは、タグを使用して複数のEC2インスタンスにデプロイすることが可能なssm agentを使用して展開する方法(.PEMキーは必要ありません)

ステップが見つかりました:EC2インスタンス上でSSMをインストールします)

1を、タグこのタグ付けされたインスタンス

deploy_to_prod_dev_aws: 
    image: python:latest 
    only: 
    - qa 
    script: 
    - pip install awscli 
    - export AWS_ACCESS_KEY_ID=$AWS_KEY_ID 
    - export AWS_SECRET_ACCESS_KEY=$AWS_SECRET 
    - export AWS_DEFAULT_REGION=$AWS_REGION 
    - aws ssm send-command --targets "Key=tag:environment,Values=qa" --document-name "AWS-RunShellScript" --comment "Deployment" --parameters commands="cd /project && git clean -fd && git fetch && git checkout qa && git pull origin qa && npm install && pm2 delete all && pm2 start app.js" --output text 
    stage: build 
    environment: 
    name: qa 
にコマンドを送信するために 環境= QA

2としてインスタンス)を使用するGitlabランナー上記のコマンドで

EC2インスタンスは、我々がEC2 instance.I上で実行するコマンド

--parameters commands定義が最新のコード& pm2 start

希望でgit pullを走ったタグによって定義された展開されているために

--targets指定これは誰かを助けるでしょう。

関連する問題