GitHub + circleCI 自動構建/自動部署, 這里略過了單元測試,以部署 laravel 應用為例子
比起 gitlab + ansible + genkins 操作起來節省了很多硬件資源,感謝 微軟 免費了 GitHub 私有倉庫
1、GitHub 相關
a、創建 github 倉庫(現在可以免費創建私有倉庫了,個人項目能滿足了)
b、配置 SSH 公鑰,可以走 SSH 渠道免密 拉取代碼
2、circleCI 相關
a、github 登陸 https://circleci.com ,創建一個任務,直接關聯 github 的某個倉庫
b、配置此任務構建時 從 GitHub checkout 代碼時 的 SSH 憑證,從github 配置的ssh key中選一個即可
c、配置此任務部署時需要部署的 一對SSH的密鑰(隨便在哪里生成都行)中的 SSH rsa 私鑰,******* 注意 : 將遠程服務器需要在 ~/.ssh/authorized_keys 把在circleCI上部署的死要對應的公鑰(id_rsa.pub)另起一行追加進去
3、整合代碼
代碼中加入.circleci文件夾,並添加配置信息,就簡單的實現自動構建和自動部署了
部署后的站點

創建一個倉庫並配置部署key

circlrCI 任務后台配置 代碼檢出需要用到的 github ssh key,直接選一個即可
circleCI 配置能用SSH 私鑰登陸遠程服務器的 key

circlrCI 配置任務信息

circlrCI 配置任務執行過程中可以執行的腳本

circlrCI 后台能看見任務列表

具體的 構建/部署任務 詳情

對於個人站點來說,節省了不少手動操作時間
最后,附上 .circleci 的配置和相關腳本
config.yml
version: 2 jobs: build: docker: - image: circleci/php:7.1-browsers working_directory: /tmp/workspace steps: - run: echo "====================構建開始==============================" - checkout - restore_cache: keys: - v1-dependencies-{{ checksum "composer.json" }} # 如果沒有匹配的緩存則使用最新的緩存 - v1-dependencies- - run: composer install -n --prefer-dist # 運行單元測試 # - run: phpunit - persist_to_workspace: root: . paths: - ./* - run: echo "====================構建完畢==============================" deploy: machine: timezone: Asia/Shanghai # 設置上海時區 enabled: true working_directory: /tmp/workspace steps: - run: echo "====================部署開始==============================" - attach_workspace: at: /tmp/workspace - run: pwd && ls -al - run: name: Deploy Over SSH command: ./.circleci/deploy-master.sh - run: echo "====================部署完畢==============================" workflows: version: 2 build-and-deploy: jobs: - build - deploy: requires: - build filters: branches: only: master
deploy-master.sh
#!/usr/bin/env bash user=root host=xxx.xxx.xxx.xxx src=`pwd`"/" des=/data/www/api.www.zjj7.com/ now=`date +"%Y-%m-%d %H:%M:%S"` rsync -vzrc --delete --exclude ".git" --exclude ".env" --exclude ".circleci" $src $user@$host:$des ssh $user@$host "sudo chown -R www:www $des" ssh $user@$host "chmod -R 775 $des/bootstrap/cache && chmod -R 775 $des/storage && cd $des && pwd && ls -al" echo "$now update $host $des code"
