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


 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"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM