【问题标题】:CI Deploy script with GitHub, Travis, NPM, and Gulp使用 GitHub、Travis、NPM 和 Gulp 部署 CI 脚本
【发布时间】:2018-01-31 05:51:00
【问题描述】:

我觉得我在尝试从 Github 上的主分支实施 CI、使用 Travis-CI 并将构建的文件推送到我的服务器上时遇到了障碍。

我正在尝试的概述:

  • 将新代码推送到 github 上的分支
  • 测试运行并合并到主分支后,Travis 接管。
  • Travis 运行测试,然后在我的 DigitalOcean 机器上运行部署脚本。
  • 部署脚本通过 NPM 任务运行,然后是 Gulp
  • 如果一切顺利,node_modules 文件夹将被更新(来自 package.json),所有从 Gulp 编译的文件都将在服务器上更新。

我已经让它几乎可以工作了,它似乎是某种权限问题(即使我没有收到任何构建错误)

Travis 在主推上成功运行,找到了部署脚本,并顺利运行它而没有任何问题。它以 0 结尾退出,并且构建是绿色的。但是,当我 ssh 检查以确保应用了更改时 - 看起来没有什么不同。

似乎 Travis 正在自己的容器中构建,但实际的盒子没有得到更新。

这是我的 .travis.yml 文件:

sudo: required
language: node_js
node_js:
  - "stable"

script:
  - /bin/true

deploy:
  - provider: script
    skip_cleanup: true
    script: >-
      wget http://example.com/scripts/deploy_script.sh;
      chmod +x deploy_script.sh;
      sh ./deploy_script.sh theme;
    on:
      branch: master

这是我的 deploy_script.sh:

#!/usr/bin/env bash

readonly SELF="$(basename $0)"
readonly SCRIPT_PATH="$(dirname $0)"
readonly REAL_PATH="$(cd "$(dirname "$1")"; pwd)"
readonly DATE=`date +%Y-%m-%d`


usage() {
    cat <<EOF

Usage:
     $SELF <theme | cms>

     Script to deploy headband theme for grav cms

EOF
}




cms() {

    cd /path/to/cms
    echo "Updating CMS ... can add a current date here or what not" >> /tmp/$DATE-deploy.log
    composer install --no-dev -o

}

theme() {
    cd ./themes/headband
    pwd
    echo "Updating Theme ... can add a current date here or what not" >> /tmp/$DATE-deploy.log
    rm -rf ./node_modules >> /tmp/$DATE-deploy.log
    echo "REMOVED NODE MODULES FOLDER"
    npm cache clean >> /tmp/$DATE-deploy.log
    echo "NPM CACHE CLEANED ... ... ... ... ... "
    npm install --save >> /tmp/$DATE-deploy.log
    echo "npm installed ... moving on ..."
    npm update >> /tmp/$DATE-deploy.log
    echo "NPM UPDATED ... ... ... ..."
    gulp >> /tmp/$DATE-deploy.log
    echo "GULP TASK COMPLETED ... ... ... ..."
}


# Exit if user input is < 1 params
if [ "$#" -lt "1" ]; then
    usage
    exit 2
fi


# Check for $action anything else echo usage
while [ "$#" -gt 0 ]; do
    action="$1"
    case $action in
        cms)
            cms
            exit 0
        ;;
        theme)
            theme
            exit 0
        ;;
        *)
            usage
            exit 2
        ;;
    esac
done

usage
exit 2

如果有人能指出我正确的方向,那就太棒了。

【问题讨论】:

    标签: github npm gulp continuous-integration travis-ci


    【解决方案1】:

    所以经过多次失败尝试后,我在服务器端使用 scp 和 sans deploy 脚本成功部署(尽管仍然想走那条路来清理 .yml)

    由于没有压缩或存档,目前需要一些时间,但是如果有人可以提供帮助,那就太棒了。否则会在稍后更新。

    我也试图让rsync 工作,但还没有。

    这是部署构建目录中所有文件的最终 .travis.yml 文件

    sudo: required
    language: node_js
    node_js:
    - stable
    script:
    - "/bin/true"
    addons:
      ssh_known_hosts:
      - <ip-of-server>
    after_success:
    - openssl aes-256-cbc -K $encrypted_<secret>_key -iv $encrypted_<secret>_iv -in deploy_rsa.enc -out /tmp/deploy_rsa -d
    - eval "$(ssh-agent -s)"
    - chmod 600 /tmp/deploy_rsa
    - ssh-add /tmp/deploy_rsa
    
    deploy:
    - provider: script
      skip_cleanup: true
      script: cd <build-directory> && rm -rf dist/ node_modules/ && npm install && gulp
      on:
        branch: master
    - provider: script
      skip_cleanup: true
      script: scp -P <port> -r <directory-to-deploy> <user>@<server-ip>:<deploy-directory>
      on:
       branch: master
    

    【讨论】:

      猜你喜欢
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 2019-12-28
      相关资源
      最近更新 更多