build.yml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. name: Build
  2. on: workflow_dispatch
  3. jobs:
  4. create_release:
  5. runs-on: ubuntu-latest
  6. outputs:
  7. version_suffix: ${{ steps.version_suffix.outputs.version_suffix }}
  8. ytdlp_version: ${{ steps.bump_version.outputs.ytdlp_version }}
  9. upload_url: ${{ steps.create_release.outputs.upload_url }}
  10. release_id: ${{ steps.create_release.outputs.id }}
  11. steps:
  12. - uses: actions/checkout@v2
  13. with:
  14. fetch-depth: 0
  15. - uses: actions/setup-python@v2
  16. with:
  17. python-version: '3.10'
  18. - name: Set version suffix
  19. id: version_suffix
  20. env:
  21. PUSH_VERSION_COMMIT: ${{ secrets.PUSH_VERSION_COMMIT }}
  22. if: "env.PUSH_VERSION_COMMIT == ''"
  23. run: echo ::set-output name=version_suffix::$(date -u +"%H%M%S")
  24. - name: Bump version
  25. id: bump_version
  26. run: |
  27. python devscripts/update-version.py ${{ steps.version_suffix.outputs.version_suffix }}
  28. make issuetemplates
  29. - name: Push to release
  30. id: push_release
  31. run: |
  32. git config --global user.name github-actions
  33. git config --global user.email github-actions@example.com
  34. git add -u
  35. git commit -m "[version] update" -m "Created by: ${{ github.event.sender.login }}" -m ":ci skip all :ci run dl"
  36. git push origin --force ${{ github.event.ref }}:release
  37. echo ::set-output name=head_sha::$(git rev-parse HEAD)
  38. - name: Update master
  39. env:
  40. PUSH_VERSION_COMMIT: ${{ secrets.PUSH_VERSION_COMMIT }}
  41. if: "env.PUSH_VERSION_COMMIT != ''"
  42. run: git push origin ${{ github.event.ref }}
  43. - name: Get Changelog
  44. run: |
  45. changelog=$(grep -oPz '(?s)(?<=### ${{ steps.bump_version.outputs.ytdlp_version }}\n{2}).+?(?=\n{2,3}###)' Changelog.md) || true
  46. echo "changelog<<EOF" >> $GITHUB_ENV
  47. echo "$changelog" >> $GITHUB_ENV
  48. echo "EOF" >> $GITHUB_ENV
  49. - name: Create Release
  50. id: create_release
  51. uses: actions/create-release@v1
  52. env:
  53. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  54. with:
  55. tag_name: ${{ steps.bump_version.outputs.ytdlp_version }}
  56. release_name: yt-dlp ${{ steps.bump_version.outputs.ytdlp_version }}
  57. commitish: ${{ steps.push_release.outputs.head_sha }}
  58. draft: true
  59. prerelease: false
  60. body: |
  61. #### [A description of the various files]((https://github.com/yt-dlp/yt-dlp#release-files)) are in the README
  62. ---
  63. <details open><summary><h3>Changelog</summary>
  64. <p>
  65. ${{ env.changelog }}
  66. </p>
  67. </details>
  68. build_unix:
  69. needs: create_release
  70. runs-on: ubuntu-18.04 # Standalone executable should be built on minimum supported OS
  71. outputs:
  72. sha256_bin: ${{ steps.get_sha.outputs.sha256_bin }}
  73. sha512_bin: ${{ steps.get_sha.outputs.sha512_bin }}
  74. sha256_tar: ${{ steps.get_sha.outputs.sha256_tar }}
  75. sha512_tar: ${{ steps.get_sha.outputs.sha512_tar }}
  76. sha256_linux: ${{ steps.get_sha.outputs.sha256_linux }}
  77. sha512_linux: ${{ steps.get_sha.outputs.sha512_linux }}
  78. sha256_linux_zip: ${{ steps.get_sha.outputs.sha256_linux_zip }}
  79. sha512_linux_zip: ${{ steps.get_sha.outputs.sha512_linux_zip }}
  80. steps:
  81. - uses: actions/checkout@v2
  82. - uses: actions/setup-python@v2
  83. with:
  84. python-version: '3.10'
  85. - name: Install Requirements
  86. run: |
  87. sudo apt-get -y install zip pandoc man
  88. python -m pip install --upgrade pip setuptools wheel twine
  89. python -m pip install Pyinstaller -r requirements.txt
  90. - name: Prepare
  91. run: |
  92. python devscripts/update-version.py ${{ needs.create_release.outputs.version_suffix }}
  93. python devscripts/make_lazy_extractors.py
  94. - name: Build Unix executables
  95. run: |
  96. make all tar
  97. python pyinst.py --onedir
  98. (cd ./dist/yt-dlp_linux && zip -r ../yt-dlp_linux.zip .)
  99. python pyinst.py
  100. - name: Get SHA2-SUMS
  101. id: get_sha
  102. run: |
  103. echo "::set-output name=sha256_bin::$(sha256sum yt-dlp | awk '{print $1}')"
  104. echo "::set-output name=sha512_bin::$(sha512sum yt-dlp | awk '{print $1}')"
  105. echo "::set-output name=sha256_tar::$(sha256sum yt-dlp.tar.gz | awk '{print $1}')"
  106. echo "::set-output name=sha512_tar::$(sha512sum yt-dlp.tar.gz | awk '{print $1}')"
  107. echo "::set-output name=sha256_linux::$(sha256sum dist/yt-dlp_linux | awk '{print $1}')"
  108. echo "::set-output name=sha512_linux::$(sha512sum dist/yt-dlp_linux | awk '{print $1}')"
  109. echo "::set-output name=sha256_linux_zip::$(sha256sum dist/yt-dlp_linux.zip | awk '{print $1}')"
  110. echo "::set-output name=sha512_linux_zip::$(sha512sum dist/yt-dlp_linux.zip | awk '{print $1}')"
  111. - name: Upload zip binary
  112. uses: actions/upload-release-asset@v1
  113. env:
  114. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  115. with:
  116. upload_url: ${{ needs.create_release.outputs.upload_url }}
  117. asset_path: ./yt-dlp
  118. asset_name: yt-dlp
  119. asset_content_type: application/octet-stream
  120. - name: Upload Source tar
  121. uses: actions/upload-release-asset@v1
  122. env:
  123. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  124. with:
  125. upload_url: ${{ needs.create_release.outputs.upload_url }}
  126. asset_path: ./yt-dlp.tar.gz
  127. asset_name: yt-dlp.tar.gz
  128. asset_content_type: application/gzip
  129. - name: Upload standalone binary
  130. uses: actions/upload-release-asset@v1
  131. env:
  132. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  133. with:
  134. upload_url: ${{ needs.create_release.outputs.upload_url }}
  135. asset_path: ./dist/yt-dlp_linux
  136. asset_name: yt-dlp_linux
  137. asset_content_type: application/octet-stream
  138. - name: Upload onedir binary
  139. uses: actions/upload-release-asset@v1
  140. env:
  141. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  142. with:
  143. upload_url: ${{ needs.create_release.outputs.upload_url }}
  144. asset_path: ./dist/yt-dlp_linux.zip
  145. asset_name: yt-dlp_linux.zip
  146. asset_content_type: application/zip
  147. - name: Build and publish on PyPi
  148. env:
  149. TWINE_USERNAME: __token__
  150. TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
  151. if: "env.TWINE_PASSWORD != ''"
  152. run: |
  153. rm -rf dist/*
  154. python setup.py sdist bdist_wheel
  155. twine upload dist/*
  156. - name: Install SSH private key for Homebrew
  157. env:
  158. BREW_TOKEN: ${{ secrets.BREW_TOKEN }}
  159. if: "env.BREW_TOKEN != ''"
  160. uses: yt-dlp/ssh-agent@v0.5.3
  161. with:
  162. ssh-private-key: ${{ env.BREW_TOKEN }}
  163. - name: Update Homebrew Formulae
  164. env:
  165. BREW_TOKEN: ${{ secrets.BREW_TOKEN }}
  166. if: "env.BREW_TOKEN != ''"
  167. run: |
  168. git clone git@github.com:yt-dlp/homebrew-taps taps/
  169. python devscripts/update-formulae.py taps/Formula/yt-dlp.rb "${{ needs.create_release.outputs.ytdlp_version }}"
  170. git -C taps/ config user.name github-actions
  171. git -C taps/ config user.email github-actions@example.com
  172. git -C taps/ commit -am 'yt-dlp: ${{ needs.create_release.outputs.ytdlp_version }}'
  173. git -C taps/ push
  174. build_macos:
  175. runs-on: macos-11
  176. needs: create_release
  177. outputs:
  178. sha256_macos: ${{ steps.get_sha.outputs.sha256_macos }}
  179. sha512_macos: ${{ steps.get_sha.outputs.sha512_macos }}
  180. sha256_macos_zip: ${{ steps.get_sha.outputs.sha256_macos_zip }}
  181. sha512_macos_zip: ${{ steps.get_sha.outputs.sha512_macos_zip }}
  182. steps:
  183. - uses: actions/checkout@v2
  184. # NB: In order to create a universal2 application, the version of python3 in /usr/bin has to be used
  185. - name: Install Requirements
  186. run: |
  187. brew install coreutils
  188. /usr/bin/python3 -m pip install -U --user pip Pyinstaller -r requirements.txt
  189. - name: Prepare
  190. run: |
  191. /usr/bin/python3 devscripts/update-version.py ${{ needs.create_release.outputs.version_suffix }}
  192. /usr/bin/python3 devscripts/make_lazy_extractors.py
  193. - name: Build
  194. run: |
  195. /usr/bin/python3 pyinst.py --target-architecture universal2 --onedir
  196. (cd ./dist/yt-dlp_macos && zip -r ../yt-dlp_macos.zip .)
  197. /usr/bin/python3 pyinst.py --target-architecture universal2
  198. - name: Get SHA2-SUMS
  199. id: get_sha
  200. run: |
  201. echo "::set-output name=sha256_macos::$(sha256sum dist/yt-dlp_macos | awk '{print $1}')"
  202. echo "::set-output name=sha512_macos::$(sha512sum dist/yt-dlp_macos | awk '{print $1}')"
  203. echo "::set-output name=sha256_macos_zip::$(sha256sum dist/yt-dlp_macos.zip | awk '{print $1}')"
  204. echo "::set-output name=sha512_macos_zip::$(sha512sum dist/yt-dlp_macos.zip | awk '{print $1}')"
  205. - name: Upload standalone binary
  206. uses: actions/upload-release-asset@v1
  207. env:
  208. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  209. with:
  210. upload_url: ${{ needs.create_release.outputs.upload_url }}
  211. asset_path: ./dist/yt-dlp_macos
  212. asset_name: yt-dlp_macos
  213. asset_content_type: application/octet-stream
  214. - name: Upload onedir binary
  215. uses: actions/upload-release-asset@v1
  216. env:
  217. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  218. with:
  219. upload_url: ${{ needs.create_release.outputs.upload_url }}
  220. asset_path: ./dist/yt-dlp_macos.zip
  221. asset_name: yt-dlp_macos.zip
  222. asset_content_type: application/zip
  223. build_macos_legacy:
  224. runs-on: macos-latest
  225. needs: create_release
  226. outputs:
  227. sha256_macos_legacy: ${{ steps.get_sha.outputs.sha256_macos_legacy }}
  228. sha512_macos_legacy: ${{ steps.get_sha.outputs.sha512_macos_legacy }}
  229. steps:
  230. - uses: actions/checkout@v2
  231. - name: Install Python
  232. # We need the official Python, because the GA ones only support newer macOS versions
  233. env:
  234. PYTHON_VERSION: 3.10.5
  235. MACOSX_DEPLOYMENT_TARGET: 10.9 # Used up by the Python build tools
  236. run: |
  237. # Hack to get the latest patch version. Uncomment if needed
  238. #brew install python@3.10
  239. #export PYTHON_VERSION=$( $(brew --prefix)/opt/python@3.10/bin/python3 --version | cut -d ' ' -f 2 )
  240. curl https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-macos11.pkg -o "python.pkg"
  241. sudo installer -pkg python.pkg -target /
  242. python3 --version
  243. - name: Install Requirements
  244. run: |
  245. brew install coreutils
  246. python3 -m pip install -U --user pip Pyinstaller -r requirements.txt
  247. - name: Prepare
  248. run: |
  249. python3 devscripts/update-version.py ${{ needs.create_release.outputs.version_suffix }}
  250. python3 devscripts/make_lazy_extractors.py
  251. - name: Build
  252. run: |
  253. python3 pyinst.py
  254. - name: Get SHA2-SUMS
  255. id: get_sha
  256. run: |
  257. echo "::set-output name=sha256_macos_legacy::$(sha256sum dist/yt-dlp_macos | awk '{print $1}')"
  258. echo "::set-output name=sha512_macos_legacy::$(sha512sum dist/yt-dlp_macos | awk '{print $1}')"
  259. - name: Upload standalone binary
  260. uses: actions/upload-release-asset@v1
  261. env:
  262. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  263. with:
  264. upload_url: ${{ needs.create_release.outputs.upload_url }}
  265. asset_path: ./dist/yt-dlp_macos
  266. asset_name: yt-dlp_macos_legacy
  267. asset_content_type: application/octet-stream
  268. build_windows:
  269. runs-on: windows-latest
  270. needs: create_release
  271. outputs:
  272. sha256_win: ${{ steps.get_sha.outputs.sha256_win }}
  273. sha512_win: ${{ steps.get_sha.outputs.sha512_win }}
  274. sha256_py2exe: ${{ steps.get_sha.outputs.sha256_py2exe }}
  275. sha512_py2exe: ${{ steps.get_sha.outputs.sha512_py2exe }}
  276. sha256_win_zip: ${{ steps.get_sha.outputs.sha256_win_zip }}
  277. sha512_win_zip: ${{ steps.get_sha.outputs.sha512_win_zip }}
  278. steps:
  279. - uses: actions/checkout@v2
  280. - uses: actions/setup-python@v2
  281. with: # 3.8 is used for Win7 support
  282. python-version: '3.8'
  283. - name: Install Requirements
  284. run: | # Custom pyinstaller built with https://github.com/yt-dlp/pyinstaller-builds
  285. python -m pip install --upgrade pip setuptools wheel py2exe
  286. pip install "https://yt-dlp.github.io/Pyinstaller-Builds/x86_64/pyinstaller-5.2-py3-none-any.whl" -r requirements.txt
  287. - name: Prepare
  288. run: |
  289. python devscripts/update-version.py ${{ needs.create_release.outputs.version_suffix }}
  290. python devscripts/make_lazy_extractors.py
  291. - name: Build
  292. run: |
  293. python setup.py py2exe
  294. Move-Item ./dist/yt-dlp.exe ./dist/yt-dlp_min.exe
  295. python pyinst.py
  296. python pyinst.py --onedir
  297. Compress-Archive -Path ./dist/yt-dlp/* -DestinationPath ./dist/yt-dlp_win.zip
  298. - name: Get SHA2-SUMS
  299. id: get_sha
  300. run: |
  301. echo "::set-output name=sha256_py2exe::$((Get-FileHash dist\yt-dlp_min.exe -Algorithm SHA256).Hash.ToLower())"
  302. echo "::set-output name=sha512_py2exe::$((Get-FileHash dist\yt-dlp_min.exe -Algorithm SHA512).Hash.ToLower())"
  303. echo "::set-output name=sha256_win::$((Get-FileHash dist\yt-dlp.exe -Algorithm SHA256).Hash.ToLower())"
  304. echo "::set-output name=sha512_win::$((Get-FileHash dist\yt-dlp.exe -Algorithm SHA512).Hash.ToLower())"
  305. echo "::set-output name=sha256_win_zip::$((Get-FileHash dist\yt-dlp_win.zip -Algorithm SHA256).Hash.ToLower())"
  306. echo "::set-output name=sha512_win_zip::$((Get-FileHash dist\yt-dlp_win.zip -Algorithm SHA512).Hash.ToLower())"
  307. - name: Upload py2exe binary
  308. uses: actions/upload-release-asset@v1
  309. env:
  310. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  311. with:
  312. upload_url: ${{ needs.create_release.outputs.upload_url }}
  313. asset_path: ./dist/yt-dlp_min.exe
  314. asset_name: yt-dlp_min.exe
  315. asset_content_type: application/vnd.microsoft.portable-executable
  316. - name: Upload standalone binary
  317. uses: actions/upload-release-asset@v1
  318. env:
  319. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  320. with:
  321. upload_url: ${{ needs.create_release.outputs.upload_url }}
  322. asset_path: ./dist/yt-dlp.exe
  323. asset_name: yt-dlp.exe
  324. asset_content_type: application/vnd.microsoft.portable-executable
  325. - name: Upload onedir binary
  326. uses: actions/upload-release-asset@v1
  327. env:
  328. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  329. with:
  330. upload_url: ${{ needs.create_release.outputs.upload_url }}
  331. asset_path: ./dist/yt-dlp_win.zip
  332. asset_name: yt-dlp_win.zip
  333. asset_content_type: application/zip
  334. build_windows32:
  335. runs-on: windows-latest
  336. needs: create_release
  337. outputs:
  338. sha256_win32: ${{ steps.get_sha.outputs.sha256_win32 }}
  339. sha512_win32: ${{ steps.get_sha.outputs.sha512_win32 }}
  340. steps:
  341. - uses: actions/checkout@v2
  342. - uses: actions/setup-python@v2
  343. with: # 3.7 is used for Vista support. See https://github.com/yt-dlp/yt-dlp/issues/390
  344. python-version: '3.7'
  345. architecture: 'x86'
  346. - name: Install Requirements
  347. run: |
  348. python -m pip install --upgrade pip setuptools wheel
  349. pip install "https://yt-dlp.github.io/Pyinstaller-Builds/i686/pyinstaller-5.2-py3-none-any.whl" -r requirements.txt
  350. - name: Prepare
  351. run: |
  352. python devscripts/update-version.py ${{ needs.create_release.outputs.version_suffix }}
  353. python devscripts/make_lazy_extractors.py
  354. - name: Build
  355. run: |
  356. python pyinst.py
  357. - name: Get SHA2-SUMS
  358. id: get_sha
  359. run: |
  360. echo "::set-output name=sha256_win32::$((Get-FileHash dist\yt-dlp_x86.exe -Algorithm SHA256).Hash.ToLower())"
  361. echo "::set-output name=sha512_win32::$((Get-FileHash dist\yt-dlp_x86.exe -Algorithm SHA512).Hash.ToLower())"
  362. - name: Upload standalone binary
  363. uses: actions/upload-release-asset@v1
  364. env:
  365. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  366. with:
  367. upload_url: ${{ needs.create_release.outputs.upload_url }}
  368. asset_path: ./dist/yt-dlp_x86.exe
  369. asset_name: yt-dlp_x86.exe
  370. asset_content_type: application/vnd.microsoft.portable-executable
  371. finish:
  372. runs-on: ubuntu-latest
  373. needs: [create_release, build_unix, build_windows, build_windows32, build_macos, build_macos_legacy]
  374. steps:
  375. - name: Make SHA2-SUMS files
  376. run: |
  377. echo "${{ needs.build_unix.outputs.sha256_bin }} yt-dlp" >> SHA2-256SUMS
  378. echo "${{ needs.build_unix.outputs.sha256_tar }} yt-dlp.tar.gz" >> SHA2-256SUMS
  379. echo "${{ needs.build_unix.outputs.sha256_linux }} yt-dlp_linux" >> SHA2-256SUMS
  380. echo "${{ needs.build_unix.outputs.sha256_linux_zip }} yt-dlp_linux.zip" >> SHA2-256SUMS
  381. echo "${{ needs.build_windows.outputs.sha256_win }} yt-dlp.exe" >> SHA2-256SUMS
  382. echo "${{ needs.build_windows.outputs.sha256_py2exe }} yt-dlp_min.exe" >> SHA2-256SUMS
  383. echo "${{ needs.build_windows32.outputs.sha256_win32 }} yt-dlp_x86.exe" >> SHA2-256SUMS
  384. echo "${{ needs.build_windows.outputs.sha256_win_zip }} yt-dlp_win.zip" >> SHA2-256SUMS
  385. echo "${{ needs.build_macos.outputs.sha256_macos }} yt-dlp_macos" >> SHA2-256SUMS
  386. echo "${{ needs.build_macos.outputs.sha256_macos_zip }} yt-dlp_macos.zip" >> SHA2-256SUMS
  387. echo "${{ needs.build_macos_legacy.outputs.sha256_macos_legacy }} yt-dlp_macos_legacy" >> SHA2-256SUMS
  388. echo "${{ needs.build_unix.outputs.sha512_bin }} yt-dlp" >> SHA2-512SUMS
  389. echo "${{ needs.build_unix.outputs.sha512_tar }} yt-dlp.tar.gz" >> SHA2-512SUMS
  390. echo "${{ needs.build_unix.outputs.sha512_linux }} yt-dlp_linux" >> SHA2-512SUMS
  391. echo "${{ needs.build_unix.outputs.sha512_linux_zip }} yt-dlp_linux.zip" >> SHA2-512SUMS
  392. echo "${{ needs.build_windows.outputs.sha512_win }} yt-dlp.exe" >> SHA2-512SUMS
  393. echo "${{ needs.build_windows.outputs.sha512_py2exe }} yt-dlp_min.exe" >> SHA2-512SUMS
  394. echo "${{ needs.build_windows32.outputs.sha512_win32 }} yt-dlp_x86.exe" >> SHA2-512SUMS
  395. echo "${{ needs.build_windows.outputs.sha512_win_zip }} yt-dlp_win.zip" >> SHA2-512SUMS
  396. echo "${{ needs.build_macos.outputs.sha512_macos }} yt-dlp_macos" >> SHA2-512SUMS
  397. echo "${{ needs.build_macos.outputs.sha512_macos_zip }} yt-dlp_macos.zip" >> SHA2-512SUMS
  398. echo "${{ needs.build_macos_legacy.outputs.sha512_macos_legacy }} yt-dlp_macos_legacy" >> SHA2-512SUMS
  399. - name: Upload SHA2-256SUMS file
  400. uses: actions/upload-release-asset@v1
  401. env:
  402. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  403. with:
  404. upload_url: ${{ needs.create_release.outputs.upload_url }}
  405. asset_path: ./SHA2-256SUMS
  406. asset_name: SHA2-256SUMS
  407. asset_content_type: text/plain
  408. - name: Upload SHA2-512SUMS file
  409. uses: actions/upload-release-asset@v1
  410. env:
  411. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  412. with:
  413. upload_url: ${{ needs.create_release.outputs.upload_url }}
  414. asset_path: ./SHA2-512SUMS
  415. asset_name: SHA2-512SUMS
  416. asset_content_type: text/plain
  417. - name: Make Update spec
  418. run: |
  419. echo "# This file is used for regulating self-update" >> _update_spec
  420. echo "lock 2022.07.18 .+ Python 3.6" >> _update_spec
  421. - name: Upload update spec
  422. uses: actions/upload-release-asset@v1
  423. env:
  424. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  425. with:
  426. upload_url: ${{ needs.create_release.outputs.upload_url }}
  427. asset_path: ./_update_spec
  428. asset_name: _update_spec
  429. asset_content_type: text/plain
  430. - name: Finalize release
  431. env:
  432. GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  433. run: |
  434. gh api -X PATCH -H "Accept: application/vnd.github.v3+json" \
  435. /repos/${{ github.repository }}/releases/${{ needs.create_release.outputs.release_id }} \
  436. -F draft=false