Привет! Изучаю GitLab CI. Написал .gitlab-ci.yml:
stages:
- build
- test
- publish
build_job:
stage: build
script:
- export PATH="/usr/bin:/usr/local/bin:$PATH"
- mvn --version
- echo "Start building"
- cd $CI_PROJECT_DIR/src
- mvn clean package
- ls -la $CI_PROJECT_DIR/src/target
artifacts:
paths:
- $CI_PROJECT_DIR/src/target/test.jar
expire_in: 1 day
tags:
- shell
publish_to_registry:
stage: publish
script:
- export PATH="/usr/bin:/usr/local/bin:$PATH"
- echo "Publishing package to GitLab Package Registry..."
- /usr/bin/mvn deploy -s $CI_PROJECT_DIR/.mvn/settings.xml
tags:
- shell
Но как бы я не указывал путь к mvn (
/usr/bin/mvn
), экспортировал PATH (
export PATH="/usr/bin:/usr/local/bin:$PATH"
), GitLab runner мне твердит одно и то же:
bash: line 136: /usr/bin/mvn: No such file or directory
Странность в том, что при рандомном количестве перезапусков, эта фигня начинает работать. То есть, оно может заработать и при коммите, или через 20 нажиманий "Retry".
UPD: Гитлаб расположен локально. Ранер находится в локальной сети на другом хосте. Установлен в OS (ubuntu 24), не в докере. Запускается автоматически по коммиту
UPD2: я понял что каждая job в GitLab CI запускается в новой, независимой среде, обычно в новой директории. Из этого выходит, что "скармливать" ей путь /usr/bin/mvn (в случае с Maven) нет смысла, так как runner ее не увидит, но мне тогда не понятно как передать runner'y эту команду 0_о