我觉得我正在尝试从 Github 上的主分支实现 CI,使用 Travis-CI 并将构建的文件推送到我的服务器上。
我正在尝试的内容概述:
- 将新代码推送到 github 上的分支
- 在测试运行并合并到主分支后,特拉维斯接管。
- Travis运行测试,然后在我的DigitalOcean盒子上运行部署脚本。
- 部署脚本通过 NPM 任务运行,然后 Gulp
- 如果一切正常,node_modules文件夹将被更新(来自package.json(,并且来自Gulp的所有编译文件都将在服务器上更新。
我已经让它几乎可以工作了,而且似乎是某种权限问题(即使我没有收到任何构建错误(
Travis 在主推送上成功运行,找到部署脚本,并运行它而没有任何问题。它以末尾的 0 退出,并且构建为绿色。但是,当我通过ssh检查以确保应用了更改时-看起来没有什么不同。
似乎特拉维斯正在自己的容器中构建,但实际的盒子没有得到更新。
这是我的.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
如果有人能指出我正确的方向,那就太神奇了。
因此,经过多次失败的尝试,我在服务器端使用scp
和 sans 部署脚本时成功部署(尽管仍然想走那条路来清理 .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