release.yml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. name: release
  2. on:
  3. push:
  4. tags:
  5. - 'v*'
  6. jobs:
  7. release:
  8. if: startsWith(github.ref, 'refs/tags/')
  9. runs-on: ubuntu-latest
  10. steps:
  11. - name: Build Changelog
  12. id: github_release
  13. uses: mikepenz/release-changelog-builder-action@v3
  14. env:
  15. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  16. with:
  17. configurationJson: |
  18. {
  19. "template": "#{{CHANGELOG}}\n\n<details>\n<summary>Uncategorized</summary>\n\n#{{UNCATEGORIZED}}\n</details>\n\nIf you find this project useful, please consider [sponsoring](https://github.com/sponsors/wkentaro) its development.",
  20. "pr_template": "- #{{TITLE}} ##{{NUMBER}}",
  21. "categories": [
  22. {
  23. "title": "## 🚀 Features",
  24. "labels": ["feature"]
  25. },
  26. {
  27. "title": "## ✨ Enhancement",
  28. "labels": ["enhancement"]
  29. },
  30. {
  31. "title": "## 🐛 Fixes",
  32. "labels": ["fix"]
  33. },
  34. {
  35. "title": "## 💬 Other",
  36. "labels": ["other"]
  37. }
  38. ]
  39. }
  40. - name: Create Release
  41. id: create_release
  42. uses: mikepenz/action-gh-release@v0.2.0-a03
  43. with:
  44. body: ${{steps.github_release.outputs.changelog}}
  45. - name: Create release url file
  46. run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
  47. - name: Save release url file for publish
  48. uses: actions/upload-artifact@v1
  49. with:
  50. name: release_url
  51. path: release_url.txt
  52. publish:
  53. needs: [release]
  54. strategy:
  55. matrix:
  56. os: [macos-latest, ubuntu-latest, windows-latest]
  57. runs-on: ${{ matrix.os }}
  58. steps:
  59. - uses: actions/checkout@v2
  60. with:
  61. submodules: true
  62. - uses: conda-incubator/setup-miniconda@v2
  63. with:
  64. auto-update-conda: true
  65. python-version: '3.7'
  66. - name: Install main
  67. shell: bash -l {0}
  68. run: |
  69. pip install .
  70. - name: Run pyinstaller
  71. shell: bash -l {0}
  72. run: |
  73. pip install pyinstaller
  74. pyinstaller labelme.spec
  75. - name: Load release url file from release job
  76. uses: actions/download-artifact@v1
  77. with:
  78. name: release_url
  79. - name: Get release file name & upload url
  80. id: get_release_info
  81. run: |
  82. echo "::set-output name=upload_url::$(cat release_url/release_url.txt)"
  83. - name: Upload release executable on macOS & Linux
  84. id: upload_release_executable_macos_linux
  85. uses: actions/upload-release-asset@v1
  86. env:
  87. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  88. with:
  89. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  90. asset_path: ./dist/labelme
  91. asset_name: labelme-${{ runner.os }}
  92. asset_content_type: application/octet-stream
  93. if: runner.os != 'Windows'
  94. - name: Upload release executable on Windows
  95. id: upload_release_executable_windows
  96. uses: actions/upload-release-asset@v1
  97. env:
  98. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  99. with:
  100. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  101. asset_path: ./dist/labelme.exe
  102. asset_name: Labelme.exe
  103. asset_content_type: application/octet-stream
  104. if: runner.os == 'Windows'
  105. - name: Create dmg for macOS
  106. run: |
  107. npm install -g create-dmg
  108. cd dist
  109. create-dmg Labelme.app || test -f Labelme\ 0.0.0.dmg
  110. mv Labelme\ 0.0.0.dmg Labelme.dmg
  111. if: runner.os == 'macOS'
  112. - name: Upload release app on macOS
  113. id: upload_release_app_macos
  114. uses: actions/upload-release-asset@v1
  115. env:
  116. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  117. with:
  118. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  119. asset_path: ./dist/Labelme.dmg
  120. asset_name: Labelme.dmg
  121. asset_content_type: application/octet-stream
  122. if: runner.os == 'macOS'