Версия - gitlab-runner-16.1.1-alt2 Шаги воспроизведения 1. Добавить Runner с тип Executor как shell для CI/CD: # gitlab-runner register --url <URL> --token <TOKEN> При запросе **Enter an executor: kubernetes, parallels, ssh, docker+machine, shell, virtualbox, docker-autoscaler, instance, custom, docker, docker-windows** ввести `shell` 2. Скопировать созданный конфиг на конфигурацию, которую используем systemd-сервис: # cp /etc/gitlab-runner/config.toml /etc/gitlab-runner.d/config.toml 3. Запустить сервис: # systemctl enable --now gitlab-runner && sleep 5; systemctl status gitlab-runner --no-pager -l 4. Запустить ci, например: $ cat .gitlab-ci.yml build-job: stage: build script: - echo "Hello, $GITLAB_USER_LOGIN!" test-job1: stage: test script: - echo "This job tests something. Current project dir is $CI_PROJECT_DIR" test-job2: stage: test script: - echo "This job tests something, but takes more time than test-job1." - echo "After the echo commands complete, it runs the sleep command for 20 seconds" - echo "which simulates a test that runs 20 seconds longer than test-job1" - sleep 20 deploy-prod: stage: deploy script: - echo "This job deploys something from the $CI_COMMIT_BRANCH branch." environment: production Ожидаемый результат: Pipeline Jobs выполнен успешно. Фактический результат: Pipeline Jobs выполнен с ошибками: Running with gitlab-runner development version (HEAD) on test-runner csSeinuKA, system ID: s_bbb741e10f56 Preparing the "shell" executor 00:00 Using Shell (bash) executor... Preparing environment 00:00 bash: /root/.bash_profile: Отказано в доступе Running on server-10-1-x86-64-minimal-20230916.localdomain... bash: строка 6: /root/.bash_logout: Отказано в доступе ERROR: Job failed: prepare environment: exit status 1. Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information Причина в том, что сервис GitLab Runner запущен от пользователя gitlab-runner: 3221 /usr/bin/gitlab-runner run -c /etc/gitlab-runner.d/config.toml -u gitlab-runner -d /var/lib/gitlab-runner --syslog Если поменять -u gitlab-runner на -u root, то всё начинает работать, однако это не совсем правильный подход, ванильный runner использует именно пользователя gitlab-runner и всё должно работать относительно данного пользователя.
gitlab-runner-16.9.1-alt1 -> sisyphus: Wed Mar 20 2024 Nikolay Burykin <bne@altlinux> 16.9.1-alt1 - New version 16.9.1 - Fix: + "/root/.bash_profile: Permission denied" when use shell as an executor (ALT #47620) + failure prepare environment step, when use Docker as an executor (ALT #47621)
(Ответ для Repository Robot на комментарий #1) > gitlab-runner-16.9.1-alt1 -> sisyphus: > > Wed Mar 20 2024 Nikolay Burykin <bne@altlinux> 16.9.1-alt1 > - New version 16.9.1 > - Fix: > + "/root/.bash_profile: Permission denied" when use shell as an executor > (ALT #47620) Добавлю, что проблема решена так: - script.Arguments = []string{"-s", "/bin/" + b.Shell, info.User, "-c", script.CmdLine} + script.Arguments = []string{"-", "-s", "/bin/" + b.Shell, info.User, "-c", script.CmdLine} то есть в апстриме использовался su без -, что желательно исправить там, а здесь это приводит нас к https://bugzilla.altlinux.org/23700