Wir haben Gitlab neu in unserer Umgebung und versuchen, einige CI-CD-Pipelines mit Gitlab CI zu erstellen. Ich habe einige bessere Fortschritte beim Ausführen einiger Maven-Ziele, beim Erstellen von Pipelines und beim Archivieren von Artefakten mit meiner .gitlab-ci.yml (siehe unten) erzielt. Ich habe versucht, Give-Tags nach dem Skript zu geben, was nicht funktioniert. Jetzt versuche ich herauszufinden, wie ich Git-Tags für meinen Quellcode automatisieren kann. Ich möchte ein Tag für den Quellcode erstellen, nachdem der Master-Zweig erfolgreich erstellt wurde. Wir verwenden semantische Versionen, um unseren Quellcode zu kennzeichnen. Wenn der Master erfolgreich erstellt wurde, möchte ich ein Tag für meinen Master-Zweig erstellen.
image: maven:3.5-jdk-8-alpine
stages:
- build
- deploy
- tag
maven_build:
stage: build
script:
- mvn clean package
artifacts:
paths:
- target/*.jar
after_script:
- ls -a
- cd target && ls -a
- git --version
- git tag -a 1.0.15 -m "Version created by gitlab-ci Build"
- git push origin 1.0.15
only:
- master
Protokolle:
Running after script...
$ ls -a
.
..
.git
.gitignore
.gitlab-ci.yml
LICENSE
README.md
pom.xml
src
target
$ cd target && ls -a
.
..
apidocs
classes
generated-sources
generated-test-sources
javadoc-bundle-options
maven-archiver
maven-simple-0.2-SNAPSHOT-javadoc.jar
maven-simple-0.2-SNAPSHOT-sources.jar
maven-simple-0.2-SNAPSHOT.jar
maven-status
surefire-reports
test-classes
Uploading artifacts...
target/maven-simple-0.2-SNAPSHOT-javadoc.jar: found 1 matching files
Uploading artifacts to coordinator... ok id=60598296
responseStatus=201 Created token=Gu-eH1es
Job war erfolgreich
Antworten:
Ich habe versucht, das Docker-Image zu ändern und ein paar Schritte für das Git-Tag hinzugefügt. Unten ist die Antwort für mich gearbeitet,
quelle
oauth2:${GITLAB_ACCESS_TOKEN}
als Basisauthentifizierung.origin
, Sie können nurgit remote add api-origin https://...
das rasieren von einer Zeile. Verwenden Sie später diesen neuen Ursprung ingit push api-origin 1.0.15
.git config user.email "${GITLAB_USER_EMAIL}"
undgit config user.name "${GITLAB_USER_NAME}"
um es schön zu drücken.-o ci.skip
Ihren Git-Push-Befehl hinzufügengit push origin 1.0.15
sollte funktionieren und ein neues Tag sollte zu den Tags in gitlab hinzugefügt werdenhttps://docs.gitlab.com/ee/university/training/topics/tags.html
quelle
$ git push origin --tags \nremote: You are not allowed to upload code.
Ich befinde mich in der gleichen Situation, in der ich nach dem Veröffentlichen eines Builds eines Artefakts das Commit mit einem Versionsnummern-Tag versehen möchte.
Eine Lösung, die ich in Betracht ziehe, besteht darin, einen Dienst (entweder innerhalb oder außerhalb von GitLab) zu erstellen, der in der Lage ist, ein Tag in ein beliebiges Repository zu verschieben, aber nichts anderes tun kann . Der Dienst selbst verfügt über Anmeldeinformationen, mit denen er in Repositorys schreiben kann, sodass nicht jedem Projekterstellungszugriff Schreibzugriff auf das Repo gewährt werden muss.
Ich mag diese Lösung, weil GitLab anscheinend keine Berechtigungsstufe bietet, mit der Tags auf vorhandene Commits übertragen werden können, ohne dass auch Commits mit neuen Inhalten übertragen werden können. Generischer Schreibzugriff ist mehr Berechtigung, als wir für diesen Anwendungsfall benötigen oder wollen. Wenn wir sie hätten, müssten wir wahrscheinlich den Bereich einschränken, indem wir für jedes Repository einen Benutzer oder ein Token erstellen, das die Berechtigung hat, nur für dieses Repository festzuschreiben. Dann müssten wir all diese Benutzer oder Token im Laufe der Zeit verwalten, was anscheinend unhandlich werden könnte.
quelle