Skip to content

Fix issues

Fix issues #346

Workflow file for this run

name: Test, build and deploy
on:
push:
branches: ["**"]
pull_request:
branches: ["**"]
release:
types: [created]
jobs:
test:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install coverage
python -m pip install -r requirements.txt
- name: Test with unittest
run: python -m coverage run --source=. -m unittest discover -v -s test/unit/faassupervisor -p '*.py'
- name: Generate XML coverage report
run: python -m coverage xml
- name: Report coverage
uses: codacy/codacy-coverage-reporter-action@v1
with:
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
coverage-reports: coverage.xml
pypi:
needs: test
if: github.event_name == 'release'
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install setuptools wheel twine
python -m pip install -r requirements.txt
- name: Build and publish
env:
TWINE_USERNAME: ${{ secrets.PYPI_USER }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASS }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*
build-amd64:
needs: test
runs-on: ubuntu-20.04
container: ghcr.io/grycap/faas-supervisor-build:ubuntu16.04-1.1
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build binary
run: |
python3.8 -m pip install -r requirements.txt
pyinstaller --onefile -n supervisor-bin faassupervisor/supervisor.py
pyinstaller faassupervisor/supervisor.py
cd dist
zip -r supervisor.zip supervisor
rm -r supervisor
mv supervisor-bin supervisor
- name: Upload amd64 binary
uses: actions/upload-artifact@v2
with:
name: supervisor
path: dist/supervisor
- name: Upload amd64 zip
uses: actions/upload-artifact@v2
with:
name: supervisor.zip
path: dist/supervisor.zip
build-alpine-amd64:
needs: test
runs-on: ubuntu-20.04
container: ghcr.io/grycap/faas-supervisor-build:alpine-1.1
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build binary
run: |
python3.8 -m pip install -r requirements.txt
pyinstaller --onefile -n supervisor-alpine faassupervisor/supervisor.py
pyinstaller faassupervisor/supervisor.py
cd dist
zip -r supervisor-alpine.zip supervisor
- name: Upload amd64 binary
uses: actions/upload-artifact@v2
with:
name: supervisor-alpine
path: dist/supervisor-alpine
- name: Upload amd64 zip
uses: actions/upload-artifact@v2
with:
name: supervisor-alpine.zip
path: dist/supervisor-alpine.zip
build-aarch64:
needs: test
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build binary on emulated aarch64
run: |
docker run --rm --platform arm64 --volume "${PWD}:/repo" ghcr.io/grycap/faas-supervisor-build:ubuntu16.04-1.1 /bin/sh -c " \
cd /repo && \
python3.8 -m pip install -r requirements.txt && \
pyinstaller --onefile -n supervisor-arm64 faassupervisor/supervisor.py && \
pyinstaller faassupervisor/supervisor.py && \
cd dist && \
zip -r supervisor-arm64.zip supervisor \
"
- name: Upload arm64 binary
uses: actions/upload-artifact@v2
with:
name: supervisor-arm64
path: dist/supervisor-arm64
- name: Upload arm64 zip
uses: actions/upload-artifact@v2
with:
name: supervisor-arm64.zip
path: dist/supervisor-arm64.zip
build-alpine-aarch64:
needs: test
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build binary on emulated aarch64
run: |
docker run --rm --platform arm64 --volume "${PWD}:/repo" ghcr.io/grycap/faas-supervisor-build:alpine-1.1 /bin/sh -c " \
cd /repo && \
python3.8 -m pip install -r requirements.txt && \
pyinstaller --onefile -n supervisor-alpine-arm64 faassupervisor/supervisor.py && \
pyinstaller faassupervisor/supervisor.py && \
cd dist && \
zip -r supervisor-alpine-arm64.zip supervisor \
"
- name: Upload arm64 binary
uses: actions/upload-artifact@v2
with:
name: supervisor-alpine-arm64
path: dist/supervisor-alpine-arm64
- name: Upload arm64 zip
uses: actions/upload-artifact@v2
with:
name: supervisor-alpine-arm64.zip
path: dist/supervisor-alpine-arm64.zip
release-assets:
needs:
- build-amd64
- build-aarch64
- build-alpine-amd64
- build-alpine-aarch64
if: github.event_name == 'release'
runs-on: ubuntu-20.04
steps:
- name: Download jobs' artifacts
uses: actions/download-artifact@v2
- name: Upload artifacts to release
uses: softprops/action-gh-release@v1
with:
files: |
supervisor/supervisor
supervisor.zip/supervisor.zip
supervisor-arm64/supervisor-arm64
supervisor-arm64.zip/supervisor-arm64.zip
supervisor-alpine.zip/supervisor-alpine.zip
supervisor-alpine/supervisor-alpine
supervisor-alpine-arm64.zip/supervisor-alpine-arm64.zip
supervisor-alpine-arm64/supervisor-alpine-arm64
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}