zoukankan      html  css  js  c++  java
  • 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"
  • 相关阅读:
    array_map()与array_shift()搭配使用 PK array_column()函数
    Educational Codeforces Round 8 D. Magic Numbers
    hdu 1171 Big Event in HDU
    hdu 2844 poj 1742 Coins
    hdu 3591 The trouble of Xiaoqian
    hdu 2079 选课时间
    hdu 2191 珍惜现在,感恩生活 多重背包入门题
    hdu 5429 Geometric Progression 高精度浮点数(java版本)
    【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
    hdu::1002 A + B Problem II
  • 原文地址:https://www.cnblogs.com/liugx/p/10339010.html
Copyright © 2011-2022 走看看