Trabajo de Gitlab activado manualmente: credenciales de usuario
Tengo un trabajo que sólo se puede activar manualmente. Cuando se activa, genera una confirmación y una etiqueta de la versión de lanzamiento.
Me gustaría poder enviar ese compromiso y etiqueta a la rama de compromiso actual, y el envío debería ser "por parte del usuario".
¿Hay alguna forma de lograr esto? No quiero usar un token, porque eso hace perder al usuario.
No quiero usar un token, porque eso hace perder al usuario.
Usar un token no te impide usar ningún autor de git en particular. Una opción es simplemente configurar la configuración de git para usar el correo electrónico del usuario que activó el trabajo. Esto está disponible en la variable de entorno predefinida $GITLAB_USER_EMAIL
.
Antes de escribir la confirmación/etiqueta, configure el correo electrónico del usuario en la configuración de git:
git config --local user.email "$GITLAB_USER_EMAIL"
GitLab utiliza el correo electrónico del autor de la confirmación para asociar las confirmaciones con los usuarios. Entonces, si hace esto, la confirmación y la etiqueta se asociarán con el usuario que activó el trabajo y su retrato aparecerá en la interfaz de usuario de la confirmación.
También puedes agregar git user.name
si quieres con la variable $GITLAB_USER_NAME
aunque esto no es estrictamente necesario. También puede utilizar un nombre diferente para ayudar a diferenciar las confirmaciones automáticas.
Como ejemplo completo (para canalizaciones secundarias, utilizando un token de acceso al proyecto almacenado como variable PROJECT_ACCESS_TOKEN
):
# set the user properties
git config --local user.email "$GITLAB_USER_EMAIL"
git config --local user.name "$GITLAB_USER_NAME (gitlab pipeline)"
# set the remote URL with authentication
# if using a personal access token,
# you will need to replace `gitlab-ci-token` with your username
git remote set-url origin "https://gitlab-ci-token:${PROJECT_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git"
# Uncomment these steps if you have an error for not being on a branch
# git fetch origin
# git checkout "$CI_COMMIT_BRANCH"
# create a commit and push it to the commit branch
git commit --allow-empty -m "my release commit"
git push origin "$CI_COMMIT_BRANCH"
# create a tag and push the tag
git tag "my-realease-tag"
git push origin "my-release-tag"