Skip to content

[Tests][CI/CD] Adapted references to KiCad 8.0.4 #2372

[Tests][CI/CD] Adapted references to KiCad 8.0.4

[Tests][CI/CD] Adapted references to KiCad 8.0.4 #2372

Workflow file for this run

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Regression tests
on:
push:
paths:
- '**.py'
- 'g*.sh'
- 'src/kibot'
- 'tests/**'
- '.github/workflows/pythonapp.yml'
- 'tools/dev_image/Dockerfile'
- 'tools/dev_image_k6/Dockerfile'
pull_request:
paths:
- '**.py'
- 'g*.sh'
- 'src/kibot'
- 'tests/**'
- '.github/workflows/pythonapp.yml'
- 'tools/dev_image/Dockerfile'
- 'tools/dev_image_k6/Dockerfile'
repository_dispatch:
types: [run_tests]
jobs:
test:
strategy:
fail-fast: false
matrix:
ki_release: [ki5, ki6, ki7, ki8]
w_tests: [g1, g2, g3]
# ki_release: [ki8]
# w_tests: [g2]
runs-on: ubuntu-latest
container: ghcr.io/inti-cmnb/kicad_auto_test:${{ matrix.ki_release }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Test ${{ matrix.ki_release }}
env:
KI_RELEASE: ${{ matrix.ki_release }}
PIP_OPS: ${{ matrix.ki_release != 'ki5' && '--break-system-packages' || ''}}
run: |
rm -rf output
rm -f tests/.local
##### Experimental stuff:
## Remove KiAuto
#dpkg --remove --force-all kiauto
## Install KiAuto@master
#curl https://codeload.github.com/INTI-CMNB/KiAuto/zip/refs/heads/master --output pp.zip
#unzip pp.zip
#pip3 install ${PIP_OPS} KiAuto-master/
## Clean the downloaded stuff
#rm -rf KiAuto-master/ pp.zip
## Install KiDiff@master
#curl https://codeload.github.com/INTI-CMNB/KiDiff/zip/refs/heads/master --output pp.zip
#unzip pp.zip
#pip3 install ${PIP_OPS} KiDiff-master/
## Clean the downloaded stuff
#rm -rf KiDiff-master/ pp.zip
## Check what we got
#echo $PATH
#ls -la /usr/bin/*_do || true
#ls -la /usr/local/bin/*_do || true
#which pcbnew_do
#pcbnew_do --version
# KiDiff tests
#curl https://codeload.github.com/INTI-CMNB/KiDiff/zip/refs/heads/kiri_mode --output pp.zip
#unzip pp.zip
#prefix=/usr make -C KiDiff-kiri_mode install
#rm -rf KiDiff-kiri_mode/ pp.zip
#kicad-diff.py --version
##### End Experimental stuff
# Ensure we start a fresh coverage meassurement
python3-coverage erase
# Create the caches with macros
python3-coverage run src/kibot --help-outputs > /dev/null
# Individual run for specific tests
# pytest --log-cli-level debug -k "test_ibom_parse_fail" --test_dir=output
# Run the 90% faster tests (under 3 s) together
# Do it in parallel
./${{ matrix.w_tests }}.sh
- name: Store coverage
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: Test_Coverage_${{ matrix.ki_release }}_${{ matrix.w_tests }}
path: .coverage.*
include-hidden-files: true
- name: Collect coverage ${{ matrix.ki_release }}
run: |
python3-coverage combine
python3-coverage report
python3-coverage html -d output/htmlcov_${{ matrix.w_tests }}
python3-coverage xml
ls -la coverage* .coverage*
- name: Store results
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: Test_Output_${{ matrix.ki_release }}_${{ matrix.w_tests }}
# Important! empty directories are skipped!!!!
path: output
include-hidden-files: true
- name: Upload Coverage
# Don't mix stable coverage with development coverage
# if: ${{ (github.ref == 'refs/heads/dev') && (matrix.ki_release != 'ki8') }}
if: ${{ (matrix.ki_release != 'ki8') }}
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
COVERALLS_FLAG_NAME: ${{ matrix.ki_release }}_${{ matrix.w_tests }}
COVERALLS_PARALLEL: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# apt-get update
# apt-get -y install python3-pip
# pip3 install coveralls
#coveralls --service=github
#echo Disabled by now
coveralls
- name: Upload Coverage optional
if: ${{ (matrix.ki_release == 'ki8') }}
env:
COVERALLS_DEBUG: true
COVERALLS_FLAG_NAME: ${{ matrix.ki_release }}_${{ matrix.w_tests }}
COVERALLS_PARALLEL: true
COVERALLS_ENDPOINT: https://coveralls.io
# COVERALLS_GIT_BRANCH: ${{ inputs.git-branch }}
# COVERALLS_GIT_COMMIT: ${{ inputs.git-commit }}
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# COVERALLS_COMPARE_REF: ${{ inputs.compare-ref }}
# COVERALLS_COMPARE_SHA: ${{ inputs.compare-sha }}
COVERALLS_SOURCE_HEADER: github-action
run: |
ls -la coverage* .coverage*
mkdir -p ~/bin/
echo ~/bin >> $GITHUB_PATH
ln -s `which python3-coverage` /usr/bin/coverage
python3-coverage --version
coverage --version
export CURDIR=`pwd`
cd ~/bin/
curl -sLO https://github.com/coverallsapp/coverage-reporter/releases/download/v0.6.9/coveralls-linux.tar.gz
curl -sLO https://github.com/coverallsapp/coverage-reporter/releases/download/v0.6.9/coveralls-checksums.txt
# curl -sLO https://github.com/coverallsapp/coverage-reporter/releases/latest/download/coveralls-linux.tar.gz
# curl -sLO https://github.com/coverallsapp/coverage-reporter/releases/latest/download/coveralls-checksums.txt
cat coveralls-checksums.txt | grep coveralls-linux.tar.gz | sha256sum --check
tar -xzf coveralls-linux.tar.gz
rm coveralls-checksums.txt
ls -la ~/bin/
cd ${CURDIR}
~/bin/coveralls report --debug --format python .coverage
test_indep:
strategy:
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/inti-cmnb/kicad_auto_test:latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings.
flake8 . --count --exit-zero --statistics
- name: Test Independent
env:
KI_RELEASE: latest
run: |
rm -rf output
rm -f tests/.local
# Ensure we start a fresh coverage meassurement
python3-coverage erase
# Create the caches with macros
python3-coverage run src/kibot --help-outputs > /dev/null
./g4.sh
- name: Store coverage
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: Test_Coverage_Independent
path: .coverage.*
include-hidden-files: true
- name: Collect coverage independent
run: |
python3-coverage combine
python3-coverage report
python3-coverage html -d output/htmlcov_independent
- name: Store results
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: Test_Output_Independent
# Important! empty directories are skipped!!!!
path: output
include-hidden-files: true
- name: Upload Coverage
# Don't mix stable coverage with development coverage
# if: github.ref == 'refs/heads/dev'
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
COVERALLS_FLAG_NAME: independent
COVERALLS_PARALLEL: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# apt-get update
# apt-get -y install python3-pip
# pip3 install coveralls
#coveralls --service=github
#echo Disabled by now
coveralls
create_images:
name: Triggers the docker images creation
runs-on: ubuntu-latest
needs: [test, test_indep]
if: github.ref == 'refs/heads/dev'
steps:
- name: Trigger `dev` images build
run: |
curl -L -X POST -H "Authorization: Bearer ${{secrets.PAT_TOKEN}}" -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/INTI-CMNB/KiBot/actions/workflows/dev_images.yml/dispatches --data '{"ref": "dev"}'
consolidate_coverage:
name: Consolidate coverage data
runs-on: ubuntu-latest
container: setsoft/kicad_auto_test:ki7
needs: [test, test_indep]
# Don't mix stable coverage with development coverage
#if: github.ref == 'refs/heads/dev'
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Download coverage k5 g1
uses: actions/download-artifact@v4
with:
name: Test_Coverage_ki5_g1
- name: Download coverage k5 g2
uses: actions/download-artifact@v4
with:
name: Test_Coverage_ki5_g2
- name: Download coverage k5 g3
uses: actions/download-artifact@v4
with:
name: Test_Coverage_ki5_g3
- name: Download coverage k6 g1
uses: actions/download-artifact@v4
with:
name: Test_Coverage_ki6_g1
- name: Download coverage k6 g2
uses: actions/download-artifact@v4
with:
name: Test_Coverage_ki6_g2
- name: Download coverage k6 g3
uses: actions/download-artifact@v4
with:
name: Test_Coverage_ki6_g3
- name: Download coverage independent
uses: actions/download-artifact@v4
with:
name: Test_Coverage_Independent
- name: Combine coverage
run: |
pip3 install --upgrade --break-system-packages coverage==5.1
ln -s /usr/local/bin/coverage3 /usr/local/bin/python3-coverage || true
python3-coverage combine
python3-coverage report
python3-coverage html -d htmlcov
- name: Store result
uses: actions/upload-artifact@v4
with:
name: Test_Coverage_combined
path: htmlcov
include-hidden-files: true
coveralls:
name: Finish Coveralls
needs: [test, test_indep]
runs-on: ubuntu-latest
# Don't mix stable coverage with development coverage
#if: github.ref == 'refs/heads/dev'
steps:
- name: Finished
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
run: |
curl -k https://coveralls.io/webhook?repo_token=$COVERALLS_REPO_TOKEN -d "payload[build_num]="$GITHUB_RUN_ID"&payload[status]=done"