2015-10-13 20 views
5

Mam skrypt poprzedzający wypalanie w moim repozytorium git, które uruchamia testy. Jeśli testy minie, push idzie dalej. Jeśli testy zakończą się niepowodzeniem, przerywa to działanie.git pre-push: połączenie zamykane zdalnym hostem podczas uruchamiania testów

Scenariusz działał świetnie przez jakiś czas, aż testy zaczęły przekraczać 3 minuty. stdout pokazuje "Połączenie z bitbucketem zamkniętym przez zdalny host" w środku wyjścia testowego. Następnie wszystkie testy przechodzą, a pchnięcie w rzeczywistości nie przechodzi.

Oto skrypt pre-Push

#!/bin/sh 
DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) 

# This script runs tests before any push to the MASTER branch and fails 
current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') 
echo "Current branch: "$current_branch 
if [ $current_branch = "master" ] 
then 
    echo "Pushing to MASTER branch requires tests to pass..." 
    ./run.sh test 
    if [ $? = 0 ] 
    then 
     exit 0 
    else 
     echo "***ERROR> Failed to pass tests! Get tests to pass and then try again..." 
     exit 1 
    fi 
else 
    echo "Skipping tests since we're not pushing to MASTER..." 
fi 

Odpowiedz

1

Skończyło się na wywołaniu git push --no-verify wewnątrz przypadku sukcesu. Więc skutecznie popycha dwa razy.

#!/bin/sh 
DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) 

# This script runs tests before any push to the MASTER branch and fails 
current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') 
echo "Current branch: "$current_branch 
if [ $current_branch = "master" ] 
then 
    echo "Pushing to MASTER branch requires tests to pass..." 
    ./run.sh test 
    if [ $? = 0 ] 
    then 
     # workaround to guarantee my push goes through even if the first attempt times out 
     git push --no-verify 
     exit 0 
    else 
     echo "***ERROR> Failed to pass tests! Get tests to pass and then try again..." 
     exit 1 
    fi 
else 
    echo "Skipping tests since we're not pushing to MASTER..." 
fi 
0

Czy sprawdził bitbucket.properties? Być może trafiasz na kilka limitów czasu, takich jak: process.timeout.execution lub plugin.bitbucket-scm-git.backend.timeout.idle. Prawdopodobnie szybkim sprawdzianem będzie sprawdzenie, czy ustawione są pewne limity czasu na 180 sekund. Here można znaleźć więcej szczegółów na temat dostępnych właściwości.

+0

gdzie mogę ustawić te parametry? – saada

+0

@saada Proszę zobaczyć moją zaktualizowaną odpowiedź. – dan

+0

Nie hostujemy własnego serwera bitbucket, więc nie sądzę, że mam dostęp do tych właściwości – saada