| 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<footprint_area>([^\/]+\/){0,2})(?P<footprint_path>([^\/]*\/)*)(?P<footprint_symbol>[^\/]*)$' }" \ |
| --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 |
| # |