mirror of https://github.com/tinygo-org/tinygo.git
wasmstm32webassemblymicrocontrollerarmavrspiwasiadafruitarduinocircuitplayground-expressgpioi2cllvmmicrobitnrf51nrf52nrf52840samd21tinygo
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.4 KiB
96 lines
3.4 KiB
name: Binary size difference
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
sizediff:
|
|
runs-on: ubuntu-22.04
|
|
permissions:
|
|
pull-requests: write
|
|
steps:
|
|
# Prepare, install tools
|
|
- name: Add GOBIN to $PATH
|
|
run: |
|
|
echo "$HOME/go/bin" >> $GITHUB_PATH
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # fetch all history (no sparse checkout)
|
|
submodules: true
|
|
- name: Install apt dependencies
|
|
run: |
|
|
echo 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main' | sudo tee /etc/apt/sources.list.d/llvm.list
|
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
|
sudo apt-get update
|
|
sudo apt-get install --no-install-recommends -y \
|
|
llvm-16-dev \
|
|
clang-16 \
|
|
libclang-16-dev \
|
|
lld-16
|
|
- name: Restore LLVM source cache
|
|
uses: actions/cache@v3
|
|
id: cache-llvm-source
|
|
with:
|
|
key: llvm-source-16-sizediff-v1
|
|
path: |
|
|
llvm-project/compiler-rt
|
|
- name: Download LLVM source
|
|
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
|
|
run: make llvm-source
|
|
- name: Cache Go
|
|
uses: actions/cache@v3
|
|
with:
|
|
key: go-cache-linux-sizediff-v1-${{ hashFiles('go.mod') }}
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
- run: make gen-device -j4
|
|
- name: Download drivers repo
|
|
run: git clone https://github.com/tinygo-org/drivers.git
|
|
- name: Save HEAD
|
|
run: git branch github-actions-saved-HEAD HEAD
|
|
|
|
# Compute sizes for the PR branch
|
|
- name: Build tinygo binary for the PR branch
|
|
run: go install
|
|
- name: Determine binary sizes on the PR branch
|
|
run: (cd drivers; make smoke-test XTENSA=0 | tee sizes-pr.txt)
|
|
|
|
# Compute sizes for the dev branch
|
|
- name: Checkout dev branch
|
|
run: |
|
|
git reset --hard origin/dev
|
|
git checkout --no-recurse-submodules `git merge-base HEAD origin/dev`
|
|
- name: Build tinygo binary for the dev branch
|
|
run: go install
|
|
- name: Determine binary sizes on the dev branch
|
|
run: (cd drivers; make smoke-test XTENSA=0 | tee sizes-dev.txt)
|
|
|
|
# Create comment
|
|
# TODO: add a summary, something like:
|
|
# - overall size difference (percent)
|
|
# - number of binaries that grew / shrank / remained the same
|
|
# - don't show the full diff when no binaries changed
|
|
- name: Calculate size diff
|
|
run: ./tools/sizediff drivers/sizes-dev.txt drivers/sizes-pr.txt | tee sizediff.txt
|
|
- name: Create comment
|
|
run: |
|
|
echo "Size difference with the dev branch:" > comment.txt
|
|
echo "<details><summary>Binary size difference</summary>" >> comment.txt
|
|
echo "<pre>" >> comment.txt
|
|
cat sizediff.txt >> comment.txt
|
|
echo "</pre></details>" >> comment.txt
|
|
- name: Comment contents
|
|
run: cat comment.txt
|
|
- name: Add comment
|
|
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }}
|
|
uses: thollander/actions-comment-pull-request@v2.3.1
|
|
with:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
filePath: comment.txt
|
|
comment_tag: sizediff
|
|
|