name: Make Release on: workflow_dispatch: inputs: version: description: "Release version (Example: 1.0.0, must match 'version' in setup.py)" required: true default: '1.0.0' jobs: release_create: runs-on: ubuntu-latest steps: - name: Create GitHub release uses: actions/create-release@v1 id: create_release with: draft: true prerelease: true release_name: ${{ github.event.inputs.version}} alpha tag_name: ${{ github.event.inputs.version}} body: | Autogenerated by github action, developer should edit as required before publishing... env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: set upload_url id: set_upload_url uses: noobly314/share-data@v1 with: share-id: release_url mode: set key: url value: ${{ steps.create_release.outputs.upload_url }} publish_to_pypi: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Python 3.9 uses: actions/setup-python@v2 with: python-version: 3.9 - name: Install pypa/build run: >- python -m pip install build --user - name: Build a binary wheel and a source tarball run: >- python -m build --sdist --wheel --outdir dist/ . - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@master with: user: __token__ password: ${{ secrets.PYPI_API_TOKEN }} build-and-publish-mac: runs-on: macos-latest needs: release_create steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Python 3.9 uses: actions/setup-python@v2 with: python-version: 3.9 - name: Setup code signing env: MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} MACOS_KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} run: | echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12 security create-keychain -p "$MACOS_KEYCHAIN_PASSWORD" meshtastic.keychain security default-keychain -s meshtastic.keychain security unlock-keychain -p "$MACOS_KEYCHAIN_PASSWORD" meshtastic.keychain security import certificate.p12 -k meshtastic.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_KEYCHAIN_PASSWORD" meshtastic.keychain - name: Build env: MACOS_SIGNING_IDENTITY: ${{ secrets.MACOS_SIGNING_IDENTITY }} run: | pip install pyinstaller pip install -r requirements.txt pip install . pyinstaller -F -n meshtastic --collect-all meshtastic --codesign-identity "$MACOS_SIGNING_IDENTITY" meshtastic/__main__.py - name: get upload_url id: get_upload_url uses: noobly314/share-data@v1 with: share-id: release_url mode: get key: url - name: Add mac to release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.get_upload_url.outputs.data }} asset_path: dist/meshtastic_mac asset_name: meshtastic_mac asset_content_type: application/zip build-and-publish-ubuntu: runs-on: ubuntu-latest needs: release_create steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Python 3.9 uses: actions/setup-python@v2 with: python-version: 3.9 - name: Build run: | pip install pyinstaller pip install -r requirements.txt pip install . pyinstaller -F -n meshtastic --collect-all meshtastic meshtastic/__main__.py - name: get upload_url id: get_upload_url uses: noobly314/share-data@v1 with: share-id: release_url mode: get key: url - name: Add ubuntu to release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.get_upload_url.outputs.data }} asset_path: dist/meshtastic_ubuntu asset_name: meshtastic_ubuntu asset_content_type: application/zip build-and-publish-windows: runs-on: windows-latest needs: release_create steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Python 3.9 uses: actions/setup-python@v2 with: python-version: 3.9 - name: Build run: | pip install pyinstaller pip install -r requirements.txt pip install . pyinstaller -F -n meshtastic --collect-all meshtastic meshtastic/__main__.py - name: get upload_url id: get_upload_url uses: noobly314/share-data@v1 with: share-id: release_url mode: get key: url - name: Add windows to release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.get_upload_url.outputs.data }} asset_path: dist/meshtastic_windows asset_name: meshtastic_windows asset_content_type: application/zip