Я нахожусь в процессе создания сценария CI, который использует действия GitHub для создания и продвижения новых версий пакетов.

Для этого я создал сценарий оболочки, который запускается после запуска тестовых классов и их загрузки в codecov. Там я ссылаюсь на node_modules, которые я установил для запуска сценариев sfdx, и устанавливаю переменные среды для номеров пакетов и идентификаторов версий.

Чтобы усечь самую важную часть, вот где мой сценарий терпит неудачу:

# Create a new package version (with the previously incremented package version) and import the package version id for further use.
echo "Creating new package version"
node_modules/sfdx-cli/bin/run force:package:version:create -p $PACKAGE_ID -f config/project-scratch-def.json -x -v devhub -c --json -w 30 > result.json

cat result.json
cat result.json | jq '.result.SubscriberPackageVersionId' > packgeversionid.txt

PACKAGEVERSIONID=$( cat packgeversionid.txt )
if [[ "$PACKAGEVERSIONID" == "null" ]]; then    
    echo "Package could not be created"
    exit 1
fi

echo "New Package Version Id: $PACKAGEVERSIONID"

sleep 5
cat sfdx-project.json

#This promotes the package version
echo "Promoting Package Version"
node_modules/sfdx-cli/bin/run force:package:version:promote -p $PACKAGEVERSIONID --noprompt -v devhub

Я могу создать версию пакета просто отлично. Я catобрабатываю результат только для того, чтобы убедиться, что все работает так, как я ожидаю, и то же самое касается sfdx-project.json

Когда я добираюсь до части force:package:version:promote, я сталкиваюсь с этой ошибкой:

ERROR running force:package:version:promote:  The Subscriber Package Version Id or Package Version Id: "04t<>" isn't defined in the sfdx-project.json. Add it to the packageDirectories section and add the alias to packageAliases with its 04t or 05i ID.

И это несмотря на то, что я заранее проверил, что точно такой же идентификатор 04t присутствует в локальном файле sfdx-project.json.

Какие шаги мне нужно предпринять, чтобы завершить процесс продвижения?

0
dschib 8 Янв 2022 в 16:25
Интересно, может ли это быть каким-то состоянием гонки? Что, если увеличить сон с 5 до 60 или около того? Это заставляет это работать?
 – 
sfdcfox
8 Янв 2022 в 16:51
Может ли это быть состояние гонки, когда мой вывод cat ясно показывает мне новый идентификатор версии пакета уже после 5 секунд сна?
 – 
dschib
8 Янв 2022 в 16:59
Именно по этой причине я использую cat прямо перед призывом к повышению. И в выводе консоли я вижу в GitHub я вижу все, что мне нужно
 – 
dschib
8 Янв 2022 в 17:05
Я больше думал о том, «что, если идентификатор на самом деле недоступен на сервере», хотя я никогда этого не видел, просто пытаясь исключить возможности.
 – 
sfdcfox
8 Янв 2022 в 19:00
Вы уверены, что файл sfdx-project.json правильно сформирован и правильно структурирован?
 – 
Phil W
8 Янв 2022 в 21:55

1 ответ

Проблема заключалась в получении идентификатора версии пакета подписчика.

cat result.json | jq '.result.SubscriberPackageVersionId' > packgeversionid.txt

Извлекает значение за ключом, включая двойные кавычки. Что на самом деле необходимо (и что-то, что я действительно сделал в другом месте скрипта заранее... ага), так это использовать jq -r, чтобы обрезать кавычки.

sfdx force:package:version:promote не хочет, чтобы вы использовали двойные кавычки при указании версии пакета, поэтому вывод, который на самом деле включал эти кавычки, был не частью стандартного сообщения об ошибке, а частью моего ввода, просто неверно истолковано.

0
dschib 9 Янв 2022 в 20:19