Skip to content

feat: integrate pycify (#22) #44

feat: integrate pycify (#22)

feat: integrate pycify (#22) #44

Workflow file for this run

name: Build binaries for platforms under QEMU
on:
push:
tags:
- "v*"
branches:
- main
workflow_dispatch:
pull_request:
permissions:
contents: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-cross:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- { name: "Linux-aarch64", target: aarch64-linux, os: ubuntu-20.04 }
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Check for release
id: is-release
shell: bash
run: |
unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
echo "IS_RELEASE=${IS_RELEASE}" >> $GITHUB_OUTPUT
- uses: uraimo/run-on-arch-action@v2
name: Build binary under QEMU
id: build
with:
arch: aarch64
distro: ubuntu22.04
# Not required, but speeds up builds by storing container images in
# a GitHub package registry.
githubToken: ${{ github.token }}
run: |
apt update
apt install python3-pip -y
pip install .
# aliens: requires no source
ALIENS_NAME="aliens-${{ matrix.target }}.tar.gz"
ALIENS_PATH=${PWD}/${ALIENS_NAME}
packaged ./aliens.sh 'pip install pygame' 'python -m pygame.examples.aliens'
tar czf $ALIENS_NAME ./aliens.sh
# textual: requires no source
TEXTUAL_NAME="textual-${{ matrix.target }}.tar.gz"
TEXTUAL_PATH=${PWD}/${TEXTUAL_NAME}
packaged ./textual.sh 'pip install textual' 'python -m textual'
tar czf $TEXTUAL_NAME ./textual.sh
# IPython: requires no source
IPYTHON_NAME="ipython-${{ matrix.target }}.tar.gz"
IPYTHON_PATH=${PWD}/${IPYTHON_NAME}
packaged ./ipython.sh 'pip install ipython' 'ipython'
tar czf $IPYTHON_NAME ./ipython.sh
# ./examples/mandelbrot
MANDELBROT_NAME="mandelbrot-${{ matrix.target }}.tar.gz"
MANDELBROT_PATH=${PWD}/${MANDELBROT_NAME}
packaged ./mandelbrot.sh 'pip install -r requirements.txt' 'python mandelbrot.py' ./example/mandelbrot
tar czf $MANDELBROT_NAME ./mandelbrot.sh
# ./examples/minesweeper
MINESWEEPER_NAME="minesweeper-${{ matrix.target }}.tar.gz"
MINESWEEPER_PATH=${PWD}/${MINESWEEPER_NAME}
packaged ./example/minesweeper
tar czf $MINESWEEPER_NAME ./minesweeper.sh
# Setup output paths for upload
echo Setting paths in output
echo ::set-output name=ALIENS_NAME::"${ALIENS_NAME}"
echo ::set-output name=ALIENS_PATH::"${ALIENS_PATH}"
echo ::set-output name=TEXTUAL_NAME::"${TEXTUAL_NAME}"
echo ::set-output name=TEXTUAL_PATH::"${TEXTUAL_PATH}"
echo ::set-output name=IPYTHON_NAME::"${IPYTHON_NAME}"
echo ::set-output name=IPYTHON_PATH::"${IPYTHON_PATH}"
echo ::set-output name=MANDELBROT_NAME::"${MANDELBROT_NAME}"
echo ::set-output name=MANDELBROT_PATH::"${MANDELBROT_PATH}"
echo ::set-output name=MINESWEEPER_NAME::"${MINESWEEPER_NAME}"
echo ::set-output name=MINESWEEPER_PATH::"${MINESWEEPER_PATH}"
- name: Upload aliens
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.ALIENS_NAME }}
path: ${{ steps.build.outputs.ALIENS_PATH }}
- name: Upload textual
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.TEXTUAL_NAME }}
path: ${{ steps.build.outputs.TEXTUAL_PATH }}
- name: Upload IPython
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.IPYTHON_NAME }}
path: ${{ steps.build.outputs.IPYTHON_PATH }}
- name: Upload mandelbrot
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.MANDELBROT_NAME }}
path: ${{ steps.build.outputs.MANDELBROT_PATH }}
- name: Upload minesweeper
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build.outputs.MINESWEEPER_NAME }}
path: ${{ steps.build.outputs.MINESWEEPER_PATH }}
- name: Publish packages
uses: softprops/action-gh-release@v1
if: steps.is-release.outputs.IS_RELEASE
with:
draft: true
files: |
${{ steps.build.outputs.ALIENS_PATH }}
${{ steps.build.outputs.TEXTUAL_PATH }}
${{ steps.build.outputs.IPYTHON_PATH }}
${{ steps.build.outputs.MANDELBROT_PATH }}
${{ steps.build.outputs.MINESWEEPER_PATH }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}