release.yml 4.2 KB

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