回购链接: https://github.com/oneezy/sweet-element
Travis CI链接: https://travis-ci.org/oneezy/sweet-element
为了更详细地解释我的目标是什么,我试图简化我的Github + Travis CI工作流程,其中包含存储在{{1}中的2个环境变量GH_TOKEN
+ GH_REF
和一个可执行的.travis.yml
shell脚本,用于自动部署演示和放大器从命令行我gpages_build.sh
时,向Github页面on_success:
发送文档。我想以这样的方式创建我的git push
,以便永远不必手动编辑,以便智能足以生成.travis.yml
所需的值取决于已存在的信息(下面有更多详细信息)。
我已经关注了2篇博文,这些博文让我现在已经到了这一点:
教程1: How to build Polymer components with Github and Travis CI
教程2: Automatic github pages deployment for Polymer elements with Travis CI
✔从Github创建"个人访问令牌"
✔使用GH_REF
命令将travis encrypt
环境变量添加到GH_TOKEN
✔添加.travis.yml
环境变量
✔使用GH_REF: github.com/oneezy/sweet-element
设置其他所有内容
✔使用.travis.yml
自动部署到Github Pages
✔使gpages_build.sh
可执行文件w / gpages_build.sh
✔ git update-index --chmod=+x gpages_build.sh
并观看所有内容
✖在git push
中手动编写GH_REF
值是重复/乏味的
✖手写.travis.yml
是重复/乏味的
?我可以使用已存在的信息动态生成git update-index --chmod=+x gpages_build.sh
值吗?
?我可以从GH_REF
或bower.json
提取信息以生成package.json
值吗?
?我可以从GH_REF
提取信息以生成git config
值吗?
? Travis CI是否提供可用于代替GH_REF
的任何变量?
?如何为所有项目制作GH_REF
脚本可执行文件?
?我可以从整个不同的仓库执行gpages_build.sh
脚本吗?
?我可以从gpages_build.sh
生成gpages_build.sh
脚本吗?
.travis.yml (Github Link)
.travis.yml
gpages_build.sh (Github Link)
language: node_js
node_js: stable
sudo: required
dist: trusty
addons:
firefox: latest
apt:
sources:
- google-chrome
packages:
- google-chrome-stable
install:
- npm install -g bower polymer-cli
- npm install
- bower install
script:
- xvfb-run polymer test
after_success:
- if [ "$TRAVIS_BRANCH" = "master" ]; then
./gpages_build.sh oneezy sweet-element "Justin O'Neill'" justin@oneezy.com; fi
env:
global:
- GH_REF: github.com/oneezy/sweet-element
- secure: p1OHpnsMIpMjQ4yiFAZJoDZBr/5VHXel+HHC9s8O+MvIqyv5IdxNexkmQKYJneDfYG8XZ/8aNoP4Bsiycysw5POCX1Z9BAwkEBIQ8rdgslzNoWronbtAZUBQAUFxQoVaKt1hBLXNpfyrfRGIfNtAKgA8pekurvIcgjnPmzsNGWr1ztj2y7/5mR7VZZQy3bcM9cZNZLUymyr+RENOXufJnPG2ve/yha/VynUz2mPWEIQPPhg17ar2ICWZL0EZjG6lajR5g83TtSrDxRN2tTGpVWlKVi6udDB/JU+RLt744qhblXwRpFqh1E7r2xUxJWvibQt+UtuRwi6iNJxAy40/XW6Ss/unkwjmRZgU+G98Z3ojJj8Nrp9xah0H2S6M2CH8ySYHnBO6FhunQ3oeXYUn7mYyRiWRz1sjBn0rhWorD67pBFRKIRKFjPPlD9BuI/l/mD8ulgLa7IJFnkt5ZHJx3cWU/BGQ8xLcfor4SgkE4sxlZQWkkn2m2gwvw33JJP6Vv97cs/mgEYORVlBGdG5eAQc1+k18sbGTbbZZojJr5wp4c9VrnDKA7Ztt70ygSHn4etQRogngKPsrKHWnK2q1zBlWoTDq5zjdYZFQt+VC8fET87VUH5Rl7Cn9Chjg8ybY1a4Dq4zKM4uJVKsAYtL+GYNS/kQ/Vgpsd+UTVGx/lDA=
答案 0 :(得分:2)
我正在尝试简化我的Github + Travis CI工作流程,其中包含存储在
GH_TOKEN
中的2个环境变量GH_REF
+.travis.yml
...
git clone "https://${GH_TOKEN}@${GH_REF}" --single-branch
您的脚本可以使用the documentation
中引用的TRAVIS_REPO_SLUG
环境变量
答案 1 :(得分:1)
我设法做了一切我想。
GH_REF
gpages_build.sh
脚本自动TRAVIS_REPO_SLUG
值(感谢提示@osowskit!) git update-index --chmod=+x gpages_build.sh
并将其存储在自己的回购中......当需要它时,只需bower install
它!这是我在成功构建后用于创建和测试<custom-elements>
w / Travis CI 并自动部署到 Github页面的确切方法。
gpages_build.sh(script):
git update-index --chmod=+x gpages_build.sh
命令使我的脚本可执行,我需要将这个过程集中在一个方便的Github repo (oneezy/build-tools)< / em>的。这样做的好处是:
GH_REF
变量自动化并且不必每次都写出来,Travis CI为我们提供了TRAVIS_REPO_SLUG
变量,对于任何Github存储库,它基本上都是username/repo
正在努力。你这样写出来:GH_REF="github.com/${TRAVIS_REPO_SLUG}"
```
# This script pushes a demo-friendly version of your element and its
# dependencies to gh-pages.
# usage gp Polymer core-item [branch]
# Run in a clean directory passing in a GitHub org and repo name
GH_REF="github.com/${TRAVIS_REPO_SLUG}"
org=`echo ${TRAVIS_REPO_SLUG} | cut -f 1 -d /`
repo=`echo ${TRAVIS_REPO_SLUG} | cut -f 2 -d /`
name="Travis CI"
email="builds@oneezy.com"
branch=${3:-"master"} # default to master when branch isn't specified
mkdir temp && cd temp
# make folder (same as input, no checking!)
mkdir $repo
git clone "https://${GH_TOKEN}@${GH_REF}" --single-branch
# switch to gh-pages branch
pushd $repo >/dev/null
git checkout --orphan gh-pages
# remove all content
git rm -rf -q .
# use bower to install runtime deployment
bower cache clean $repo # ensure we're getting the latest from the desired branch.
git show ${branch}:bower.json > bower.json
echo "{
\"directory\": \"components\"
}
" > .bowerrc
bower install
bower install $org/$repo#$branch
git checkout ${branch} -- demo
rm -rf components/$repo/demo
mv demo components/$repo/
# redirect by default to the component folder
echo "<META http-equiv="refresh" content=\"0;URL=components/$repo/\">" >index.html
git config user.name $name
git config user.email $email
# send it all to github
git add -A .
git commit -am 'Deploy to GitHub Pages'
git push --force --quiet -u "https://${GH_TOKEN}@${GH_REF}" gh-pages > /dev/null 2>&1
popd >/dev/null
```
Travis.yml配置:
让我离开的一个 GOTCHA 是GH_TOKEN
变量,这是您需要Github的 Personal Access Token 对存储库的读/写功能。由于此令牌具有此功能,我需要使用Travis CLI (Travis命令行工具)对其进行加密。 travis encrypt GH_TOKEN=********* --add
,会自动将加密变量添加到.travis.yml
文件中。我的印象是我可以为每个回购使用相同的加密 GH_TOKEN
,但我发现情况并非如此。当您使用Travis加密任何内容时,您实际上将该加密绑定到您所在的存储库,E.G。:您必须在每个存储库中travis encrypt GH_TOKEN=********* --add
。一种可能的解决方法是在config
文件中配置一个别名/命令,这个信息存储在里面,但我还没有探索过这个理论。
接下来要做的是bower install -s gpages_build.sh
脚本,并从.travis.yml
w / ./bower_components/build-tools/gpages_build.sh
运行。这将自动从我们的build-tools
repo中提取脚本并运行它。
```
language: node_js
node_js: stable
sudo: required
dist: trusty
addons:
firefox: latest
apt:
sources:
- google-chrome
packages:
- google-chrome-stable
cache:
directories:
- node_modules
- "$HOME/.cache/bower"
install:
- npm install -g bower polymer-cli
- npm install
- bower install
script:
- xvfb-run polymer test
after_success:
- if [ ${TRAVIS_PULL_REQUEST} = "false" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
bower install -s oneezy/build-tools && ./bower_components/build-tools/gpages_build.sh;
fi
# DO EVERY TIME:
# travis encrypt GH_TOKEN=**************** --add
# env:
# global:
# secure: ZwNuFN1cryC5dff4c3a1qePkoRZoug+HDiN55dFATTt7Opk20C8SgO+RGEWqYWelFkUN2jhAyoJ91GFMxOyYqbqZP+mQfBaFWgBZoKIcGcDur5in4z6ZaWfw65X03K0HIaaKaunpO4C1d/d++zMhqvudhaJ4JgXJXts5cUdmXGxCIEhKE+mH5d76VK4fbpyrtpewllqHeaiIE88oFZ0L8xQP8K7SUXukvVmE1Re0Kl0UjXjsdSUftcj+gnOcBxqGjVlSjQ9Bk0zmP+2nHYo8Gx=
```