Temos o gitlab novo em nosso ambiente e tentamos criar alguns pipelines de CD do CI usando o gitlab CI. Eu tenho um progresso melhor na execução de alguns objetivos, criando pipelines e arquivando artefatos usando meu .gitlab-ci.yml como abaixo. Eu tentei dar tags após o script que não funciona. Agora, estou tentando descobrir como automatizar as tags git no meu código-fonte. Eu gostaria de criar uma tag para código fonte depois que o ramo principal obteve uma compilação bem-sucedida. estamos usando versões semânticas para marcar nosso código-fonte. Finalmente, sempre que o master obtiver êxito na compilação, eu gostaria de criar uma tag no meu branch master.
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
Histórico:
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
Trabalho bem sucedido
Respostas:
Tentei alterar a imagem do docker e adicionei algumas etapas para a tag git. Abaixo está a resposta que funcionou para mim,
fonte
oauth2:${GITLAB_ACCESS_TOKEN}
como autenticação básica.origin
, você pode apenasgit remote add api-origin https://...
isso raspar uma linha. Mais tarde, use essa nova origem emgit push api-origin 1.0.15
.git config user.email "${GITLAB_USER_EMAIL}"
egit config user.name "${GITLAB_USER_NAME}"
fazê-lo funcionar bem.-o ci.skip
em seu comando git empurrargit push origin 1.0.15
deve funcionar e uma nova tag deve ser adicionada às tags no gitlabhttps://docs.gitlab.com/ee/university/training/topics/tags.html
fonte
$ git push origin --tags \nremote: You are not allowed to upload code.
Eu me encontro na mesma situação, onde, após publicar uma construção de um artefato, desejo marcar o commit com um tag de número de versão.
Uma solução que estou considerando é criar um serviço (dentro ou fora do GitLab) capaz de enviar uma tag para qualquer repositório, mas não pode fazer mais nada . O serviço em si possuiria credenciais permitindo gravar nos repositórios, para que cada construção do projeto não precise ter acesso de gravação ao repositório.
Eu gosto dessa solução porque o GitLab parece não oferecer um nível de permissão que pode enviar tags para confirmações existentes, sem também conceder a capacidade de enviar confirmações que contenham novo conteúdo. O acesso de gravação genérico é mais permissão do que precisamos ou queremos para este caso de uso; portanto, se o tivéssemos, provavelmente precisaríamos limitar o escopo criando um usuário ou um token para cada repositório com permissões para confirmar apenas esse repositório. Em seguida, precisaríamos gerenciar todos esses usuários ou tokens ao longo do tempo, o que parece ser difícil de manejar.
fonte