Skip to content

Instantly share code, notes, and snippets.

@nobonobo
Last active October 31, 2023 06:21
Show Gist options
  • Save nobonobo/23501975c2868a355823b9630f43a54d to your computer and use it in GitHub Desktop.
Save nobonobo/23501975c2868a355823b9630f43a54d to your computer and use it in GitHub Desktop.
Pythonスクリプトを動作可能なバイナリにして各種プラットフォーム向けにリリースするシナリオ for GitHub Actions
name: push
on:
push:
tags:
- "v*"
jobs:
windows-build:
runs-on: windows-latest
steps:
- name: Checkout commit
uses: actions/checkout@master
- name: Set up Python 3.8
uses: actions/setup-python@master
with: { python-version: 3.8 }
- name: Upgrade pip
run: python -m pip install --upgrade pip PyInstaller
- name: build
run: pyinstaller -F sample.py
- name: upload
uses: actions/upload-artifact@v1
with:
name: sample-windows
path: dist/sample.exe
macOS-build:
runs-on: macOS-latest
steps:
- name: Checkout commit
uses: actions/checkout@master
- name: Set up Python 3.8
uses: actions/setup-python@master
with: { python-version: 3.8 }
- name: Upgrade pip
run: python -m pip install --upgrade pip PyInstaller
- name: build
run: pyinstaller -F sample.py
- name: upload
uses: actions/upload-artifact@v1
with:
name: sample-macos
path: dist/sample
ubuntu-build:
runs-on: ubuntu-latest
steps:
- name: Checkout commit
uses: actions/checkout@master
- name: Set up Python 3.8
uses: actions/setup-python@master
with: { python-version: 3.8 }
- name: Upgrade pip
run: python -m pip install --upgrade pip PyInstaller
- name: build
run: pyinstaller -F sample.py
- name: upload
uses: actions/upload-artifact@v1
with:
name: sample-linux
path: dist/sample
release:
needs: [ubuntu-build, macOS-build, windows-build]
runs-on: ubuntu-latest
steps:
- name: Download Linux
uses: actions/download-artifact@v1
with:
name: sample-linux
- name: Download Mac
uses: actions/download-artifact@v1
with:
name: sample-macos
- name: Download Windows
uses: actions/download-artifact@v1
with:
name: sample-windows
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
- name: Zip
run: |
tar -C sample-macos -pczvf sample-macos.tar.gz sample
tar -C sample-linux -pczvf sample-linux.tar.gz sample
zip --junk-paths sample-windows ./sample-windows/sample.exe
- name: Append Binary
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./sample-macos.tar.gz
asset_name: sample-macos.tar.gz
asset_content_type: application/gzip
- name: Append Binary
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./sample-linux.tar.gz
asset_name: sample-linux.tar.gz
asset_content_type: application/gzip
- name: Append Binary
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./sample-windows.zip
asset_name: sample-windows.zip
asset_content_type: application/zip
@nobonobo
Copy link
Author

(root)/.github/workflows/build.yamlに配置する&タグにv0.1.0などを付与してpushすればビルドが走る。

@nobonobo
Copy link
Author

pip3 install -r requirements.txtなどを挟めばクロスプラットフォームなスクリプトならビルドできる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment