release.yml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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. "categories": [
  21. {
  22. "title": "## 🚀 Features",
  23. "labels": ["feature"]
  24. },
  25. {
  26. "title": "## 🐛 Fixes",
  27. "labels": ["fix"]
  28. },
  29. {
  30. "title": "## 💬 Other",
  31. "labels": ["other"]
  32. }
  33. ]
  34. }
  35. - name: Create Release
  36. id: create_release
  37. uses: mikepenz/action-gh-release@v0.2.0-a03
  38. with:
  39. body: ${{steps.github_release.outputs.changelog}}
  40. - name: Create release url file
  41. run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
  42. - name: Save release url file for publish
  43. uses: actions/upload-artifact@v1
  44. with:
  45. name: release_url
  46. path: release_url.txt
  47. publish:
  48. needs: [release]
  49. strategy:
  50. matrix:
  51. os: [macos-latest, ubuntu-latest, windows-latest]
  52. runs-on: ${{ matrix.os }}
  53. steps:
  54. - uses: actions/checkout@v2
  55. with:
  56. submodules: true
  57. - uses: conda-incubator/setup-miniconda@v2
  58. with:
  59. auto-update-conda: true
  60. python-version: '3.7'
  61. - name: Install main
  62. shell: bash -l {0}
  63. run: |
  64. pip install .
  65. - name: Run pyinstaller
  66. shell: bash -l {0}
  67. run: |
  68. pip install pyinstaller
  69. pyinstaller labelme.spec
  70. - name: Load release url file from release job
  71. uses: actions/download-artifact@v1
  72. with:
  73. name: release_url
  74. - name: Get release file name & upload url
  75. id: get_release_info
  76. run: |
  77. echo "::set-output name=upload_url::$(cat release_url/release_url.txt)"
  78. - name: Upload release executable on macOS & Linux
  79. id: upload_release_executable_macos_linux
  80. uses: actions/upload-release-asset@v1
  81. env:
  82. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  83. with:
  84. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  85. asset_path: ./dist/labelme
  86. asset_name: labelme-${{ runner.os }}
  87. asset_content_type: application/octet-stream
  88. if: runner.os != 'Windows'
  89. - name: Upload release executable on Windows
  90. id: upload_release_executable_windows
  91. uses: actions/upload-release-asset@v1
  92. env:
  93. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  94. with:
  95. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  96. asset_path: ./dist/labelme.exe
  97. asset_name: Labelme.exe
  98. asset_content_type: application/octet-stream
  99. if: runner.os == 'Windows'
  100. - name: Create dmg for macOS
  101. run: |
  102. npm install -g create-dmg
  103. cd dist
  104. create-dmg Labelme.app || test -f Labelme\ 0.0.0.dmg
  105. mv Labelme\ 0.0.0.dmg Labelme.dmg
  106. if: runner.os == 'macOS'
  107. - name: Upload release app on macOS
  108. id: upload_release_app_macos
  109. uses: actions/upload-release-asset@v1
  110. env:
  111. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  112. with:
  113. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  114. asset_path: ./dist/Labelme.dmg
  115. asset_name: Labelme.dmg
  116. asset_content_type: application/octet-stream
  117. if: runner.os == 'macOS'