3

КонтекстSShpass не допускается Трэвис CI

У меня есть приложение, в котором я использую модульных тестов и мне нужно доставить этот непрерывный. Я решил использовать github + travis + docker.

Мой Docker контейнер является Ubuntu 12,04 с OpenSSL, что я не могу подключиться извне, и я не имею никаких проблем с этим

мне нужно, когда Трэвис сборки хорошо, чтобы соединить мой Docker контейнер через SSH и для запуска скрипта.

Проблема

На самом деле, я использую:

enter image description here

Но это не работает, потому что sshpass не в белый список. Кажется, что я не могу использовать команду before_install, потому что я использую инфраструктуру на основе контейнера.

NB: Порт 22, я пропустил его во время снимка.

Вопросы

  • Как я могу сделать, чтобы подключить SSH контейнер с Трэвисом, чтобы развернуть мое приложение (только запустить скрипт, который GIT клон/мерзавец тянуть, если каталог существует)
  • ли это хороший способ сделать так, как это происходит с travis, или существует ли что-то еще?

EDIT:

Трэвис новый файл: enter image description here

И журнал

Using worker: worker-linux-968a87ce-1.bb.travis-ci.org:travis-linux-14 
system_info 
Build system information 
Build language: node_js 
Build image provisioning date and time 
Wed Feb 4 18:22:50 UTC 2015 
Operating System Details 
Distributor ID: Ubuntu 
Description: Ubuntu 12.04 LTS 
Release: 12.04 
Codename: precise 
Linux Version 
2.6.32-042stab090.5 
Cookbooks Version 
23bb455 https://github.com/travis-ci/travis-cookbooks/tree/23bb455 
GCC version 
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 
Copyright (C) 2011 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
LLVM version 
clang version 3.4 (tags/RELEASE_34/final) 
Target: x86_64-unknown-linux-gnu 
Thread model: posix 
Pre-installed Ruby versions 
ruby-1.9.3-p551 
Pre-installed Node.js versions 
v0.10.36 
Pre-installed Go versions 
1.4.1 
Redis version 
redis-server 2.8.19 
riak version 
2.0.2 
MongoDB version 
MongoDB 2.4.12 
CouchDB version 
couchdb 1.6.1 
Neo4j version 
1.9.4 
Cassandra version 
2.0.9 
RabbitMQ Version 
3.4.3 
ElasticSearch version 
1.4.0 
Installed Sphinx versions 
2.0.10 
2.1.9 
2.2.6 
Default Sphinx version 
2.2.6 
Installed Firefox version 
firefox 31.0esr 
PhantomJS version 
1.9.8 
ant -version 
Apache Ant(TM) version 1.8.2 compiled on December 3 2011 
mvn -version 
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T17:29:23+00:00) 
Maven home: /usr/local/maven 
Java version: 1.7.0_76, vendor: Oracle Corporation 
Java home: /usr/lib/jvm/java-7-oracle/jre 
Default locale: en, platform encoding: UTF-8 
OS name: "linux", version: "2.6.32-042stab090.5", arch: "amd64", family: "unix" 
git.checkout 
0.26s$ git clone --depth=50 --branch=master git://myPrivateRepo/Project 
Cloning into 'user/Project'... 
remote: Counting objects: 1363, done. 
remote: Compressing objects: 100% (9/9), done. 
remote: Total 1363 (delta 4), reused 0 (delta 0), pack-reused 1354 
Receiving objects: 100% (1363/1363), 874.89 KiB | 0 bytes/s, done. 
Resolving deltas: 100% (263/263), done. 
Checking connectivity... done. 
$ cd user/Project 
$ git checkout -qf commitId 
1.56s$ nvm install 0.10 
######################################################################## 100.0% 
Now using node v0.10.38 
$ node --version 
v0.10.38 
$ npm --version 
1.4.28 
$ nvm --version 
0.23.3 
before_install 
6.72s$ sudo apt-get install sshpass 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
The following package was automatically installed and is no longer required: 
    libgeos-3.2.2 
Use 'apt-get autoremove' to remove them. 
The following NEW packages will be installed: 
    sshpass 
0 upgraded, 1 newly installed, 0 to remove and 102 not upgraded. 
Need to get 10.5 kB of archives. 
After this operation, 56.3 kB of additional disk space will be used. 
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/universe sshpass amd64 1.05-1 [10.5 kB] 
Fetched 10.5 kB in 0s (234 kB/s) 
Selecting previously unselected package sshpass. 
(Reading database ... 75363 files and directories currently installed.) 
Unpacking sshpass (from .../sshpass_1.05-1_amd64.deb) ... 
Processing triggers for man-db ... 
Setting up sshpass (1.05-1) ... 
install 
1.12s$ npm install 
npm WARN package.json [email protected] No description 
npm WARN package.json [email protected] No repository field. 
npm WARN package.json [email protected] No README data 
0.95s$ npm test 
> [email protected] test /home/travis/build/user/project 
> node test 
    First test should fail: 1) First test should fail 
    0 passing (8ms) 
    1 failing 
    1) First test should fail: 
     AssertionError: true == false 
     + expected - actual 
     -true 
     +false 

     at Context.<anonymous> (test/first.js:8:16) 
The command "npm test" exited with 0. 
after_success 
0.91s$ sudo sshpass -p password ssh [email protected] -p 7000 
Done. Your build exited with 0. 

ответ

1

Я вижу два возможных решения вашей проблемы:

  • Переключить на неконтейнер инфраструктуры Travis-CI, добавив sudo: true в ваш .travis-файл, чтобы вы могли установить необходимый пакет.
  • Запросить добавление sshpass в package white list. Запрос можно сделать здесь: https://github.com/travis-ci/travis-ci/labels/apt-whitelist
+0

Я пытался, ничего не произошло. Нет сообщения об ошибке, но ничего не говорит мне, что он работает ... :( – mfrachet

+0

@Skahrz Не могли бы вы разместить ссылку на ваш файл конфигурации .travis? Ваш последний журнал построения может также помочь. –

+0

Частный репозиторий с личной информацией.Я редактирую свой пост, чтобы показать вам скриншоты – mfrachet

0

Можете ли вы использовать SSH-ключ вместо sshpass? Таким образом, вы можете просто использовать ключ SSH для подключения к контейнеру Docker вместо использования пароля.

+0

Я попробую SSH Key после того, как я буду в порядке с SSH с логином/паролем. Недостаточно опыта работы с travis для создания на самом деле – mfrachet

+0

@Skahrz вы можете создать ключ SSH на своей собственной машине, настроить его для своего контейнера Docker и загрузить его на защищенный сервер (например, S3) - вы можете просто загрузить ключ SSH на Travis (или любой CI/окружение). URL-адрес может быть зашифрован, если вы хотите/должны, Travis поддерживает секретные/зашифрованные входы. –

0

sshpass может быть установлен в контейнере Travis CI, добавив:

addons: 
    apt: 
    packages: 
    - sshpass