From 8a965ac951466f1d00b9378ce5f57de52462e452 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sat, 8 Jun 2024 08:46:57 +0800 Subject: [PATCH] Add code to tag, build and publish stub binaries. --- .github/workflows/update-binary.yml | 75 +++++++++++++++++++++++++++++ stub/pyproject.toml | 19 ++++++++ stub/src/console_stub/__init__.py | 0 stub/src/gui_stub/__init__.py | 0 4 files changed, 94 insertions(+) create mode 100644 .github/workflows/update-binary.yml create mode 100644 stub/pyproject.toml create mode 100644 stub/src/console_stub/__init__.py create mode 100644 stub/src/gui_stub/__init__.py diff --git a/.github/workflows/update-binary.yml b/.github/workflows/update-binary.yml new file mode 100644 index 0000000..19e4a03 --- /dev/null +++ b/.github/workflows/update-binary.yml @@ -0,0 +1,75 @@ +name: Update binary +on: + push: + tags: + - '*-b*' + +defaults: + run: + shell: bash + +jobs: + build-stubs: + name: Build stub binaries + runs-on: windows-latest + strategy: + matrix: + python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12" ] + steps: + - name: Set Build Variables + env: + TAG_NAME: ${{ github.ref }} + run: | + export TAG=$(basename $TAG_NAME) + export PYTHON_TAG=$(python -c "print('.'.join('${{ matrix.python-version }}'.split('.')[:2]))") + export BRIEFCASE_VERSION="${TAG%-*}" + export BUILD_NUMBER="${TAG#*-}" + + echo "TAG=${TAG}" | tee -a $GITHUB_ENV + echo "PYTHON_TAG=${PYTHON_TAG}" | tee -a $GITHUB_ENV + echo "BRIEFCASE_VERSION=${BRIEFCASE_VERSION}" | tee -a $GITHUB_ENV + echo "BUILD_NUMBER=${BUILD_NUMBER}" | tee -a $GITHUB_ENV + + - name: Checkout Template + uses: actions/checkout@v4.1.6 + + - name: Setup Python ${{ matrix.python-version }} + uses: actions/setup-python@v5.1.0 + with: + python-version: ${{ matrix.python-version }} + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + if [ "${{ env.BRIEFCASE_VERSION }}" == "dev" ]; then + # We're on the development template; use development Briefcase + python -m pip install git+https://github.com/beeware/briefcase.git + else + python -m pip install briefcase==${{ env.BRIEFCASE_VERSION }} + fi + + - name: Generate VisualStudio Stub App + run: | + # Generate the stub app + cd stub + briefcase build windows visualstudio + + echo "Build console stub artefact" + mv "./build/console-stub/windows/visualstudio/x64/Release/Console Stub.exe" ./Stub.exe + zip Console-Stub-${{ env.PYTHON_TAG }}-${{ steps.build-vars.outputs.BUILD_NUMBER }}.zip Stub.exe + + echo "Build GUI stub artefact" + mv "./build/gui-stub/windows/visualstudio/x64/Release/GUI Stub.exe" ./Stub.exe + zip GUI-Stub-${{ env.PYTHON_TAG }}-${{ steps.build-vars.outputs.BUILD_NUMBER }}.zip Stub.exe + + - name: Upload Release Asset to S3 + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + run: | + python -m pip install -U pip + python -m pip install -U setuptools + python -m pip install awscli + + aws s3 cp stub/Console-Stub-${{ env.PYTHON_TAG }}-${{ steps.build-vars.outputs.BUILD_NUMBER }}.zip s3://briefcase-support/python/${{ steps.build-vars. outputs.PY_VERSION }}/windows/Console-Stub-${{ env.PYTHON_TAG }}-${{ steps.build-vars.outputs.BUILD_NUMBER }}.zip + aws s3 cp stub/GUI-Stub-${{ env.PYTHON_TAG }}-${{ steps.build-vars.outputs.BUILD_NUMBER }}.zip s3://briefcase-support/python/${{ steps.build-vars.outputs.PY_VERSION }}/windows/GUI-Stub-${{ env.PYTHON_TAG }}-${{ steps.build-vars.outputs.BUILD_NUMBER }}.zip diff --git a/stub/pyproject.toml b/stub/pyproject.toml new file mode 100644 index 0000000..9475511 --- /dev/null +++ b/stub/pyproject.toml @@ -0,0 +1,19 @@ +[tool.briefcase] +project_name = "Stub" +bundle = "org.beeware" +version = "1.0.0" +license.file = "../LICENSE" + +# Use the current state of this repo as the template. +template = ".." + +[tool.briefcase.app.gui-stub] +formal_name = "GUI Stub" +description = "A stub binary for GUI apps that can be integrated into the Windows app template" +sources = ['src/gui_stub'] + +[tool.briefcase.app.console-stub] +formal_name = "Console Stub" +description = "A stub binary for console apps that can be integrated into the Windows app template" +sources = ['src/console_stub'] +console_app = true diff --git a/stub/src/console_stub/__init__.py b/stub/src/console_stub/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/stub/src/gui_stub/__init__.py b/stub/src/gui_stub/__init__.py new file mode 100644 index 0000000..e69de29