今天嘗試讓 Bitbucket 的 Pipeline 測試完畢以後,自動部屬到 EC2 上。
遇到幾個有點頭大的問題:
- EC2 只要 restart 後 IP 都會改變
- RSync based 在 SSH 上,所以再次連線都會有 hand shake 問題 (known_hosts)
- 要連上 EC2 需要 ssh -i my.PEM,把這個 PEM 塞進 Pipeline 或是參數都是好方法
這幾點先不考慮的時候,pipeline script 大概會長這樣:
- step:
name: Deploy to EC2
deployment: test
caches:
script:
- apt-get update && apt-get install -y zip unzip rsync openssh-client ssh
- rm -fr .git vendor
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
- composer --version
- composer install --no-interaction --no-progress --prefer-dist --no-dev
- chmod 600 u18-micro.pem
- echo '|1|gdwZ6TN1l9.............GOqLzzpGY=' > ${HOME}/.ssh/known_hosts
- rsync -av --delete --force --progress -e "ssh -i my-ec2.pem" ./ ubuntu@${Host}:/var/www/
注意紅色標記的地方,這幾個都是很重要的 key,把這些資料放在 script、git repository 都是很糟糕的方法。
繼續找方法解決這些鳥問題。