release.yml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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
  49. pyinstaller labelme.spec
  50. - name: Load release url file from release job
  51. uses: actions/download-artifact@v1
  52. with:
  53. name: release_url
  54. - name: Get release file name & upload url
  55. id: get_release_info
  56. run: |
  57. echo "::set-output name=upload_url::$(cat release_url/release_url.txt)"
  58. - name: Upload release executable on macOS & Linux
  59. id: upload_release_executable_macos_linux
  60. uses: actions/upload-release-asset@v1
  61. env:
  62. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  63. with:
  64. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  65. asset_path: ./dist/labelme
  66. asset_name: labelme-${{ runner.os }}
  67. asset_content_type: application/octet-stream
  68. if: runner.os != 'Windows'
  69. - name: Upload release executable on Windows
  70. id: upload_release_executable_windows
  71. uses: actions/upload-release-asset@v1
  72. env:
  73. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  74. with:
  75. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  76. asset_path: ./dist/labelme.exe
  77. asset_name: Labelme.exe
  78. asset_content_type: application/octet-stream
  79. if: runner.os == 'Windows'
  80. - name: Create dmg for macOS
  81. run: |
  82. npm install -g create-dmg
  83. cd dist
  84. create-dmg Labelme.app || test -f Labelme\ 0.0.0.dmg
  85. mv Labelme\ 0.0.0.dmg Labelme.dmg
  86. if: runner.os == 'macOS'
  87. - name: Upload release app on macOS
  88. id: upload_release_app_macos
  89. uses: actions/upload-release-asset@v1
  90. env:
  91. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  92. with:
  93. upload_url: ${{ steps.get_release_info.outputs.upload_url }}
  94. asset_path: ./dist/Labelme.dmg
  95. asset_name: Labelme.dmg
  96. asset_content_type: application/octet-stream
  97. if: runner.os == 'macOS'