2017-11-20 4 views
2

Ich versuche eine TeamCity Build-Konfiguration zu erstellen, die ein Git Repo auscheckt, eine kleine Änderung an einer Textdatei im Repo vornimmt und dann die Änderung zurück zum Repo schiebt. Ich habe eine verdammt große Zeit damit, den git push Befehl vom Ubuntu Build Agent zu bekommen.Git push von TeamCity 9.0.3 build

Ich habe versucht, sowohl SSH-Authentifizierung und https-Authentifizierung:

Mit HTTPS Ich bekomme diese Fehlermeldung:

could not read Username for 'https://github.com': No such device or address 

Also habe ich versucht:

git config user.name "<my username>" 
git config user.email "<my email>" 

gleichen Fehler.

Mit SSH bekomme ich diesen Fehler:

ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory 
Host key verification failed. 
fatal: Could not read from remote repository. 

Ich habe versucht, meinen Schlüssel im Arbeitsverzeichnis zu schreiben und git immer es wie folgt zu verwenden:

cat <<EOF> github.key 
%secure:teamcity.password.chambm ssh key% 
EOF 
chmod 600 github.key 

GIT_SSH_COMMAND='ssh -i github.key' git push origin master 
shred github.key 

gleiche Fehler.

Soweit ich sagen kann, gibt es keine ungewöhnlichen Einstellungen in /etc/ssh_config oder /etc/gitconfig, und ~/.ssh/config existiert nicht. Warum ist das so schwer? Warum ruft Git ssh_askpass auf, obwohl ich ihm einen privaten Schlüssel gebe?

git --version ist 2.7.4

Umgebungsvariablen:

export BUILD_NUMBER='44' 
export BUILD_VCS_NUMBER='50e0d54d7045fcf0bd6949a06d82ac2f118bc5d9' 
export BUILD_VCS_NUMBER_ProteoWizard_HttpsGithubComBiocondaBiocondaRecipes='50e0d54d7045fcf0bd6949a06d82ac2f118bc5d9' 
export DISPLAY=':3' 
export FIREFOX38='/tcuser/apps/firefox38/firefox' 
export FIREFOX45='/tcuser/apps/firefox45/firefox' 
export FIREFOX52='/tcuser/apps/firefox52/firefox' 
export FIREFOX_HOME='/usr/bin/firefox' 
export HOME='/home/tcuser' 
export JAVA_HOME='/usr/lib/jvm/default-java' 
export JDK_17='/usr/lib/jvm/java-7-sun' 
export JDK_18='/usr/lib/jvm/java-8-sun' 
export JRE_HOME='/usr/lib/jvm/default-java' 
export LANG='en_US.UTF-8' 
export LOGNAME='tcuser' 
export MAIL='/var/mail/tcuser' 
export NUMBER_OF_CORES='4' 
export OLDPWD='/tcuser/apps/teamcity/agent/bin' 
export PATH='/home/tcuser/bin:/home/tcuser/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin' 
export PERL_HOME='/usr/bin' 
export PWD='/mnt/teamcity/agent/work/2cc04074d294b6fa' 
export PYTHON2='/usr/bin/python' 
export PYTHON3='/usr/bin/python3' 
export R_HOME='/tcuser/apps/R/default' 
export SHELL='/bin/bash' 
export SHLVL='1' 
export TEAMCITY_AGENT_OPTS='-Duser.timezone=America/Los_Angeles' 
export TEAMCITY_BUILDCONF_NAME='Bumbershoot update bioconda' 
export TEAMCITY_BUILD_PROPERTIES_FILE='/mnt/teamcity/agent/temp/buildTmp/teamcity.build7482307983791518712.properties' 
export TEAMCITY_CAPTURE_ENV='"/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java" -jar "/tcuser/apps/teamcity/agent/plugins/environment-fetcher/bin/env-fetcher.jar"' 
export TEAMCITY_GIT_PATH='/usr/bin/git' 
export TEAMCITY_PROCESS_FLOW_ID='152446' 
export TEAMCITY_PROCESS_PARENT_FLOW_ID='' 
export TEAMCITY_PROJECT_NAME='Bioconda' 
export TEAMCITY_VERSION='9.0.3 (build 32334)' 
export TEMP='/mnt/teamcity/agent/temp/buildTmp' 
export TMP='/mnt/teamcity/agent/temp/buildTmp' 
export TMPDIR='/mnt/teamcity/agent/temp/buildTmp' 
export TZ='PST8PDT' 
export USER='tcuser' 
export XDG_RUNTIME_DIR='/run/user/1002' 
export XDG_SESSION_ID='c8' 

Antwort

0

https In Bezug auf die Sie brauchen:

  • um sicherzustellen, dass die URL

    https://<username>@github.com/<username>/arepo 
    
  • gibt es ein Credential Manager das Passwort

    git config -l credential.helper 
    

Siehe "Git Tools - Credential Storage" und this setting zwischenzuspeichern.

Dann versuchen Sie manuell eine git ls-remote https://..., um eine Eingabeaufforderung für Ihr Passwort, das zwischengespeichert werden soll, auszulösen.
Dann kann TeamCity diese zwischengespeicherten Anmeldeinformationen wiederverwenden.

+0

Ich kann nicht interaktiv etwas auf einem Build-Agent tun. Ich habe keinen Shell-Zugriff auf den Agenten und im Allgemeinen kann ein Erstellungsagent kurzlebig sein (d. H. In der Cloud bei Bedarf gestartet/gestoppt werden). –

+0

@MattChambers Auf einem Build-Agent können Sie einen Job ausführen, in dem Sie diese Befehle ausprobieren können: Ihre Ausgabe wird das Ergebnis dieses Test-Jobs sein. – VonC

+0

Ja, aber wenn eine Aufforderung zum Abfragen meines Kennworts ausgelöst wird, hängt der automatische Build. Fehle ich etwas? –