Kentaro Wada 4 роки тому
батько
коміт
96dabeb891
1 змінених файлів з 117 додано та 0 видалено
  1. 117 0
      .github/workflows/release.yml

+ 117 - 0
.github/workflows/release.yml

@@ -0,0 +1,117 @@
+name: release
+
+on:
+  push:
+    tags:
+    - 'v*'
+
+jobs:
+  release:
+    runs-on: ubuntu-latest
+
+    steps:
+
+    - name: Create release
+      id: create_release
+      uses: actions/create-release@v1
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      with:
+        tag_name: ${{ github.ref }}
+        release_name: ${{ github.ref }}
+        draft: false
+        prerelease: false
+
+    - name: Create release url file
+      run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
+
+    - name: Save release url file for publish
+      uses: actions/upload-artifact@v1
+      with:
+        name: release_url
+        path: release_url.txt
+
+  publish:
+    needs: [release]
+
+    strategy:
+      matrix:
+        os: [macos-latest, ubuntu-latest, windows-latest]
+
+    runs-on: ${{ matrix.os }}
+
+    steps:
+    - uses: actions/checkout@v2
+      with:
+        submodules: true
+
+    - uses: goanpeca/setup-miniconda@v1
+      with:
+        auto-update-conda: true
+        python-version: '3.7'
+
+    - name: Install main
+      shell: bash -l {0}
+      run: |
+        pip install .
+
+    - name: Run pyinstaller
+      shell: bash -l {0}
+      run: |
+        pip install 'pyinstaller!=3.4'
+        pip install 'setuptools<45.0.0'
+        pyinstaller labelme.spec
+
+    - name: Load release url file from release job
+      uses: actions/download-artifact@v1
+      with:
+        name: release_url
+
+    - name: Get release file name & upload url
+      id: get_release_info
+      run: |
+        echo "::set-output name=upload_url::$(cat release_url/release_url.txt)"
+
+    - name: Upload release executable on macOS & Linux
+      id: upload_release_executable_macos_linux
+      uses: actions/upload-release-asset@v1
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      with:
+        upload_url: ${{ steps.get_release_info.outputs.upload_url }}
+        asset_path: ./dist/labelme
+        asset_name: labelme-${{ runner.os }}
+        asset_content_type: application/octet-stream
+      if: runner.os != 'Windows'
+
+    - name: Upload release executable on Windows
+      id: upload_release_executable_windows
+      uses: actions/upload-release-asset@v1
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      with:
+        upload_url: ${{ steps.get_release_info.outputs.upload_url }}
+        asset_path: ./dist/labelme.exe
+        asset_name: Labelme.exe
+        asset_content_type: application/octet-stream
+      if: runner.os == 'Windows'
+
+    - name: Create dmg for macOS
+      run: |
+        npm install -g create-dmg
+        cd dist
+        create-dmg Labelme.app || test -f Labelme\ 0.0.0.dmg
+        mv Labelme\ 0.0.0.dmg Labelme.dmg
+      if: runner.os == 'macOS'
+
+    - name: Upload release app on macOS
+      id: upload_release_app_macos
+      uses: actions/upload-release-asset@v1
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      with:
+        upload_url: ${{ steps.get_release_info.outputs.upload_url }}
+        asset_path: ./dist/Labelme.dmg
+        asset_name: Labelme.dmg
+        asset_content_type: application/octet-stream
+      if: runner.os == 'macOS'