私はプロジェクトに参加したばかりで、travis-ciは初めてです。ビルドを実行するために、.travis.ymlを少しずつ変更したり、ソースを少しずつ変更したりする必要はありません。ジェンキンズを使用すると、ジェンキンズをダウンロードしてローカルで実行することができます。トラビスはこのようなものを提供していますか?
注意:travis-ci cliを見てダウンロードしましたが、そのAPIを呼び出してgithubリポジトリに接続するだけなので、プッシュしなくても再起動しても問題ありません。最後のビルド.
このプロセスにより、コンピューター上のTravisビルドジョブを完全に再現できます。また、いつでもプロセスを中断してデバッグできます。以下は、 php-school/cli-menuのジョブ#191.1 の結果を完全に再現した例です。
リファレンス: https://docs.travis-ci.com/user/common-build-problems/
独自の一時ビルドIDを作成します
BUILDID="build-$RANDOM"
表示 ビルドログ 、WORKER INFORMATIONの詳細表示ボタンを開いてINSTANCE行を見つけ、ここに貼り付けて実行します(コロンの後にタグを置き換えます 利用可能な最新のものと) :
INSTANCE="travisci/ci-garnet:packer-1512502276-986baf0"
ヘッドレスサーバーを実行する
docker run --name $BUILDID -dit $INSTANCE /sbin/init
接続されたクライアントを実行する
docker exec -it $BUILDID bash -l
これで、Travis環境内にいます。 su - travis
を実行して開始します。
このステップは明確に定義されていますが、より面倒で手作業です。 Travisが環境で実行するすべてのコマンドが見つかります。これを行うには、右の列で次のようなタグがあるすべてのものを探します 0.03s。
左側に、実際のコマンドが表示されます。これらのコマンドを順番に実行します。
history
コマンドを実行する良い機会です。プロセスを再起動し、それらのコマンドを再生して、更新されたコードベースに対して同じテストを実行できます。
ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"
then cat ~/.ssh/id_rsa.pub
および ここをクリック キーを追加するgit pull
して、GitHubにプッシュする前に、開発ボックスからコミットを読み込むことができます.travis.yml
に変換されるかを理解するのはあなたの責任です。Travis-ciは、dockerを使用する新しいコンテナベースのインフラストラクチャを提供します。これは、travis-ciビルドをローカルで再現することによってトラブルシューティングしようとしている場合に非常に便利です。これはTravis CIの ドキュメンテーション から取られています。
ビルド内の正確な問題を突き止めるのに問題がある場合は、ビルドをローカルで実行するのが役立ちます。これを行うには、私たちのコンテナベースのインフラストラクチャを使用する必要があり(つまり、Sudo: false
に.travis.yml
を含める)、Travis CIでどのDockerイメージを使用しているかを知る必要があります。
Docker Hub から画像を選択します。言語固有の画像を使用していない場合はci-Ruby
を選択してください。端末を開き、画像のURLを使用してインタラクティブなDockerセッションを開始します。
docker run -it travisci/ubuntu-Ruby:18.04 /bin/bash
travis
ユーザーに切り替えます。
su - travis
/
フォルダにクローンします。更新:私は今完全なターンキー、オールインワンの答えを持っています、 https://stackoverflow.com/a/49019950/300224 を見てください。把握するのに3年しかかかりませんでした!
Travisのドキュメントによると: https://github.com/travis-ci/travis-ci 私たちが知っていて愛しているTravis CIウェブサービスを提供するために結集するプロジェクトの調合があります。次のプロジェクトのサブセットは、プロジェクトでmake test
を使用してローカルの.travis.yml
機能を許可するように見えます。
travis-build 各ジョブのビルドスクリプトを作成します。これは.travis.yml
ファイルから設定を取得し、travis-workerによってビルド環境で実行されるbash
スクリプトを作成します。
travis-cookbooks はビルド環境のプロビジョニングに使用される Chef cookbooksを保持します。
travis-worker はクリーンな環境でビルドスクリプトを実行する責任があります。ログ出力をtravis-logsに流し、状態の更新(ビルド開始/終了)をtravis-hubにプッシュします。
(他のサブプロジェクトは、GitHub、それらのWebインターフェース、Eメール、およびそれらのAPIと通信する責任があります。)
Scott McLeodのものと似ていますが、これも.travis.ymlからステップを実行するためのbashスクリプトを生成します。
# choose the image according to the language chosen in .travis.yml
$ docker run -it -u travis quay.io/travisci/travis-jvm /bin/bash
# now that you are in the docker image, switch to the travis user
Sudo - travis
# Install a recent Ruby (default is 1.9.3)
rvm install 2.3.0
rvm use 2.3.0
# Install travis-build to generate a .sh out of .travis.yml
cd builds
git clone https://github.com/travis-ci/travis-build.git
cd travis-build
gem install travis
# to create ~/.travis
travis version
ln -s `pwd` ~/.travis/travis-build
bundle install
# Create project dir, assuming your project is `AUTHOR/PROJECT` on GitHub
cd ~/builds
mkdir AUTHOR
cd AUTHOR
git clone https://github.com/AUTHOR/PROJECT.git
cd PROJECT
# change to the branch or commit you want to investigate
travis compile > ci.sh
# You most likely will need to edit ci.sh as it ignores matrix and env
bash ci.sh
wwtd(travisが行うこと) Ruby gemを使用して、ローカルマシンでtravisで実行されるのとほぼ同じ方法でテストを実行します。
ビルドマトリックスを再作成して各設定を実行します。プッシュする前に設定を確認してください。
gem i wwtd
wwtd
tl; dr https://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in-a-docker-image inで指定された画像を使用 https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli との組み合わせ。
私のビルドのテストの1つ ローカルで取得できないエラーで失敗した理由を調べたいと思いました。
動作しました。
実際にうまくいったのは、 Dockerイメージのローカルでのトラブルシューティング docsページで指定されているイメージを使用することでした。私の場合はtravisci/ci-garnet:packer-1512502276-986baf0
でした。
https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli に記載されている手順に従ってtravise compile
を追加することができました。
dm@z580:~$ docker run --name travis-debug -dit travisci/ci-garnet:packer-1512502276-986baf0 /sbin/init
dm@z580:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
travisci/ci-garnet packer-1512502276-986baf0 6cbda6a950d3 11 months ago 10.2GB
dm@z580:~$ docker exec -it travis-debug bash -l
root@912e43dbfea4:/# su - travis
travis@912e43dbfea4:~$ cd builds/
travis@912e43dbfea4:~/builds$ git clone https://github.com/travis-ci/travis-build
travis@912e43dbfea4:~/builds$ cd travis-build
travis@912e43dbfea4:~/builds/travis-build$ mkdir -p ~/.travis
travis@912e43dbfea4:~/builds/travis-build$ ln -s $PWD ~/.travis/travis-build
travis@912e43dbfea4:~/builds/travis-build$ gem install bundler
travis@912e43dbfea4:~/builds/travis-build$ bundle install --gemfile ~/.travis/travis-build/Gemfile
travis@912e43dbfea4:~/builds/travis-build$ bundler binstubs travis
travis@912e43dbfea4:~/builds/travis-build$ cd ..
travis@912e43dbfea4:~/builds$ git clone --depth=50 --branch=master https://github.com/DusanMadar/PySyncDroid.git DusanMadar/PySyncDroid
travis@912e43dbfea4:~/builds$ cd DusanMadar/PySyncDroid/
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ ~/.travis/travis-build/bin/travis compile > ci.sh
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ sed -i 's,--branch\\=\\\x27\\\x27,--branch\\=master,g' ci.sh
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ bash ci.sh
.travis.yml
からのすべてが期待通りに実行されました(依存関係のインストール、テストの実行など)。
注 bash ci.sh
を実行する前に、--branch\=\'\'\
で--branch\=master\
をsed -i ...
に変更する必要がありました(最後から2番目のci.sh
コマンドを参照)。
それでもうまくいかない場合は、以下のコマンドで目的の行番号を特定することができます。手動で行を編集できます。
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ cat ci.sh | grep -in branch
840: travis_cmd git\ clone\ --depth\=50\ --branch\=\'\'\ https://github.com/DusanMadar/PySyncDroid.git\ DusanMadar/PySyncDroid --echo --retry --timing
889:export TRAVIS_BRANCH=''
899:export TRAVIS_PULL_REQUEST_BRANCH=''
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$
うまくいきませんでした。
この質問に対する回答には従ったが、 https://hub.docker.com/u/travisci/ にあるinstance
に記載されている画像( travis-ci-garnet-trusty-1512502259-986baf0
)が見つかりませんでした。
ワーカーバージョン を指し示す travis-ci/worker commit およびその travis-worker-install は、イメージレジストリとしてquay.io/travisci/
を参照します。それで私はそれを試しました。
dm@z580:~$ docker run -it -u travis quay.io/travisci/travis-python /bin/bash
travis@370c23a773c9:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
travis@370c23a773c9:/$
dm@z580:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/travisci/travis-python latest 753a216d776c 3 years ago 5.36GB
確かに信頼できない(Ubuntu 14.04)そして小さくない。
Travisをローカルで実行した最初の理由がよくわからない場合は、 just で試してみたいのであれば、ここでは関係ありません。
すでにホストされているTravisでの経験があり、自分のデータセンターでも同じ経験を得たい場合は、先に進んでください。
2014年12月 Travis CIより、エンタープライズオンプレミスバージョンが提供されます。
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/ /
価格も記事の一部です。
ライセンスは座席ごとに行われ、各ライセンスには20人のユーザーが含まれます。価格は1ライセンスあたり6,000ドルから始まり、20ユーザーと5同時ビルドが含まれます。 8,500ドルの無制限のビルドでプレミアムオプションがあります。
Travisビルドを実行するためにDockerを使用する Trevor を試すことができます。
その説明から:
私はしばしばNode.jsの複数のバージョンに対してテストを実行する必要があります。しかし、テストを実行するためだけに、n/nvmを使用して手動でバージョンを切り替えたり、コードをTravis CIにプッシュしたりしたくはありません。
だからこそ私はTrevorを作った。これは.travis.ymlを読み、あなたが要求したすべてのバージョンでテストを実行します。ちょうどTravis CIと同じです。今、あなたはプッシュの前にテストしてあなたのgit履歴をきれいに保つことができます。
バウンスホストを介してTravis CI環境にSSH接続することが可能です。この機能はTravis CIに組み込まれていませんが、次の手順で実現できます。
travis
ユーザーを作成し、SSH接続できることを確認します。これらの行をあなたのscript:
の.travis.yml
セクションに入れてください(例えば最後に)。
- echo travis:$sshpassword | Sudo chpasswd
- Sudo sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config
- Sudo service ssh restart
- Sudo apt-get install sshpass
- sshpass -p $sshpassword ssh -R 9999:localhost:22 -o StrictHostKeyChecking=no travis@$bouncehostip
$bouncehostip
はバウンスホストのIP /ホスト、$sshpassword
はあなたが定義したSSHパスワードです。これらの変数は 暗号化変数 として追加できます。
変更をプッシュしてください。バウンスホストにSSH接続することができるはずです。
出典: Travis CIビルド環境へのシェル 。
これが完全な例です。
# use the new container infrastructure
Sudo: required
dist: trusty
language: python
python: "2.7"
script:
- echo travis:$sshpassword | Sudo chpasswd
- Sudo sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config
- Sudo service ssh restart
- Sudo apt-get install sshpass
- sshpass -p $sshpassword ssh -R 9999:localhost:22 -o StrictHostKeyChecking=no travisci@$bouncehostip
GitHubの c-mart/travis-Shell
を参照してください 。