Я создал пакетный файл для выпуска выпусков Github с моего сервера CI на AppVeyor. Все работает нормально, кроме тех случаев, когда я пытаюсь загрузить свой актив на Github. Мои навыки мне не очень помогают. Есть ли способ получить мой идентификатор выпуска из команд cURL, чтобы использовать его в URL-адресе загрузки ресурсов? Большое спасибо :)
РЕДАКТИРОВАТЬ: я использую 3 командных файла:
AppveyorBuildReleases.bat
git tag %PLATFORM%_%APPVEYOR_BUILD_VERSION%
git push https://token_here:@github.com/2spark/SparklrWP.git --tags
echo {"tag_name": "%PLATFORM%_%APPVEYOR_BUILD_VERSION%","target_commitish": "%APPVEYOR_REPO_BRANCH%","name": "2spark v%APPVEYOR_BUILD_VERSION% for %PLATFORM% devices","body": "Release of 2spark app v%APPVEYOR_BUILD_VERSION%\n Commit by %APPVEYOR_REPO_COMMIT_AUTHOR% \n%APPVEYOR_REPO_COMMIT_MESSAGE%","draft": false,"prerelease": true} > json.json
curl -# -XPOST -H 'Content-Type:application/json' -H 'Accept:application/json' --data-binary @json.json https://api.github.com/repos/2spark/SparklrWP/releases?access_token=token_here
del json.json
move c:\projects\SparklrWP\SparklrForWindowsPhone\SparklrForWindowsPhone\Bin\%PLATFORM%\%CONFIGURATION%\SparklrForWindowsPhone_%CONFIGURATION%_%PLATFORM%.xap c:\projects\SparklrWP
rename c:\projects\SparklrWP\SparklrForWindowsPhone_%CONFIGURATION%_%PLATFORM%.xap SparklrForWindowsPhone.xap
file_size.bat "c:\projects\SparklrWP\SparklrForWindowsPhone.xap"
File_size.bat
set size=%~z1
AppVeyorBuildReleases2.bat
AppVeyorBuildReleases2.bat
curl -XPOST -H "Authorization:token token_here" -H "Content-Type:application/octet-stream" -H "Content-Length:%size%" --data-binary @SparklrForWindowsPhone.xap https://uploads.github.com/repos/2spark/SparklrWP/releases/TheIDgoesHERE/assets?name=SparklrForWindowsPhone.xap
EXIT
Но я не знаю, как найти идентификатор. Не могли бы вы мне помочь? :)
1 ответ
Самостоятельный вопрос. Было действительно сложно найти хороший способ поиска по идентификатору, но теперь он работает! : D
Как автоматически опубликовать ваш артефакт на GitHub
Сначала на вашем CI-сервере после создания артефакта создайте тег.
git tag :yourversion
Отправьте свой тег в GitHub (я использую токен, чтобы избежать имени пользователя и пароля)
git push https://your_token:@github.com/you/yourrepo.git --tags
Теперь создайте выпуск с помощью cURL. Я использую много переменных, поэтому я хочу использовать echo
для записи переменных, а затем отправить их с помощью файла json.
echo Creating release...
echo {"tag_name": "%PLATFORM%_%APPVEYOR_BUILD_VERSION%","target_commitish": "%APPVEYOR_REPO_BRANCH%","name": "2spark v%APPVEYOR_BUILD_VERSION% for %PLATFORM% devices","body": "Release of 2spark app v%APPVEYOR_BUILD_VERSION%\n Commit by %APPVEYOR_REPO_COMMIT_AUTHOR% \n%APPVEYOR_REPO_COMMIT_MESSAGE%","draft": false,"prerelease": true} > json.json
curl -# -XPOST -H 'Content-Type:application/json' -H 'Accept:application/json' --data-binary @json.json https://api.github.com/repos/you/yourrepo/releases?access_token=your_token -o response.json
del json.json
В response.json есть ваш идентификатор. Чтобы найти его, я использую этот файл .bat http: //www.dostips .com / forum / viewtopic.php? f = 3 & t = 4697 а затем несколько переменных. ДЛЯ РАБОТЫ ВЫ ДОЛЖНЫ КОПИРОВАТЬ ВЕСЬ КОД!
echo Search the release id...
type response.json | findrepl id | findrepl /O:1:1 >> raw_id.txt
del response.json
echo Refining the id...
set /p raw_id_release=<raw_id.txt
set raw_id_release2=%raw_id_release:*"id": =%
set id_release=%raw_id_release2:,=%
echo The ID is %id_release% , yay!
del raw_id.txt
Наконец, опубликуйте свой артефакт как тело сообщения
echo Uploading artifact to Github...
curl -# -XPOST -H "Authorization:token your_token" -H "Content-Type:application/octet-stream" --data-binary @yourbinary.exe https://uploads.github.com/repos/you/yourrepo/releases/%id_release%/assets?name=yourbinary.exe
echo Done. Enjoy your release :)
EXIT
Приятного вам релиза!
Похожие вопросы
Новые вопросы
git
Git — это распределенная система контроля версий с открытым исходным кодом (DVCS). Используйте этот тег для вопросов об использовании Git и рабочих процессах. Не используйте этот тег для общих вопросов по программированию, связанных с репозиторием Git. Не используйте этот тег для вопросов GitHub/GitHub Actions, не связанных с использованием git; вместо этого используйте [github] или [github-actions]. Не используйте тег [github] для проблем, связанных с Git, только потому, что репозиторий размещен на GitHub.