Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9a33a332d | ||
|
|
0ef75fa4df | ||
|
|
552fdbedd1 | ||
|
|
c2734ccf37 | ||
|
|
a118eb0da4 | ||
|
|
eb09f72a9c |
71
README.md
71
README.md
@@ -1,2 +1,69 @@
|
|||||||
# pyinstaller-action
|
# PyInstaller-Action-Windows
|
||||||
Github Action for building executables with Pyinstaller
|
|
||||||
|
Github Action for building executables with PyInstaller
|
||||||
|
|
||||||
|
To build your application, you need to specify where your source code is via the `path` argument, this defaults to `src`.
|
||||||
|
|
||||||
|
The source code directory should have your `.spec` file that PyInstaller generates. If you don't have one, you'll need to run PyInstaller once locally to generate it.
|
||||||
|
|
||||||
|
If the `src` folder has a `requirements.txt` file, the packages will be installed into the environment before PyInstaller runs.
|
||||||
|
|
||||||
|
If you wish to specify a package mirror, this is possibly via the `pypi_url` and/or the `pypi_index_url`, these defaults are:
|
||||||
|
|
||||||
|
- `pypi_url` = `https://pypi.python.org/`
|
||||||
|
- `pypi_index_url` = `https://pypi.python.org/simple`
|
||||||
|
|
||||||
|
> If you are using the default Python `gitignore` file, ensure to remove `.spec`.
|
||||||
|
|
||||||
|
> This action uses [Wine](https://www.winehq.org) to emulate windows inside Docker for packaging POSIX executables.
|
||||||
|
|
||||||
|
## Example usage
|
||||||
|
|
||||||
|
Include this in your `.github/workflows/main.yaml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: PyInstaller Windows
|
||||||
|
uses: JackMcKew/pyinstaller-action-windows@master
|
||||||
|
with:
|
||||||
|
path: src
|
||||||
|
```
|
||||||
|
|
||||||
|
## Full Example
|
||||||
|
|
||||||
|
Here is an entire workflow for:
|
||||||
|
|
||||||
|
- Packaging an application with PyInstaller
|
||||||
|
- Uploading the packaged executable as an artifact
|
||||||
|
|
||||||
|
``` yaml
|
||||||
|
|
||||||
|
name: Package Application with Pyinstaller
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Package Application
|
||||||
|
uses: JackMcKew/pyinstaller-action-windows@master
|
||||||
|
with:
|
||||||
|
path: src
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: name-of-artifact
|
||||||
|
path: src/dist/windows
|
||||||
|
```
|
||||||
|
|
||||||
|
## Sources
|
||||||
|
|
||||||
|
A big thank you to all the contributors over at <https://github.com/cdrx/docker-pyinstaller>, this action is just a modified version of their docker container, thank you!
|
||||||
|
|||||||
10
action.yml
10
action.yml
@@ -9,6 +9,14 @@ inputs:
|
|||||||
description: 'Directory containing source code & .spec file (optional requirements.txt).'
|
description: 'Directory containing source code & .spec file (optional requirements.txt).'
|
||||||
required: True
|
required: True
|
||||||
default: src
|
default: src
|
||||||
|
pypi_url:
|
||||||
|
description: 'Specify a custom URL for PYPI'
|
||||||
|
required: False
|
||||||
|
default: https://pypi.python.org/
|
||||||
|
pypi_index_url:
|
||||||
|
description: 'Specify a custom URL for PYPI Index'
|
||||||
|
required: False
|
||||||
|
default: https://pypi.python.org/simple
|
||||||
outputs:
|
outputs:
|
||||||
output:
|
output:
|
||||||
description: 'The output of PyInstaller'
|
description: 'The output of PyInstaller'
|
||||||
@@ -18,3 +26,5 @@ runs:
|
|||||||
image: 'Dockerfile'
|
image: 'Dockerfile'
|
||||||
args:
|
args:
|
||||||
- ${{ inputs.path }}
|
- ${{ inputs.path }}
|
||||||
|
- ${{ inputs.pypi_url }}
|
||||||
|
- ${{ inputs.pypi_index_url }}
|
||||||
@@ -11,6 +11,10 @@ set -e
|
|||||||
# and don't allow that much flexibility to mount volumes
|
# and don't allow that much flexibility to mount volumes
|
||||||
SRCDIR=$1
|
SRCDIR=$1
|
||||||
|
|
||||||
|
PYPI_URL=$2
|
||||||
|
|
||||||
|
PYPI_INDEX_URL=$3
|
||||||
|
|
||||||
WORKDIR=${SRCDIR:-/src}
|
WORKDIR=${SRCDIR:-/src}
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -30,17 +34,14 @@ if [[ "$PYPI_URL" != "https://pypi.python.org/" ]] || \
|
|||||||
echo "Using custom pip.ini: "
|
echo "Using custom pip.ini: "
|
||||||
cat /wine/drive_c/users/root/pip/pip.ini
|
cat /wine/drive_c/users/root/pip/pip.ini
|
||||||
fi
|
fi
|
||||||
echo "before cd"
|
|
||||||
ls
|
|
||||||
cd $WORKDIR
|
cd $WORKDIR
|
||||||
echo "after cd"
|
|
||||||
ls
|
|
||||||
if [ -f requirements.txt ]; then
|
if [ -f requirements.txt ]; then
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
fi # [ -f requirements.txt ]
|
fi # [ -f requirements.txt ]
|
||||||
|
|
||||||
echo "this is at"
|
|
||||||
echo "$@"
|
|
||||||
|
|
||||||
# if [[ "$@" == "" ]]; then
|
# if [[ "$@" == "" ]]; then
|
||||||
pyinstaller --clean -y --dist ./dist/windows --workpath /tmp *.spec
|
pyinstaller --clean -y --dist ./dist/windows --workpath /tmp *.spec
|
||||||
|
|||||||
Reference in New Issue
Block a user