pr-bloaty-ios #18
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: pr-bloaty-ios | |
on: | |
workflow_run: | |
workflows: [ios-ci] | |
types: | |
- completed | |
env: | |
download_url: https://maplibre-native.s3.eu-central-1.amazonaws.com | |
permissions: | |
pull-requests: write | |
id-token: write # This is required for requesting the AWS JWT | |
jobs: | |
pre_job: | |
if: github.event.workflow_run.event == 'pull_request' | |
runs-on: ubuntu-latest | |
outputs: | |
should_skip: ${{ steps.check_skip.outputs.should_skip }} | |
steps: | |
- id: check_skip | |
run: | | |
conclusion=$(curl ${{ github.event.workflow_run.jobs_url }} | jq -r '.jobs[] | select(.name == "ios-build").conclusion') | |
should_skip=$([[ "$conclusion" = "skipped" || "$conclusion" = "cancelled" ]] && echo "true" || echo "false") | |
echo "should_skip=$should_skip" >> "$GITHUB_OUTPUT" | |
pr-bloaty-ios: | |
needs: pre_job | |
if: needs.pre_job.outputs.should_skip == 'false' | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get latest CMake and Ninja | |
uses: lukka/get-cmake@latest | |
with: | |
cmakeVersion: latest | |
ninjaVersion: latest | |
- name: Cache Bloaty | |
id: cache-bloaty | |
uses: actions/cache@v4 | |
with: | |
path: bloaty/build/bloaty | |
key: bloaty-${{ env.bloaty_sha }} | |
# because Google is not making a release... | |
# https://github.com/google/bloaty/issues/334 | |
- name: Compile Bloaty | |
if: ${{ !steps.cache-bloaty.outputs.cache-hit }} | |
run: | | |
git clone https://github.com/google/bloaty.git | |
cd bloaty | |
git checkout "$bloaty_sha" | |
cmake -B build -G Ninja -S . | |
cmake --build build | |
- name: Download MapLibre_dynamic-main, MapLibre_DWARF-main | |
run: | | |
wget -O MapLibre_dynamic-main "${download_url}/size-test-ios/MapLibre_dynamic-main" | |
wget -O MapLibre_DWARF-main "${download_url}/size-test-ios/MapLibre_DWARF-main" | |
- uses: ./.github/actions/get-pr-number | |
id: get-pr-number | |
- uses: ./.github/actions/download-workflow-run-artifact | |
with: | |
artifact-name: ios-size-test-files | |
expect-files: "MapLibre_dynamic,MapLibre_DWARF" | |
- name: Run Bloaty | |
run: bloaty/build/bloaty --debug-file MapLibre_DWARF --debug-file MapLibre_DWARF-main MapLibre_dynamic -n 0 -s vm -d compileunits -- MapLibre_dynamic-main > bloaty_diff.txt | |
- name: Configure AWS Credentials | |
if: vars.OIDC_AWS_ROLE_TO_ASSUME | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-region: us-west-2 | |
role-to-assume: ${{ vars.OIDC_AWS_ROLE_TO_ASSUME }} | |
role-session-name: ${{ github.run_id }} | |
- name: Prepare Bloaty message | |
run: | | |
report_path=bloaty-results-ios/pr-${{ steps.get-pr-number.outputs.pr-number }}-compared-to-main.txt | |
aws s3 cp bloaty_diff.txt s3://maplibre-native/"$report_path" | |
{ | |
echo "# Bloaty Results (iOS) 🐋" | |
echo 'Compared to main' | |
echo '```' | |
awk 'NR <= 2; END { print }' bloaty_diff.txt | |
echo '```' | |
echo "Full report: $download_url/$report_path" | |
echo "---" | |
} >> message.md | |
- name: Leave a comment with Bloaty results | |
uses: marocchino/sticky-pull-request-comment@v2 | |
with: | |
number: ${{ steps.get-pr-number.outputs.pr-number }} | |
header: bloaty-ios | |
path: message.md |