CICD
,其實講的比較簡單一點就是將上程式的流程自動化,自動 build code、執行 unit test、自動更新線上服務...所有反覆步驟都轉為自動化執行CI(Continuous integration),即是「持續整合」
CD(Continuous Deployment),即是「持續佈署」
1. 首先在 GitHub 上面開啟一個 Private Project
(補充:如果不會使用GitHub可參考這篇)
2. Download Project 到本機桌面
3. 使用Git 的相關指令來確認是否跟GitHub Project有互通
- git add .
- git commit -m "xxx"
- git push
- git pull
4. 新建一個 AWS S3 bucket,盡量可以跟 Github Project的名字一樣
(補充:為什麼需要使用S3呢,因為S3是用來儲存你所需要部屬的程式或是設定檔,讓Travis CI打包檔案丟上來用的空間)
5. 建立一個 IAM User 給 Travis CI用,盡量可以跟 Github Project 的名字一樣,比較好辨識
(補充:為什麼要給Travis CI一個權限呢,因為Travis CI需要去觸發Codedeploy去接續後續的的部屬流程以及需要把打包好的東西丟至S3 Bucket上,所以需要開權限)
6. IAM User 權限 給他 “AmazonS3FullAccess” 就好
7. 新增 .travis.yaml 到 GitHub Project 上面
"後面會再繼續寫步驟,這只是一開始而已,沒這麼簡單"
#####以下是 .travis.yaml的範例#####
language: python
python:
- '2.7'
services:
- docker
before_install:
- chmod +x tests/*.sh
install:
- docker build -t "GitHub Project Name"/squid .
- docker run -di --name squid "GitHub Project Name"/squid
script:
- docker exec -it squid /tests/test_config.sh
- docker exec -it squid /tests/test_service.sh
notifications:
email:
recipients:
- your-email
on_success: change
on_failure: always
slack:
before_deploy:
- zip -r latest-${TRAVIS_BUILD_NUMBER}.zip *
- mkdir -p "GitHub Project Name"
- mv latest-${TRAVIS_BUILD_NUMBER}.zip "GitHub Project Name"/latest-${TRAVIS_BUILD_NUMBER}.zip
deploy:
- provider: s3
access_key_id: "KEY"
secret_access_key: "KEY"
bucket: "GitHub Project Name-bucket"
skip_cleanup: true
local_dir: "GitHub Project Name"
region: your aws region
on:
branch: master