我在Python应用程序测试中有一个travis-ci的.yml文件:
...
matrix:
include:
- env: BUILD_DOCS=true
python: '2.7'
before_install:
- test -z "$BUILD_DOCS" || openssl aes-256-cbc -K $encrypted_key -iv $encrypted_iv
-in keypair.enc -out ~/.ssh/id_rsa -d
- test -z "$BUILD_DOCS" || chmod 600 ~/.ssh/id_rsa
这在原始存储库中的GitHub上触发构建时有效。但是,当我从我的fork发出一个pull请求时,由于我的fork无法访问那些加密的params,它会中断。
我需要做的就是添加一个检查是否存在,如果它们不存在则跳过该部分。但我不知道怎么做,这是我第一次打开YAML文件。我试过谷歌搜索,但没有找到解决方案。
这是错误:
$ test -z "$BUILD_DOCS" || openssl aes-256-cbc -K $encrypted_key -iv $encrypted_iv -in keypair.enc -out ~/.ssh/id_rsa -d
iv undefined
The command "test -z "$BUILD_DOCS" || openssl aes-256-cbc -K $encrypted_key -iv $encrypted_iv -in keypair.enc -out ~/.ssh/id_rsa -d" failed and exited with 1 during .
从我到目前为止所听到的内容来看,这应该很容易解决,但我不知道语法。有人有这方面的经验吗?
答案 0 :(得分:0)
如果一个不同的困扰的灵魂在将来遇到这个问题,我今天设法解决了。
Travis有一个方便变量,可以帮助:
TRAVIS_PULL_REQUEST is set to the pull request number if the current job is a pull request build, or false if it’s not.
所以,我已将其与ifyml文件中使用的if语法一起使用。我不知道这是否是最佳解决方案,但它对我有用。
这是我更改的代码:
matrix:
include:
- env: BUILD_DOCS=true
python: '2.7'
before_install:
- if [ $TRAVIS_PULL_REQUEST == 'false' ]; then
test -z "$BUILD_DOCS" || openssl aes-256-cbc -K $encrypted_key -iv $encrypted_iv -in keypair.enc -out ~/.ssh/id_rsa -d;
test -z "$BUILD_DOCS" || chmod 600 ~/.ssh/id_rsa;
fi