Generated v2 prefixes
This commit is contained in:
@@ -4,9 +4,13 @@ on:
|
||||
branches: [master]
|
||||
types: [released]
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash -euv -o pipefail {0}
|
||||
|
||||
jobs:
|
||||
post-release:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
# trigger post-release in dependency repo, this indirection allows the
|
||||
# dependency repo to be updated often without affecting this repo. At
|
||||
@@ -21,6 +25,7 @@ jobs:
|
||||
event_type: "post-release",
|
||||
client_payload: {
|
||||
repo: env.GITHUB_REPOSITORY,
|
||||
version: "${{github.event.release.tag_name}}"}}' \
|
||||
| tee /dev/stderr)"
|
||||
version: "${{github.event.release.tag_name}}",
|
||||
},
|
||||
}' | tee /dev/stderr)"
|
||||
|
||||
|
||||
+129
-68
@@ -5,9 +5,13 @@ on:
|
||||
branches: [master]
|
||||
types: [completed]
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash -euv -o pipefail {0}
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
# need to manually check for a couple things
|
||||
# - tests passed?
|
||||
@@ -31,8 +35,22 @@ jobs:
|
||||
with:
|
||||
workflow: ${{github.event.workflow_run.name}}
|
||||
run_id: ${{github.event.workflow_run.id}}
|
||||
name: results
|
||||
path: results
|
||||
name: sizes
|
||||
path: sizes
|
||||
- uses: dawidd6/action-download-artifact@v2
|
||||
continue-on-error: true
|
||||
with:
|
||||
workflow: ${{github.event.workflow_run.name}}
|
||||
run_id: ${{github.event.workflow_run.id}}
|
||||
name: cov
|
||||
path: cov
|
||||
- uses: dawidd6/action-download-artifact@v2
|
||||
continue-on-error: true
|
||||
with:
|
||||
workflow: ${{github.event.workflow_run.name}}
|
||||
run_id: ${{github.event.workflow_run.id}}
|
||||
name: bench
|
||||
path: bench
|
||||
|
||||
- name: find-version
|
||||
run: |
|
||||
@@ -68,79 +86,119 @@ jobs:
|
||||
echo "LFS2_PREV_VERSION=$LFS2_PREV_VERSION" >> $GITHUB_ENV
|
||||
|
||||
# try to find results from tests
|
||||
- name: collect-results
|
||||
- name: create-table
|
||||
run: |
|
||||
# previous results to compare against?
|
||||
[ -n "$LFS2_PREV_VERSION" ] && curl -sS \
|
||||
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/`
|
||||
`status/$LFS2_PREV_VERSION?per_page=100" \
|
||||
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/status/$LFS2_PREV_VERSION`
|
||||
`?per_page=100" \
|
||||
| jq -re 'select(.sha != env.GITHUB_SHA) | .statuses[]' \
|
||||
>> prev-results.json \
|
||||
>> prev-status.json \
|
||||
|| true
|
||||
|
||||
# build table for GitHub
|
||||
echo "<table>" >> results.txt
|
||||
echo "<thead>" >> results.txt
|
||||
echo "<tr>" >> results.txt
|
||||
echo "<th align=left>Configuration</th>" >> results.txt
|
||||
for r in Code Stack Structs Coverage
|
||||
do
|
||||
echo "<th align=right>$r</th>" >> results.txt
|
||||
done
|
||||
echo "</tr>" >> results.txt
|
||||
echo "</thead>" >> results.txt
|
||||
declare -A table
|
||||
|
||||
echo "<tbody>" >> results.txt
|
||||
# sizes table
|
||||
i=0
|
||||
j=0
|
||||
for c in "" readonly threadsafe migrate error-asserts
|
||||
do
|
||||
echo "<tr>" >> results.txt
|
||||
# per-config results
|
||||
c_or_default=${c:-default}
|
||||
echo "<td align=left>${c_or_default^}</td>" >> results.txt
|
||||
for r in code stack structs
|
||||
do
|
||||
# per-config results
|
||||
echo "<td align=right>" >> results.txt
|
||||
[ -e results/thumb${c:+-$c}.csv ] && ( \
|
||||
export PREV="$(jq -re '
|
||||
select(.context == "'"results (thumb${c:+, $c}) / $r"'").description
|
||||
| capture("(?<result>[0-9∞]+)").result' \
|
||||
prev-results.json || echo 0)"
|
||||
./scripts/summary.py results/thumb${c:+-$c}.csv -f $r -Y | awk '
|
||||
NR==2 {printf "%s B",$2}
|
||||
NR==2 && ENVIRON["PREV"]+0 != 0 {
|
||||
printf " (%+.1f%%)",100*($2-ENVIRON["PREV"])/ENVIRON["PREV"]}
|
||||
NR==2 {printf "\n"}' \
|
||||
| sed -e 's/ /\ /g' \
|
||||
>> results.txt)
|
||||
echo "</td>" >> results.txt
|
||||
done
|
||||
# coverage results
|
||||
if [ -z $c ]
|
||||
then
|
||||
echo "<td rowspan=0 align=right>" >> results.txt
|
||||
[ -e results/coverage.csv ] && ( \
|
||||
export PREV="$(jq -re '
|
||||
select(.context == "results / coverage").description
|
||||
| capture("(?<result>[0-9\\.]+)").result' \
|
||||
prev-results.json || echo 0)"
|
||||
./scripts/coverage.py -u results/coverage.csv -Y | awk -F '[ /%]+' '
|
||||
NR==2 {printf "%.1f%% of %d lines",$4,$3}
|
||||
NR==2 && ENVIRON["PREV"]+0 != 0 {
|
||||
printf " (%+.1f%%)",$4-ENVIRON["PREV"]}
|
||||
NR==2 {printf "\n"}' \
|
||||
| sed -e 's/ /\ /g' \
|
||||
>> results.txt)
|
||||
echo "</td>" >> results.txt
|
||||
fi
|
||||
echo "</tr>" >> results.txt
|
||||
done
|
||||
echo "</tbody>" >> results.txt
|
||||
echo "</table>" >> results.txt
|
||||
c_camel=${c_or_default^}
|
||||
table[$i,$j]=$c_camel
|
||||
((j+=1))
|
||||
|
||||
cat results.txt
|
||||
for s in code stack struct
|
||||
do
|
||||
f=sizes/thumb${c:+-$c}.$s.csv
|
||||
[ -e $f ] && table[$i,$j]=$( \
|
||||
export PREV="$(jq -re '
|
||||
select(.context == "'"sizes (thumb${c:+, $c}) / $s"'").description
|
||||
| capture("(?<prev>[0-9∞]+)").prev' \
|
||||
prev-status.json || echo 0)"
|
||||
./scripts/summary.py $f --max=stack_limit -Y \
|
||||
| awk '
|
||||
NR==2 {$1=0; printf "%s B",$NF}
|
||||
NR==2 && ENVIRON["PREV"]+0 != 0 {
|
||||
printf " (%+.1f%%)",100*($NF-ENVIRON["PREV"])/ENVIRON["PREV"]
|
||||
}' \
|
||||
| sed -e 's/ /\ /g')
|
||||
((j+=1))
|
||||
done
|
||||
((j=0, i+=1))
|
||||
done
|
||||
|
||||
# coverage table
|
||||
i=0
|
||||
j=4
|
||||
for s in lines branches
|
||||
do
|
||||
table[$i,$j]=${s^}
|
||||
((j+=1))
|
||||
|
||||
f=cov/cov.csv
|
||||
[ -e $f ] && table[$i,$j]=$( \
|
||||
export PREV="$(jq -re '
|
||||
select(.context == "'"cov / $s"'").description
|
||||
| capture("(?<prev_a>[0-9]+)/(?<prev_b>[0-9]+)")
|
||||
| 100*((.prev_a|tonumber) / (.prev_b|tonumber))' \
|
||||
prev-status.json || echo 0)"
|
||||
./scripts/cov.py -u $f -f$s -Y \
|
||||
| awk -F '[ /%]+' -v s=$s '
|
||||
NR==2 {$1=0; printf "%d/%d %s",$2,$3,s}
|
||||
NR==2 && ENVIRON["PREV"]+0 != 0 {
|
||||
printf " (%+.1f%%)",$4-ENVIRON["PREV"]
|
||||
}' \
|
||||
| sed -e 's/ /\ /g')
|
||||
((j=4, i+=1))
|
||||
done
|
||||
|
||||
# benchmark table
|
||||
i=3
|
||||
j=4
|
||||
for s in readed proged erased
|
||||
do
|
||||
table[$i,$j]=${s^}
|
||||
((j+=1))
|
||||
|
||||
f=bench/bench.csv
|
||||
[ -e $f ] && table[$i,$j]=$( \
|
||||
export PREV="$(jq -re '
|
||||
select(.context == "'"bench / $s"'").description
|
||||
| capture("(?<prev>[0-9]+)").prev' \
|
||||
prev-status.json || echo 0)"
|
||||
./scripts/summary.py $f -f$s=bench_$s -Y \
|
||||
| awk '
|
||||
NR==2 {$1=0; printf "%s B",$NF}
|
||||
NR==2 && ENVIRON["PREV"]+0 != 0 {
|
||||
printf " (%+.1f%%)",100*($NF-ENVIRON["PREV"])/ENVIRON["PREV"]
|
||||
}' \
|
||||
| sed -e 's/ /\ /g')
|
||||
((j=4, i+=1))
|
||||
done
|
||||
|
||||
# build the actual table
|
||||
echo "| | Code | Stack | Structs | | Coverage |" >> table.txt
|
||||
echo "|:--|-----:|------:|--------:|:--|---------:|" >> table.txt
|
||||
for ((i=0; i<6; i++))
|
||||
do
|
||||
echo -n "|" >> table.txt
|
||||
for ((j=0; j<6; j++))
|
||||
do
|
||||
echo -n " " >> table.txt
|
||||
[[ i -eq 2 && j -eq 5 ]] && echo -n "**Benchmarks**" >> table.txt
|
||||
echo -n "${table[$i,$j]:-}" >> table.txt
|
||||
echo -n " |" >> table.txt
|
||||
done
|
||||
echo >> table.txt
|
||||
done
|
||||
|
||||
cat table.txt
|
||||
|
||||
# find changes from history
|
||||
- name: collect-changes
|
||||
- name: create-changes
|
||||
run: |
|
||||
[ -n "$LFS2_PREV_VERSION" ] || exit 0
|
||||
# use explicit link to github commit so that release notes can
|
||||
@@ -164,7 +222,7 @@ jobs:
|
||||
git config user.email ${{secrets.BOT_EMAIL}}
|
||||
git fetch "https://github.com/$GITHUB_REPOSITORY.git" \
|
||||
"v$LFS2_VERSION_MAJOR-prefix" || true
|
||||
./scripts/prefix.py "lfs2$LFS2_VERSION_MAJOR"
|
||||
./scripts/changeprefix.py --git "lfs2" "lfs2$LFS2_VERSION_MAJOR"
|
||||
git branch "v$LFS2_VERSION_MAJOR-prefix" $( \
|
||||
git commit-tree $(git write-tree) \
|
||||
$(git rev-parse --verify -q FETCH_HEAD | sed -e 's/^/-p /') \
|
||||
@@ -182,15 +240,18 @@ jobs:
|
||||
run: |
|
||||
# create release and patch version tag (vN.N.N)
|
||||
# only draft if not a patch release
|
||||
[ -e results.txt ] && export RESULTS="$(cat results.txt)"
|
||||
[ -e changes.txt ] && export CHANGES="$(cat changes.txt)"
|
||||
[ -e table.txt ] && cat table.txt >> release.txt
|
||||
echo >> release.txt
|
||||
[ -e changes.txt ] && cat changes.txt >> release.txt
|
||||
cat release.txt
|
||||
|
||||
curl -sS -X POST -H "authorization: token ${{secrets.BOT_TOKEN}}" \
|
||||
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/releases" \
|
||||
-d "$(jq -n '{
|
||||
-d "$(jq -n --rawfile release release.txt '{
|
||||
tag_name: env.LFS2_VERSION,
|
||||
name: env.LFS2_VERSION | rtrimstr(".0"),
|
||||
target_commitish: "${{github.event.workflow_run.head_sha}}",
|
||||
draft: env.LFS2_VERSION | endswith(".0"),
|
||||
body: [env.RESULTS, env.CHANGES | select(.)] | join("\n\n")}' \
|
||||
| tee /dev/stderr)"
|
||||
body: $release,
|
||||
}' | tee /dev/stderr)"
|
||||
|
||||
|
||||
@@ -4,11 +4,15 @@ on:
|
||||
workflows: [test]
|
||||
types: [completed]
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash -euv -o pipefail {0}
|
||||
|
||||
jobs:
|
||||
# forward custom statuses
|
||||
status:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
# custom statuses?
|
||||
- uses: dawidd6/action-download-artifact@v2
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -50,6 +54,47 @@ jobs:
|
||||
state: env.STATE,
|
||||
context: env.CONTEXT,
|
||||
description: env.DESCRIPTION,
|
||||
target_url: env.TARGET_URL}' \
|
||||
| tee /dev/stderr)"
|
||||
target_url: env.TARGET_URL,
|
||||
}' | tee /dev/stderr)"
|
||||
done
|
||||
|
||||
# forward custom pr-comments
|
||||
comment:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
# only run on success (we don't want garbage comments!)
|
||||
if: ${{github.event.workflow_run.conclusion == 'success'}}
|
||||
|
||||
steps:
|
||||
# generated comment?
|
||||
- uses: dawidd6/action-download-artifact@v2
|
||||
continue-on-error: true
|
||||
with:
|
||||
workflow: ${{github.event.workflow_run.name}}
|
||||
run_id: ${{github.event.workflow_run.id}}
|
||||
name: comment
|
||||
path: comment
|
||||
- name: update-comment
|
||||
continue-on-error: true
|
||||
run: |
|
||||
ls comment
|
||||
for s in $(shopt -s nullglob ; echo comment/*.json)
|
||||
do
|
||||
export NUMBER="$(jq -er '.number' $s)"
|
||||
export BODY="$(jq -er '.body' $s)"
|
||||
|
||||
# check that the comment was from the most recent commit on the
|
||||
# pull request
|
||||
[ "$(curl -sS -H "authorization: token ${{secrets.BOT_TOKEN}}" \
|
||||
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/pulls/$NUMBER" \
|
||||
| jq -er '.head.sha')" \
|
||||
== ${{github.event.workflow_run.head_sha}} ] || continue
|
||||
|
||||
# update comment
|
||||
curl -sS -X POST -H "authorization: token ${{secrets.BOT_TOKEN}}" \
|
||||
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/issues/`
|
||||
`$NUMBER/comments" \
|
||||
-d "$(jq -n '{
|
||||
body: env.BODY,
|
||||
}' | tee /dev/stderr)"
|
||||
done
|
||||
|
||||
+595
-276
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user