如何为Travis-CI加密和使用TheMovieDB API_KEY?
问题描述:
我有一个使用MovieDB.org API显示电影的Android应用程序。如何为Travis-CI加密和使用TheMovieDB API_KEY?
我已经做了我的加密API_KEY theMovieDB.org为travic CI如下:
gem install --user travis
travis encrypt API_KEY = my_api_key --add
所以,基本上,它会在.travis.yml一个安全密钥并将其存储。 但它似乎没有工作。我收到以下错误:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
我知道我得到这个错误,因为特拉维斯CI想不出我API_KEY。因为无论何时直接使用我的密钥,Travis CI都会通过构建。 但不幸的是没有用上面的代码加密那个KEY。 我正在做他们在文档中提到的一切。
这是我.tavis.yml:
language: android
env:
global:
secure: some_lengthy_secure_key
android:
components:
- platform-tools
- build-tools-25.0.3
- android-25
- extra-android-m2repository
script:
- ./gradlew build
before_install:
- chmod +x gradlew
branches:
only:
- master
答
我将与你的诊断似乎并不匹配您所描述的错误提意见达成一致。总之:
你能删除空格周围travis encrypt API_KEY = my_api_key --add
,使之成为:
travis encrypt 'API_KEY=my_api_key' --org -r Parag2385/PopularMovies-P
请注意一些其他的变化:
- 加引号的变量赋值。请检查密钥中是否有单引号。
- 增加了一些事情,以确保正确的端点合适的项目选择
- 删除
--add
的事情,所以请得到的字符串复制到.travis.yml的适当位置。这是你有机会删除以前的,错误的条目:)
错误清楚地表明你的*编译*失败。是什么让你认为这与API密钥有关?只有在程序运行之前,该密钥才会被使用。 –
因为当我在没有API_KEY的Android studio上编译我的项目时,它给了我完全相同的错误。并且使用API_key,它可以成功地在仿真器上以及在实际设备上遵循并运行。那么还有什么原因可以在那里? –
而且,当我将我的API_KEY保存在gradle.properties文件中,然后在travis CI上构建时,它不会给我错误,而是成功构建传递。 但出于安全原因,我无法将我的API_KEY保存在GitHub仓库中,对不对? –