На новом проекте дали задачу добавить CI/CD в проект. Проекту много лет, до меня его уже писали, но по-факту сейчас CI/CD не работает. Я программист, но на нескольких проектах CI/CD на GitLab настраивал, опыт есть.
Удаляю все старое в .gitlab-ci.yml и делаю простую заглушку, просто проверить что раннер работает:
stages:
- build
- static analysis
- tests
- deploy
composer install:
stage: build
script:
- echo "composer install"
migration:
stage: build
script:
- echo "migration"
code style:
stage: static analysis
script:
- echo "code style"
phpstan:
stage: static analysis
script:
- echo "phpstan"
api tests:
stage: tests
script:
- echo "api tests"
deploy prod:
stage: deploy
only:
- main
script:
- echo "deploy"
Заливаю, и вижу что GitLab запускает старый пайплайн. А изменений в .gitlab-ci.yml как-будто не видит вообще.
Делаю другую попытку - возвращаю старое содержимое .gitlab-ci.yml, и в одной из стадии добавляю простое echo "Testing":
script:
- echo "Testing"
- echo ${APP_VERSION} > version.txt
- sed -i "s/%ver%/$APP_VERSION/" webpack.config.js
Делаю коммит, пушу, запускаю стадию в которую внес изменения:
Как видно - echo ${APP_VERSION} > version.txt и sed -i "s/%ver%/$APP_VERSION/" webpack.config.js он выполнил, а строчку которую я добавил просто пропустил, как будто её и не было. При этом по строчке "Checking out 3882e092 as refs/merge-requests/6422/head..." проверяю - коммит 3882e092 мой, ветка 6422 моя.
Но изменений не видит. Первый раз с таким сталкиваюсь. Строчка "echo ${APP_VERSION} > version.txt" повторяется один раз во всем проекте. Т.е. точно не может быть такого, что я внес изменения в одном месте, а фактически в пайплайне выполняется код из другого места.
Спросил знакомого девопса с большим опытом - он с таким не сталкивался. Спросил только в тот ли проект я пушу изменения, и точно ли в файл .gitlab-ci.yml - да.