name: Make Release on: workflow_dispatch jobs: release_create: runs-on: ubuntu-latest outputs: version: ${{ steps.get_version.outputs.version }} upload_url: ${{ steps.create_release.outputs.upload_url }} new_sha: ${{ steps.commit_updated.outputs.sha }} steps: - name: Checkout uses: actions/checkout@v2 - name: Bump version run: >- bin/bump_version.py - name: Commit updated version.py id: commit_updated run: | git config --global user.name 'github-actions' git config --global user.email 'bot@noreply.github.com' git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} git add setup.py git commit -m "bump version" && git push || echo "No changes to commit" git log -n 1 --pretty=format:"%H" | tail -n 1 | awk '{print "::set-output name=sha::"$0}' - name: Get version id: get_version run: >- bin/show_version.py - name: Create GitHub release uses: actions/create-release@v1 id: create_release with: draft: true prerelease: true release_name: Meshtastic Python ${{ steps.get_version.outputs.version }} tag_name: ${{ steps.get_version.outputs.version }} body: | Autogenerated by github action, developer should edit as required before publishing... env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - 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@v3 with: ref: ${{ needs.release_create.outputs.new_sha }} - 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: Add mac to release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.release_create.outputs.upload_url }} asset_path: dist/meshtastic 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@v3 with: ref: ${{ needs.release_create.outputs.new_sha }} - 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: Add ubuntu to release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.release_create.outputs.upload_url }} asset_path: dist/meshtastic asset_name: meshtastic_ubuntu asset_content_type: application/zip - name: Add readme.txt to release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.release_create.outputs.upload_url }} asset_path: standalone_readme.txt asset_name: readme.txt asset_content_type: text/plain build-and-publish-windows: runs-on: windows-latest needs: release_create steps: - name: Checkout uses: actions/checkout@v3 with: ref: ${{ needs.release_create.outputs.new_sha }} - 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: Add windows to release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.release_create.outputs.upload_url }} asset_path: dist/meshtastic.exe asset_name: meshtastic_windows asset_content_type: application/zip