2016-04-22 8 views
0

Ich gehe mit Jenkins git, s3 und aws-codedeploy. Für die Bereitstellung Build-Anwendung über s3 und es auslösen aws codedeploy für nach der Bereitstellung. Das obige Setup läuft perfekt.Wie git Repo mit einer bestimmten Revision in Jenkins

Ich bekomme ein Problem, wenn ich jenkins job, meinen Job alle Zeit klonen git Repo dann laden Sie eine zip von Build/Inhalt zu s3 dann aws-codedeploy Bereitstellung voller zip auf meinen Servern.

Aber ich möchte, wenn ich laufen jenkin Job ist es nehmen spezifische Git Revision Klon nur nicht für den vollen Inhalt und Build-Deployment mit dem nur.

Bitte helfen Sie mir auf das oben genannte Problem. Vielen Dank im Voraus ...

Antwort

0

In Pre Steps dieses Skript unter den Execute shell hinzufügen:

# update the local git repository 
git fetch 

# pull the desired branch 
git pull origin <branch> 

# checkout the specific commit you want. 
git checkout <commit version> 
4

Als git behandelt jeden Zweig als Zeiger zu begehen, Sie das Commit in Zweig Spezifizierer angeben.

BEARBEITEN (auf Kommentar antworten): Was Sie eine Verzweigung nennen, ist in der Tat nur ein Zeiger auf eine bestimmte Festschreibung. Git hat keine Zweige wie Svn; Wenn Sie also ein bestimmtes Commit bereitstellen möchten, geben Sie es einfach an.

Ich verstehe, dass Sie nicht jedes Mal zum Job wechseln möchten, wenn Sie es bauen müssen. Sie können den Build parametrized und dann use the parameter as branch specifier erstellen.

+0

Dank für Ihre ans, aber ich möchte insbesondere Zweig verpflichten bauen, wie in „Niederlassung Anforderung“ I gegeben */Master, aber ich möchte mit spezifischen Commit/Revision ID bereitstellen. –

+0

Die Antwort wurde aktualisiert. – trainmaster

+0

Können Sie dies in einer Pipeline tun? Ich habe versucht, die volle sha zur Verfügung zu stellen und weiterhin keine Überarbeitungen zu finden.Ich denke, das GitScm-Plugin zieht nur Refs für Tag/Zweige und unterstützt nicht alle Commit-IDs, obwohl sein Javadoc sagt, dass es das tun kann –

-1

Ich benutze Jenkins Pipeline.

kann ich einsetzen alte commit (irgendein begehen), führen Sie einfach Kasse in Gitlab Docker Bild, vor deploy:

node { 
stage('checkout') { 
    checkout scm 
} 

docker.image('docker.io/gitlab/gitlab-ce').inside('-u root -e MAVEN_OPTS="-Duser.home=./"') { 
    stage('git checkout') { 
     sh 'git checkout ${REV_VER}' 
     } 
} 

Danach, verwende ich andere Docker für Build und bereitstellen.

Beispiel:

docker.image('openjdk:8').inside('-u root -e MAVEN_OPTS="-Duser.home=./"') { 
     stage('build') { 
      build process* 
     } 
     stage('deploy') { 
      deploy process* 
     } 
} 

REV_VER ist diese Zeichenfolge parametr in Jenkins Konfig.

Standardvariable - REV_VER (in Jenkins config) - Entwickeln (meine Arbeit Zweig).

Aber wenn Sie bereitstellen müssen alle alten begehen, nur Variable auf kurze ID ändern commit (wie "5221e28") in String REV_VER, wenn Sie "mit parametrs Build" laufen

P. S. OMG, ich hoffe, Sie verstehen, was ich geschrieben habe, weil mein Englisch ist sehr schlecht =)

Viel Glück