Я пишу простой скрипт, который будет запускаться в одноразовой игре Heroku Dyno (запускается с помощью команды heroku run
). Цель сценария - получить ха sh последнего коммита в главной ветке моего репо и установить для него одну из конфигурационных переменных heroku.
Я пытаюсь выполнить следующие команды, чтобы клонировать репозиторий в heroku dyno, изменить каталоги на каталог, созданный клоном, а затем установить переменную config в требуемое значение.
heroku run "git clone https://`heroku config:get GITHUB_TOKEN`@github.com/<org>/<repo>.git && cd <repo> && `heroku config:set CURRENT_HASH=`git rev-parse HEAD``"
Когда я выполняю все и все команды, которые следуют за heroku run
в моем локальном терминале, он работает нормально. Однако, когда я выполняю команду, написанную выше, в однократной записи, используя heroku run
, сначала вызывается heroku config:set
, и в переменной конфигурации CURRENT_HASH
устанавливается пустая строка. Затем клон git выполняется успешно (переменная конфигурации GITHUB_TOKEN
правильно прочитана) и затем выполняется git rev-parse HEAD
. Таким образом, вывод выглядит следующим образом:
Setting CURRENT_HASH and restarting <heroku app name>... done, v246
Running git clone https://<GITHUB_TOKEN>@github.com/<org>/<repo>.git; cd <repo>; git rev-parse HEAD on ⬢ <heroku app name>... up, run.1538 (Hobby)
Cloning into '<repo>'...
remote: Enumerating objects: 330, done.
remote: Counting objects: 100% (330/330), done.
remote: Compressing objects: 100% (222/222), done.
remote: Total 4635 (delta 123), reused 269 (delta 98), pack-reused 4305
Receiving objects: 100% (4635/4635), 8.95 MiB | 9.27 MiB/s, done.
Resolving deltas: 100% (2425/2425), done.
bbb748d543a511eed4986cddb68b292ce1be67ad //hash of the last commit
Чего я не понимаю, так это почему heroku config:set
выполняется первым, хотя это последняя команда. Кроме того, когда я пытаюсь выполнить heroku config:get
или heroku config:set
, используя heroku run
без обратных галочек, сценарий завершается с ошибкой bash: heroku: command not found
. Вот почему я использую вложенные обратные метки для heroku config:set...
и git rev-parse HEAD
, чтобы команда не потерпела неудачу с ошибкой.
Любая помощь будет принята с благодарностью.