make-and-test - add pt-example tests to action #18
Workflow file for this run
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
name: mbed-edge-examples-make-and-test | |
on: | |
workflow_dispatch: | |
push: | |
paths-ignore: | |
- '**/README.md' | |
# This allows a subsequently queued workflow run to interrupt previous runs | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
make-examples-and-test: | |
runs-on: edge-example-ci | |
env: | |
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} | |
API_KEY: ${{ secrets.EDGE_EXAMPLES_API_KEY }} | |
DEV_CERT: ${{ secrets.EDGE_EXAMPLES_DEV_CERT}} | |
SYSTEM_TESTS: pelion-system-tests | |
SCRIPTS_INTERNAL: scripts-internal | |
RESULT_LOG_FILE: result_pytest.log | |
RESULT_HTML: result.html | |
RESULT_XML: result.xml | |
steps: | |
- name: Checkout continuous-integration | |
uses: actions/checkout@v4 | |
# Self hosted has dependencies in place already | |
# - name: Install dependencies | |
# run: | | |
# sudo apt install build-essential git libc6-dev cmake | |
# sudo apt install libmosquitto-dev mosquitto-clients | |
# sudo apt install libglib2.0-dev | |
# sudo apt install doxygen | |
- name: git submodule update | |
run: git submodule update --init --recursive | |
# This builds release, debug and sanitize versions. | |
- run: make all | |
- name: Build edge-core | |
run: | | |
echo "$DEV_CERT" > lib/mbed-edge/config/mbed_cloud_dev_credentials.c | |
cd lib/mbed-edge | |
if [[ ! -d "build" ]]; then | |
rm -rf build | |
fi | |
mkdir -p build | |
cd build | |
cmake -DDEVELOPER_MODE=ON -DFIRMWARE_UPDATE=OFF .. | |
make -j$(nproc) | |
- name: Start edge-core | |
run: | | |
cd lib/mbed-edge/build | |
bin/edge-core & | |
# Wait a bit for it to connect.. | |
sleep 5 | |
- name: Check out ${{ env.SYSTEM_TESTS }} repository | |
uses: actions/checkout@v4 | |
with: | |
repository: PelionIoT/${{ env.SYSTEM_TESTS }} | |
token: ${{ secrets.ACCESS_TOKEN }} | |
path: ${{ env.SYSTEM_TESTS }} | |
- name: Check out $${{ env.SCRIPTS_INTERNAL }} repository | |
uses: actions/checkout@v4 | |
with: | |
repository: PelionIoT/${{ env.SCRIPTS_INTERNAL }} | |
token: ${{ secrets.ACCESS_TOKEN }} | |
path: ${{ env.SCRIPTS_INTERNAL }} | |
- name: Create pytest config | |
run: | | |
cp .github/workflows/prod-edge-core-config.json ${{ env.SYSTEM_TESTS }}/edge-core-config.json | |
CONFIG_FILE=${{ env.SYSTEM_TESTS }}/edge-core-config.json | |
jq '.api_key = "${{ secrets.EDGE_EXAMPLES_API_KEY }}"' "$CONFIG_FILE" > tmp.json && mv tmp.json "$CONFIG_FILE" | |
- name: Start pt-example | |
run: | | |
cd build-debug | |
./bin/pt-example -n pt-example & | |
sleep 5 | |
- name: Install Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.8' | |
- name: Run pt-example-tests | |
run: | | |
cd ${{ env.SYSTEM_TESTS }} | |
# Check if venv folder exists, if not create it | |
if [[ ! -d "venv" ]]; then | |
python3 -m venv venv | |
fi | |
source venv/bin/activate | |
pip install --upgrade pip | |
pip install -U -r requirements.txt | |
pip install packages/*.whl | |
pip install -e systemtest-library | |
pytest -v --config_path=edge-core-config.json --html=$RESULT_HTML \ | |
--self-contained-html -log_cli=true --log-cli-level=DEBUG \ | |
--log-file=$RESULT_LOG_FILE --log-file-level=DEBUG \ | |
--junitxml=$RESULT_XML test_cases/edge/test_pt_example.py | |
deactivate | |
- name: Cleanup - delete device from Izuma DM | |
if: always() | |
run: | | |
devid=$(curl --no-progress-meter localhost:8080/status | jq -r '."endpoint-name"') | |
if [[ -n "$devid" ]]; then | |
echo "Delete $devid via Izuma V3 REST API" | |
scripts-internal/cloud/delete-device.sh $devid ${{ secrets.EDGE_EXAMPLES_API_KEY }} | |
fi | |
- name: Cleanup - kill edge-core process | |
if: always() | |
run: | | |
edgepid=$(ps -aux |grep bin/edge-core | awk '{print $2}' | head -n1) | |
if [[ -n "$edgepid" ]]; then | |
# Kill edge-core if pid is not empty | |
echo "Kill edge-core with pid: $edgepid" | |
kill $edgepid | |
fi | |
- name: Cleanup - kill pt-example | |
if: always() | |
run: | | |
ptpid=$(ps -aux |grep pt-example | awk '{print $2}' | head -n1) | |
if [[ -n "$ptpid" ]]; then | |
# Kill pt-example if pid is not empty | |
echo "Kill pt-example with pid: $ptpid" | |
kill $ptpid | |
fi | |
- name: Archive the logs and publish the results | |
if: always() | |
uses: ./.github/actions/archive-publish | |
with: | |
log_path: | | |
${{ env.SYSTEM_TESTS }}/*.log | |
${{ env.SYSTEM_TESTS }}/${{ env.RESULT_HTML }} | |
junit_files: ${{ env.SYSTEM_TESTS }}/${{ env.RESULT_XML }} | |
docker-build: | |
runs-on: ubuntu22.04 | |
env: | |
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} | |
steps: | |
- name: Checkout continuous-integration | |
uses: actions/checkout@v4 | |
- name: git submodule update | |
run: git submodule update --init --recursive | |
- name: Docker build | |
run: docker build -t pt-example:latest -f ./Dockerfile.pt-example . | |
# Don't run it - it will run forever essentially. |