【发布时间】: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