release.yml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. name: release
  2. on:
  3. push:
  4. tags:
  5. - 'v*'
  6. jobs:
  7. release:
  8. runs-on: ubuntu-latest
  9. steps:
  10. - name: Create release
  11. id: create_release
  12. uses: actions/create-release@v1
  13. env:
  14. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  15. with:
  16. tag_name: ${{ github.ref }}
  17. release_name: ${{ github.ref }}
  18. draft: false
  19. prerelease: false
  20. - name: Create release url file
  21. run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
  22. - name: Save release url file for publish
  23. uses: actions/upload-artifact@v1
  24. with:
  25. name: release_url
  26. path: release_url.txt
  27. publish:
  28. needs: [release]
  29. strategy:
  30. matrix:
  31. os: [macos-latest, ubuntu-latest, windows-latest]
  32. runs-on: ${{ matrix.os }}
  33. steps:
  34. - uses: actions/checkout@v2
  35. with:
  36. submodules: true
  37. - uses: goanpeca/setup-miniconda@v1
  38. with:
  39. auto-update-conda: true
  40. python-version: '3.7'
  41. - name: Install main
  42. shell: bash -l {0}
  43. run: |
  44. pip install .
  45. - name: Run pyinstaller
  46. shell: bash -l {0}
  47. run: |
  48. pip install 'pyinstaller!=3.4'
  49. pip install 'setuptools<45.0.0'
  50. pyinstaller labelme.spec
  51. - name: Load release url file from release job
  52. uses: actions/download-artifact@v1
  53. with:
  54. name: release_url
  55. - name: Get release file name & upload url
  56. id: get_release_info
  57. run: |
  58. echo "::set-output name=upload_url::$(cat release_url/release_url.txt)"
  59. - name: Upload release executable on macOS & Linux
  60. id: upload_release_executable_macos_linux
  61. uses: actions/upload-release-asset@v1
  62. env:
  63. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  64. with:
  65. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  66. asset_path: ./dist/labelme
  67. asset_name: labelme-${{ runner.os }}
  68. asset_content_type: application/octet-stream
  69. if: runner.os != 'Windows'
  70. - name: Upload release executable on Windows
  71. id: upload_release_executable_windows
  72. uses: actions/upload-release-asset@v1
  73. env:
  74. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  75. with:
  76. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  77. asset_path: ./dist/labelme.exe
  78. asset_name: Labelme.exe
  79. asset_content_type: application/octet-stream
  80. if: runner.os == 'Windows'
  81. - name: Create dmg for macOS
  82. run: |
  83. npm install -g create-dmg
  84. cd dist
  85. create-dmg Labelme.app || test -f Labelme\ 0.0.0.dmg
  86. mv Labelme\ 0.0.0.dmg Labelme.dmg
  87. if: runner.os == 'macOS'
  88. - name: Upload release app on macOS
  89. id: upload_release_app_macos
  90. uses: actions/upload-release-asset@v1
  91. env:
  92. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  93. with:
  94. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  95. asset_path: ./dist/Labelme.dmg
  96. asset_name: Labelme.dmg
  97. asset_content_type: application/octet-stream
  98. if: runner.os == 'macOS'