Tenemos gitlab nuevo en nuestro entorno e intentamos crear algunas canalizaciones de CD de CI utilizando gitlab CI. Tengo un mejor progreso en la ejecución de algunos objetivos de Maven, creando tuberías y archivando artefactos usando mi .gitlab-ci.yml como se muestra a continuación. Traté de dar etiquetas después de la secuencia de comandos que no funciona. Ahora, estoy tratando de descubrir cómo puedo automatizar las etiquetas git a mi código fuente. Me gustaría crear una etiqueta para el código fuente después de que la rama maestra obtuviera una compilación exitosa. Estamos utilizando versiones semánticas para etiquetar nuestro código fuente. Finalmente, cada vez que el maestro tiene una compilación exitosa, me gustaría crear una etiqueta para mi rama maestra.
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
registros:
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
Trabajo tuvo éxito
Respuestas:
Intenté cambiar la imagen del acoplador y agregué un par de pasos para la etiqueta git. A continuación, la respuesta funcionó para mí.
fuente
oauth2:${GITLAB_ACCESS_TOKEN}
como autenticación básica.origin
, puede simplementegit remote add api-origin https://...
eso afeita de una línea. Más tarde use ese nuevo origen engit push api-origin 1.0.15
.git config user.email "${GITLAB_USER_EMAIL}"
ygit config user.name "${GITLAB_USER_NAME}"
hacer que empujara bien.-o ci.skip
su comando git pushgit push origin 1.0.15
debería funcionar y se debería agregar una nueva etiqueta a las etiquetas en gitlabhttps://docs.gitlab.com/ee/university/training/topics/tags.html
fuente
$ git push origin --tags \nremote: You are not allowed to upload code.
Me encuentro en la misma situación, donde después de publicar una compilación de un artefacto, quiero etiquetar el commit con una etiqueta de número de versión.
Una solución que estoy considerando es crear un servicio (ya sea dentro o fuera de GitLab) que sea capaz de empujar una etiqueta a cualquier repositorio, pero no puede hacer nada más . El servicio en sí mismo tendría credenciales que le permitirían escribir en repositorios, por lo que no es necesario que cada compilación del proyecto tenga acceso de escritura al repositorio.
Me gusta esta solución porque GitLab no parece ofrecer un nivel de permiso que pueda insertar etiquetas en confirmaciones existentes, sin otorgar también la capacidad de impulsar confirmaciones que contengan contenido nuevo. El acceso de escritura genérico es más permiso de lo que necesitamos o queremos para este caso de uso, por lo que si lo tuviéramos, probablemente tendríamos que limitar el alcance creando un usuario o un token para cada repositorio con permisos para comprometerse solo con ese repositorio. Luego, tendríamos que administrar todos esos usuarios o tokens con el tiempo, lo que parece que podría ser difícil de manejar.
fuente