Minor OCPP 1.6 fixes (#388) #297
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# matth-x/MicroOcpp | |
# Copyright Matthias Akstaller 2019 - 2024 | |
# MIT License | |
name: Documentation | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
permissions: | |
contents: write | |
jobs: | |
build_simulator: | |
name: Build Simulator | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.x | |
- uses: actions/cache@v2 | |
with: | |
key: ${{ github.ref }} | |
path: .cache | |
- name: Get build tools | |
run: | | |
sudo apt update | |
sudo apt install cmake libssl-dev build-essential | |
- name: Checkout Simulator | |
uses: actions/checkout@v3 | |
with: | |
repository: matth-x/MicroOcppSimulator | |
path: MicroOcppSimulator | |
ref: 2cb07cdbe53954a694a29336ab31eac2d2b48673 | |
submodules: 'recursive' | |
- name: Clean MicroOcpp submodule | |
run: | | |
rm -rf MicroOcppSimulator/lib/MicroOcpp | |
- name: Checkout MicroOcpp submodule | |
uses: actions/checkout@v3 | |
with: | |
path: MicroOcppSimulator/lib/MicroOcpp | |
- name: Generate CMake files | |
run: cmake -S ./MicroOcppSimulator -B ./MicroOcppSimulator/build -DCMAKE_CXX_FLAGS="-DMO_OVERRIDE_ALLOCATION=1 -DMO_ENABLE_HEAP_PROFILER=1" | |
- name: Compile | |
run: cmake --build ./MicroOcppSimulator/build -j 32 --target mo_simulator | |
- name: Upload Simulator executable | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Simulator executable | |
path: | | |
MicroOcppSimulator/build/mo_simulator | |
MicroOcppSimulator/public/bundle.html.gz | |
if-no-files-found: error | |
retention-days: 1 | |
measure_heap: | |
needs: build_simulator | |
name: Heap measurements | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.x | |
- name: Install Python dependencies | |
run: pip install requests paramiko pandas | |
- name: Get Simulator | |
uses: actions/download-artifact@v4 | |
with: | |
name: Simulator executable | |
path: MicroOcppSimulator | |
- name: Measure heap and create reports | |
run: | | |
mkdir -p docs/assets/tables | |
python tests/benchmarks/scripts/measure_heap.py | |
env: | |
TEST_DRIVER_URL: ${{ secrets.TEST_DRIVER_URL }} | |
TEST_DRIVER_CONFIG: ${{ secrets.TEST_DRIVER_CONFIG }} | |
TEST_DRIVER_KEY: ${{ secrets.TEST_DRIVER_KEY }} | |
MO_SIM_CONFIG: ${{ secrets.MO_SIM_CONFIG }} | |
MO_SIM_OCPP_SERVER: ${{ secrets.MO_SIM_OCPP_SERVER }} | |
MO_SIM_API_CERT: ${{ secrets.MO_SIM_API_CERT }} | |
MO_SIM_API_KEY: ${{ secrets.MO_SIM_API_KEY }} | |
MO_SIM_API_CONFIG: ${{ secrets.MO_SIM_API_CONFIG }} | |
SSH_LOCAL_PRIV: ${{ secrets.SSH_LOCAL_PRIV }} | |
SSH_HOST_PUB: ${{ secrets.SSH_HOST_PUB }} | |
- name: Upload reports | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Memory usage reports CSV | |
path: docs/assets/tables | |
if-no-files-found: error | |
build_firmware_size: | |
name: Build firmware | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache pip | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Cache PlatformIO | |
uses: actions/cache@v2 | |
with: | |
path: ~/.platformio | |
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
- name: Install PlatformIO | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade platformio | |
- name: Run PlatformIO | |
run: pio ci --lib="." --build-dir="${{ github.workspace }}/../build" --keep-build-dir --project-conf="./tests/benchmarks/firmware_size/platformio.ini" ./tests/benchmarks/firmware_size/main.cpp | |
- name: Move firmware files # change path to location without parent dir ('..') statement (to make upload-artifact happy) | |
run: | | |
mkdir firmware | |
mv "${{ github.workspace }}/../build/.pio/build/v16/firmware.elf" firmware/firmware_v16.elf | |
mv "${{ github.workspace }}/../build/.pio/build/v201/firmware.elf" firmware/firmware_v201.elf | |
- name: Upload firmware linker files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Firmware linker files | |
path: firmware | |
if-no-files-found: error | |
retention-days: 1 | |
evaluate_firmware: | |
needs: build_firmware_size | |
name: Static firmware analysis | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.x | |
- uses: actions/cache@v2 | |
with: | |
key: ${{ github.ref }} | |
path: .cache | |
- name: Install Python dependencies | |
run: pip install pandas | |
- name: Get build tools | |
run: | | |
sudo apt update | |
sudo apt install build-essential cmake ninja-build | |
sudo apt -y install gcc-9 g++-9 | |
g++ --version | |
- name: Check out bloaty | |
uses: actions/checkout@v3 | |
with: | |
repository: google/bloaty | |
ref: 379d5305670c00c36a57e608079fd253f13bde63 | |
path: tools/bloaty | |
submodules: recursive | |
- name: Install bloaty | |
run: | | |
cmake -B tools/bloaty/build -G Ninja -S tools/bloaty | |
cmake --build tools/bloaty/build -j 32 | |
- name: Get firmware linker files | |
uses: actions/download-artifact@v4 | |
with: | |
name: Firmware linker files | |
path: firmware | |
- name: Run bloaty | |
run: | | |
mkdir -p docs/assets/tables | |
tools/bloaty/build/bloaty firmware/firmware_v16.elf -d compileunits --csv -n 0 > docs/assets/tables/bloaty_v16.csv | |
tools/bloaty/build/bloaty firmware/firmware_v201.elf -d compileunits --csv -n 0 > docs/assets/tables/bloaty_v201.csv | |
- name: Evaluate and create reports | |
run: python tests/benchmarks/scripts/eval_firmware_size.py | |
- name: Upload reports | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Firmware size reports CSV | |
path: docs/assets/tables | |
if-no-files-found: error | |
deploy: | |
needs: [evaluate_firmware, measure_heap] | |
name: Deploy docs | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.x | |
- uses: actions/cache@v2 | |
with: | |
key: ${{ github.ref }} | |
path: .cache | |
- name: Install Python dependencies | |
run: pip install pandas mkdocs-material mkdocs-table-reader-plugin | |
- name: Get firmware size reports | |
uses: actions/download-artifact@v4 | |
with: | |
name: Firmware size reports CSV | |
path: docs/assets/tables | |
- name: Get memory occupation reports | |
uses: actions/download-artifact@v4 | |
with: | |
name: Memory usage reports CSV | |
path: docs/assets/tables | |
- name: Run mkdocs | |
run: mkdocs gh-deploy --force |