GitHub Actions: Difference between revisions
Appearance
mNo edit summary |
(No difference)
|
Latest revision as of 22:43, 30 October 2024
Manual, see [1]
Workflows
Check new Commits and PRs
(copy from edit mode since the display here is wrong)
# This workflow performs chapter quality (known issues) and code quality checks upon new commits and PRs.
# Configured in .pre-commit-config.yaml and setup.cfg
name: Check new commits and PRs
on:
workflow_dispatch:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
check:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Set up Python cache
uses: actions/cache@v3
with:
path: $Template:Env.pythonLocation
key: $Template:Env.pythonLocation-py-cache
- name: Check of chapters for known issues
run: python3 -O scripts/check-chapters.py
- name: Check pre-commit tests
uses: pre-commit/action@v3.0.0
Make Release, manual input
(copy from edit mode since the display here is wrong)
# This manually started workflow builds and creates a new release including the assets.
name: "Create Release"
on:
workflow_dispatch:
inputs:
version_number:
description: 'Version number'
required: true
default: 'v1.2.1'
version_text:
description: 'Description'
required: false
default:
jobs:
release:
runs-on: ubuntu-22.04
steps:
- name: Test print input
run: |
# env var
echo "version_number: $Template:Github.event.inputs.version number"
echo "version_number: $Template:Github.event.inputs.version text"
- name: Checkout repository
uses: actions/checkout@v3
- name: Python set up
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Python cache set up
uses: actions/cache@v3
with:
path: $Template:Env.pythonLocation
key: $Template:Env.pythonLocation-py-cache
- name: Run pre-commit tests
# configured in .pre-commit-config.yaml and setup.cfg
uses: pre-commit/action@v3.0.0
- name: Install requirements
run: sh scripts/install_requirements.sh > /dev/null
- name: Make
run: my_make.sh
- name: Create release
uses: softprops/action-gh-release@v1
with:
# action var
tag_name: "$Template:Inputs.version number"
prerelease: false
files: |
./hpmor*.pdf
./hpmor.epub
Tricks
Caching Python pip packages
- name: Python set up
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Python cache set up
uses: actions/cache@v3
with:
path: $Template:Env.pythonLocation
key: $Template:Env.pythonLocation-py-cache
Caching apt packages
- name: Install packages using cache
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: texlive-extra-utils pandoc calibre imagemagick ghostscript
version: 1.0
# execute_install_scripts: true
Setup Linux environment to DE language
- name: Setup environment to DE lang
run: |
cd /usr/share/locales
sudo ./install-language-pack de_DE.UTF-8
Using Docker Container
jobs:
check:
runs-on: ubuntu-latest
container: ubuntu:24.04
for python you need to install it manually, but better use ubuntu-latest without container but with actions/setup-python@v5 and python-version: "3.12"
name: Check and Test Python Project via Docker
on:
workflow_dispatch:
push:
branches: ["main"]
pull_request:
branches: ["main"]
permissions:
contents: read
jobs:
check:
runs-on: ubuntu-latest
container: ubuntu:24.04
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 1 # 0 if you want to push to repo
# - name: python set up
# uses: actions/setup-python@v5
# with:
# python-version: "3.12"
# cache: "pip"
# - name: python cache set up
# uses: actions/cache@v4
# with:
# path: $Template:Env.pythonLocation
# key: $Template:Env.pythonLocation-py-cache
- name: install python and git
run: |
apt-get update -y > /dev/null
apt-get install -y lsb-release python3 python3-pip python3.12-venv python-is-python3 git > /dev/null
git init
- name: install dependencies via pip
run: |
python -m venv .venv
. .venv/bin/activate
if [ -f requirements.txt ]; then pip --no-cache-dir install -r requirements.txt; fi
pip --no-cache-dir install pre-commit
- name: run pytest
run: |
. .venv/bin/activate
pip install pytest
cp src/rememberthemilk.ini.example src/rememberthemilk.ini
pytest