name: Footprint Tracking # Run every 12 hours and on tags on: schedule: - cron: '50 1/12 * * *' push: paths: - 'VERSION' - '.github/workflows/footprint-tracking.yml' branches: - main - v*-branch tags: # only publish v* tags, do not care about zephyr-v* which point to the # same commit - 'v*' concurrency: group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }} cancel-in-progress: true jobs: footprint-tracking: runs-on: group: zephyr-runner-v2-linux-x64-4xlarge if: github.repository_owner == 'zephyrproject-rtos' container: image: ghcr.io/zephyrproject-rtos/ci-repo-cache:v0.27.4.20241026 options: '--entrypoint /bin/bash' defaults: run: shell: bash strategy: fail-fast: false env: ZEPHYR_TOOLCHAIN_VARIANT: zephyr steps: - name: Apply container owner mismatch workaround run: | # FIXME: The owner UID of the GITHUB_WORKSPACE directory may not # match the container user UID because of the way GitHub # Actions runner is implemented. Remove this workaround when # GitHub comes up with a fundamental fix for this problem. git config --global --add safe.directory ${GITHUB_WORKSPACE} - name: Print cloud service information run: | echo "ZEPHYR_RUNNER_CLOUD_PROVIDER = ${ZEPHYR_RUNNER_CLOUD_PROVIDER}" echo "ZEPHYR_RUNNER_CLOUD_NODE = ${ZEPHYR_RUNNER_CLOUD_NODE}" echo "ZEPHYR_RUNNER_CLOUD_POD = ${ZEPHYR_RUNNER_CLOUD_POD}" - name: Update PATH for west run: | echo "$HOME/.local/bin" >> $GITHUB_PATH - name: Install packages run: | sudo apt-get update sudo apt-get install -y python3-venv sudo pip3 install -U setuptools wheel pip gitpython - name: checkout uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 - name: Environment Setup run: | echo "ZEPHYR_SDK_INSTALL_DIR=/opt/toolchains/zephyr-sdk-$( cat SDK_VERSION )" >> $GITHUB_ENV - name: west setup run: | west init -l . || true west config --global update.narrow true west update 2>&1 1> west.update.log || west update 2>&1 1> west.update2.log - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ vars.AWS_TESTING_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_TESTING_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Record Footprint env: BASE_REF: ${{ github.base_ref }} run: | export ZEPHYR_BASE=${PWD} ./scripts/footprint/track.py -p scripts/footprint/plan.txt - name: Upload footprint data run: | python3 -m venv .venv . .venv/bin/activate pip3 install awscli aws s3 sync --quiet footprint_data/ s3://testing.zephyrproject.org/footprint_data/ - name: Transform Footprint data to Twister JSON reports run: | shopt -s globstar export ZEPHYR_BASE=${PWD} python3 ./scripts/footprint/pack_as_twister.py -vvv \ --plan ./scripts/footprint/plan.txt \ --test-name='name.feature' \ ./footprint_data/**/ - name: Upload to ElasticSearch env: ELASTICSEARCH_KEY: ${{ secrets.ELASTICSEARCH_KEY }} ELASTICSEARCH_SERVER: "https://elasticsearch.zephyrproject.io:443" ELASTICSEARCH_INDEX: ${{ vars.FOOTPRINT_TRACKING_INDEX }} run: | shopt -s globstar pip3 install -U elasticsearch run_date=`date --iso-8601=minutes` python3 ./scripts/ci/upload_test_results_es.py -r ${run_date} \ --flatten footprint \ --flatten-list-names "{'children':'name'}" \ --transform "{ 'footprint_name': '^(?P([^\/]+\/){0,2})(?P([^\/]*\/)*)(?P[^\/]*)$' }" \ --run-id "${{ github.run_id }}" \ --run-attempt "${{ github.run_attempt }}" \ --run-workflow "footprint-tracking:${{ github.event_name }}" \ --run-branch "${{ github.ref_name }}" \ -i ${ELASTICSEARCH_INDEX} \ ./footprint_data/**/twister_footprint.json #