GitHub + circleCI 自動構建/自動部署 應用

 GitHub + circleCI 自動構建/自動部署, 這裏略過了單元測試,以部署 laravel 應用爲例子php

 比起 gitlab + ansible + genkins 操做起來節省了不少硬件資源,感謝 微軟 免費了 GitHub 私有倉庫laravel


一、GitHub 相關git

  a、建立 github 倉庫(如今能夠免費建立私有倉庫了,我的項目能知足了)github

  b、配置 SSH 公鑰,能夠走 SSH 渠道免密 拉取代碼docker

二、circleCI 相關json

  a、github 登錄 https://circleci.com ,建立一個任務,直接關聯 github 的某個倉庫bootstrap

  b、配置此任務構建時 從 GitHub checkout 代碼時 的 SSH 憑證,從github 配置的ssh key中選一個便可api

  c、配置此任務部署時須要部署的 一對SSH的密鑰(隨便在哪裏生成都行)中的 SSH rsa 私鑰,******* 注意 : 將遠程服務器須要在 ~/.ssh/authorized_keys 把在circleCI上部署的死要對應的公鑰(id_rsa.pub)另起一行追加進去緩存

 

三、整合代碼bash

  代碼中加入.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"
相關文章
相關標籤/搜索