Inkycal/.github/workflows/tests.yml
2023-07-24 02:41:56 +02:00

145 lines
4.2 KiB
YAML

name: Inkycal testing
on:
push:
branches:
- main
jobs:
clone-setup-install:
name: Clone, Setup, and Install
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
with:
ref: main
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install Dependencies
run: |
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install wheel
pip install -e .
cd ..
- name: Create Archive
run: |
mkdir artefacts
tar -czf artefacts/workspace.tar.gz --exclude=./artefacts .
- name: Save Workspace Archive
uses: actions/upload-artifact@v2
with:
name: workspace
path: artefacts/workspace.tar.gz
test-on-arm:
name: Run Tests on Raspberry Pi OS
needs: clone-setup-install
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Restore Workspace
uses: actions/download-artifact@v2
with:
name: workspace
- name: Extract Workspace Archive
run: |
tar -xzf workspace.tar.gz
- name: Run Tests on Raspberry Pi OS
uses: pguyot/arm-runner-action@v2
id: build_image
env:
OPENWEATHERMAP_API_KEY: ${{ secrets.OPENWEATHERMAP_API_KEY }}
SAMPLE_ICAL_URL: ${{ secrets.SAMPLE_ICAL_URL }}
TEST_ICAL_URL: ${{ secrets.TEST_ICAL_URL }}
TODOIST_API_KEY: ${{ secrets.TODOIST_API_KEY }}
with:
# Set the base_image to the desired Raspberry Pi OS version
base_image: raspios_lite:latest
image_additional_mb: 2000 # enlarge free space to 2 GB
# Set the commands to run the tests
commands: |
apt-get update -y
apt-get install -y python3-pip
sudo apt-get install zlib1g libjpeg-dev libatlas-base-dev rustc libopenjp2-7 python3-dev scons libssl-dev python3-venv python3-pip git libfreetype6-dev -y
cd /Inkycal
. venv/bin/activate
python -m pip install --upgrade pip
pip install wheel
pip install -e ./
cd inkycal/tests
echo $PWD
wget https://raw.githubusercontent.com/aceinnolab/Inkycal/assets/tests/settings.json
for f in *.py; do python3 "$f"; done
- name: Compress the release image
run: |
mv ${{ steps.build_image.outputs.image }} inkycal_os.img
xz -0 -T 0 -v inkycal_os.img
ls
- name: Get latest release version
run: |
export tag="$(curl -s https://api.github.com/repos/aceinnolab/Inkycal/releases/latest | jq -r '.tag_name')"
echo "version=${tag}" >> $GITHUB_ENV
- name: Upload Raspberry Pi OS Image
if: success() # Only upload the image if the tests were successful
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.version }}
files: inkycal_os.img.xz
generate-and-publish-docs:
name: Generate and publish docs
needs: clone-setup-install
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@v2
with:
name: workspace
- name: Extract Workspace Archive
run: |
tar -xzf workspace.tar.gz
- name: Generate Docs
run: |
sudo apt-get install python3-sphinx
source venv/bin/activate
pip install sphinxemoji sphinx_rtd_theme recommonmark
cd docsource
make html && make github && cd ..
git add docs/*
git status
- name: publish
run: |
git status
echo "$PWD"
ls
git config user.name github-actions
git config user.email github-actions@github.com
git remote set-url origin https://x-access-token:${{ secrets.ACTIONS_SECRET }}@github.com/$GITHUB_REPOSITORY
git add docs/*
git commit -m "update docs"
git push --force