Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
208 commits
Select commit Hold shift + click to select a range
77f1fcb
WIP test
geky Dec 20, 2020
9ddd1fa
test
geky Dec 20, 2020
7cf4cd1
test
geky Dec 20, 2020
565ea21
test
geky Dec 20, 2020
bf4455d
test
geky Dec 20, 2020
6297758
test
geky Dec 20, 2020
2dd7d9b
test
geky Dec 20, 2020
d3efbac
test
geky Dec 20, 2020
46a8405
test
geky Dec 20, 2020
4dde70d
test
geky Dec 20, 2020
eed65d0
test
geky Dec 20, 2020
763d34c
test
geky Dec 20, 2020
5a0e711
test
geky Dec 20, 2020
0b6f9de
test
geky Dec 20, 2020
09b9330
test
geky Dec 20, 2020
1e23935
test
geky Dec 20, 2020
bd7c465
test
geky Dec 20, 2020
55e8b17
test
geky Dec 20, 2020
03ac1bc
test
geky Dec 20, 2020
f876c26
test
geky Dec 20, 2020
634431a
test
geky Dec 20, 2020
4495ee3
test
geky Dec 20, 2020
5a8acf1
test
geky Dec 20, 2020
d3760b3
test?
geky Dec 20, 2020
d226b18
test?
geky Dec 20, 2020
964e7d6
test?
geky Dec 20, 2020
1fc4921
test?
geky Dec 20, 2020
2038e1b
test?
geky Dec 20, 2020
d64da05
test?
geky Dec 20, 2020
5638e6b
test?
geky Dec 20, 2020
3d1de28
test?
geky Dec 20, 2020
5322348
test?
geky Dec 21, 2020
eada016
test?
geky Dec 21, 2020
a886960
test?
geky Dec 21, 2020
adc0234
test?
geky Dec 21, 2020
26c6b07
test?
geky Dec 21, 2020
e6a0344
test?
geky Dec 21, 2020
4e95ec9
test?
geky Dec 21, 2020
4a9b850
test?
geky Dec 21, 2020
4bc9693
test?
geky Dec 21, 2020
76621ff
test?
geky Dec 21, 2020
df3d665
test?
geky Dec 21, 2020
5272246
test?
geky Dec 21, 2020
8dc40b4
test?
geky Dec 21, 2020
c84c4eb
test?
geky Dec 21, 2020
19cca59
test?
geky Dec 21, 2020
e654978
test?
geky Dec 21, 2020
8ec6d18
test?
geky Dec 21, 2020
6a698de
test?
geky Dec 21, 2020
c37dc82
test?
geky Dec 21, 2020
b2a0149
test?
geky Dec 21, 2020
56d9407
test?
geky Dec 21, 2020
2fdab6d
test?
geky Dec 21, 2020
4f53c35
test?
geky Dec 21, 2020
d57338a
test?
geky Dec 21, 2020
f1cc1bb
test?
geky Dec 21, 2020
3c96ffe
test?
geky Dec 21, 2020
02705fc
test?
geky Dec 21, 2020
3d99d2a
test?
geky Dec 28, 2020
9efcb85
test?
geky Dec 28, 2020
fea3789
test?
geky Dec 28, 2020
d09debb
test?
geky Dec 29, 2020
697d797
test?
geky Dec 29, 2020
c53fb3a
test?
geky Dec 29, 2020
bda8e3a
test?
geky Dec 29, 2020
19413d4
test?
geky Dec 29, 2020
d95d5aa
test?
geky Dec 29, 2020
f2a58e7
test?
geky Dec 29, 2020
c37887b
test?
geky Dec 29, 2020
f16df90
test?
geky Dec 29, 2020
fcd4a73
test?
geky Dec 29, 2020
99533b6
test?
geky Dec 29, 2020
727a8c5
test?
geky Dec 29, 2020
8f3110f
test?
geky Dec 29, 2020
d91ab33
test?
geky Dec 29, 2020
c27f3a7
test?
geky Dec 29, 2020
1f7b473
test?
geky Dec 29, 2020
96a9120
test?
geky Dec 29, 2020
d27b225
test?
geky Dec 29, 2020
18afbed
WIP Added coverage.py, added coverage collection to test.py
geky Dec 31, 2020
9645a54
test?
geky Dec 31, 2020
b78f849
test?
geky Dec 31, 2020
593494e
WIP Actually added coverage.py, whoops
geky Dec 31, 2020
a9e913d
test?
geky Dec 31, 2020
dabb76c
test?
geky Dec 31, 2020
5a85c77
test?
geky Jan 1, 2021
7a22276
test?
geky Jan 1, 2021
2ab1718
WIP Wow gcov intermediary format is a mess, switched to lcov, simplified
geky Jan 2, 2021
1ee496a
test?
geky Jan 2, 2021
1000daa
test?
geky Jan 2, 2021
51fdc74
test?
geky Jan 2, 2021
f88b388
test?
geky Jan 2, 2021
46e3337
test?
geky Jan 2, 2021
26420ed
test?
geky Jan 2, 2021
2f258a5
test?
geky Jan 2, 2021
7b63c4e
test?
geky Jan 2, 2021
9eac6af
test?
geky Jan 2, 2021
1048ed7
test?
geky Jan 2, 2021
14548c3
test?
geky Jan 2, 2021
a810782
test?
geky Jan 2, 2021
57beadb
test?
geky Jan 2, 2021
24afb60
test?
geky Jan 2, 2021
94e71eb
test?
geky Jan 2, 2021
1c33353
test?
geky Jan 2, 2021
44ffaca
test?
geky Jan 2, 2021
d14cc53
test?
geky Jan 2, 2021
274ae26
test?
geky Jan 2, 2021
36a58bf
test?
geky Jan 2, 2021
8e12110
test?
geky Jan 2, 2021
63391c2
test?
geky Jan 2, 2021
ed435ba
test?
geky Jan 2, 2021
4a0516b
test?
geky Jan 2, 2021
540fa42
test?
geky Jan 2, 2021
bd92c75
WIP added build dir allowing non-local builds, useful with different
geky Jan 3, 2021
14631e0
WIP Consistentified code.py with coverage.py
geky Jan 3, 2021
49bffe3
test?
geky Jan 3, 2021
648fc30
test?
geky Jan 3, 2021
bd4839a
test?
geky Jan 3, 2021
f6812d1
test?
geky Jan 3, 2021
232b671
test?
geky Jan 3, 2021
8b7e242
test?
geky Jan 3, 2021
f31df51
test?
geky Jan 3, 2021
17c6f30
test?
geky Jan 3, 2021
a1e2390
test?
geky Jan 3, 2021
30c1000
test?
geky Jan 3, 2021
2c0acc8
test?
geky Jan 3, 2021
0bef18e
test?
geky Jan 3, 2021
ac02e6c
test?
geky Jan 3, 2021
0c83e21
test?
geky Jan 3, 2021
253a275
test?
geky Jan 3, 2021
dd4ffa4
test?
geky Jan 3, 2021
4faa9c3
test?
geky Jan 3, 2021
4c7b340
test?
geky Jan 3, 2021
b4d20c8
test?
geky Jan 3, 2021
8005d0c
test?
geky Jan 3, 2021
4ce202d
WIP simplified cumul info, now with parameter needed for accumulation
geky Jan 3, 2021
e74acfd
test?
geky Jan 3, 2021
e2ab0b7
test?
geky Jan 3, 2021
d7a08f1
test?
geky Jan 4, 2021
d679f62
WIP added bot token
geky Jan 4, 2021
41bb7f2
test?
geky Jan 4, 2021
cd5b55c
test?
geky Jan 4, 2021
7e7e038
test?
geky Jan 4, 2021
285d873
WIP added release workflow
geky Jan 4, 2021
80f5067
test?
geky Jan 4, 2021
1646cf4
test?
geky Jan 4, 2021
425a80a
test?
geky Jan 5, 2021
f02f7c3
test?
geky Jan 5, 2021
40dfa43
test?
geky Jan 5, 2021
d7606e3
test?
geky Jan 5, 2021
2cf63d6
test?
geky Jan 5, 2021
43250c8
test?
geky Jan 5, 2021
c748225
test?
geky Jan 5, 2021
62a8622
test?
geky Jan 5, 2021
901a32c
test?
geky Jan 5, 2021
da0b64b
test?
geky Jan 5, 2021
171d64e
test?
geky Jan 5, 2021
7ae5cad
test?
geky Jan 5, 2021
d19dd4f
test?
geky Jan 5, 2021
dd556e9
test?
geky Jan 5, 2021
e7745ce
test?
geky Jan 5, 2021
f917919
test?
geky Jan 5, 2021
2b14372
test?
geky Jan 5, 2021
8d8d8a6
test?
geky Jan 5, 2021
00088b6
test?
geky Jan 5, 2021
05e9dfc
test?
geky Jan 5, 2021
b2d672a
test?
geky Jan 5, 2021
320146f
test?
geky Jan 5, 2021
4aa0f29
test?
geky Jan 5, 2021
8e8392e
test?
geky Jan 5, 2021
f84bf8c
test?
geky Jan 5, 2021
f3ed323
WIP removed split SRC configuration for CI, now make is limited to co…
geky Jan 5, 2021
0824586
WIP cleanup
geky Jan 5, 2021
850e6c4
test?
geky Jan 5, 2021
6718a64
test?
geky Jan 5, 2021
d7c84ea
test?
geky Jan 5, 2021
e2eb4cf
test?
geky Jan 7, 2021
274107f
test?
geky Jan 7, 2021
4d62a0a
test?
geky Jan 7, 2021
9e158a8
test?
geky Jan 7, 2021
1c791fc
test?
geky Jan 8, 2021
1b4c70f
test?
geky Jan 8, 2021
4e116dd
test?
geky Jan 9, 2021
9bd9193
test?
geky Jan 9, 2021
9d81def
test?
geky Jan 9, 2021
74b9751
test?
geky Jan 9, 2021
90d03cf
test?
geky Jan 9, 2021
b3215a8
test?
geky Jan 9, 2021
67c5dfb
test?
geky Jan 9, 2021
3a5a6a8
test
geky Jan 9, 2021
32ceee5
test?
geky Jan 9, 2021
159b2e6
test?
geky Jan 9, 2021
4cb2b8e
test?
geky Jan 9, 2021
002375b
test?
geky Jan 9, 2021
aa1621e
test?
geky Jan 9, 2021
e5bb498
test?
geky Jan 9, 2021
321209f
test?
geky Jan 9, 2021
97ca4ba
test?
geky Jan 9, 2021
9cc90b6
test?
geky Jan 9, 2021
46c0253
test?
geky Jan 9, 2021
54f1398
test?
geky Jan 9, 2021
0ec5817
test?
geky Jan 9, 2021
f08a80a
test?
geky Jan 9, 2021
4e5b21f
test?
geky Jan 9, 2021
f59c5cc
test?
geky Jan 10, 2021
48d1dfb
test?
geky Jan 10, 2021
626c24b
Test test
geky Jan 10, 2021
7716679
test test
geky Jan 10, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/post-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: post-release
on:
release:
branches: [master]
types: [released]

jobs:
post-release:
runs-on: ubuntu-18.04
steps:
# trigger post-release in dependency repo, this indirection allows the
# dependency repo to be updated often without affecting this repo. At
# the time of this comment, the dependency repo is responsible for
# creating PRs for other dependent repos post-release.
- name: trigger-post-release
continue-on-error: true
run: |
curl -sS -X POST -H "authorization: token ${{secrets.BOT_TOKEN}}" \
"$GITHUB_API_URL/repos/${{secrets.POST_RELEASE_REPO}}/dispatches" \
-d "$(jq -n '{
event_type: "post-release",
client_payload: {
repo: env.GITHUB_REPOSITORY,
version: "${{github.event.release.tag_name}}"}}' \
| tee /dev/stderr)"

204 changes: 204 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
name: release
on:
workflow_run:
workflows: [test]
branches: [master]
types: [completed]

jobs:
release:
runs-on: ubuntu-18.04

# need to manually check for a couple things
# - tests passed?
# - we are the most recent commit on master?
if: ${{github.event.workflow_run.conclusion == 'success' &&
github.event.workflow_run.head_sha == github.sha}}

steps:
- uses: actions/checkout@v2
with:
ref: ${{github.event.workflow_run.head_sha}}
# need workflow access since we push branches
# containing workflows
token: ${{secrets.BOT_TOKEN}}
# need all tags
fetch-depth: 0

# try to get results from tests
- 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: results
path: results

- name: find-version
run: |
# rip version from lfs.h
LFS_VERSION="$(grep -o '^#define LFS_VERSION .*$' lfs.h \
| awk '{print $3}')"
LFS_VERSION_MAJOR="$((0xffff & ($LFS_VERSION >> 16)))"
LFS_VERSION_MINOR="$((0xffff & ($LFS_VERSION >> 0)))"

# find a new patch version based on what we find in our tags
LFS_VERSION_PATCH="$( \
( git describe --tags --abbrev=0 \
--match="v$LFS_VERSION_MAJOR.$LFS_VERSION_MINOR.*" \
|| echo 'v0.0.-1' ) \
| awk -F '.' '{print $3+1}')"

# found new version
LFS_VERSION="v$LFS_VERSION_MAJOR`
`.$LFS_VERSION_MINOR`
`.$LFS_VERSION_PATCH"
echo "LFS_VERSION=$LFS_VERSION"
echo "LFS_VERSION=$LFS_VERSION" >> $GITHUB_ENV
echo "LFS_VERSION_MAJOR=$LFS_VERSION_MAJOR" >> $GITHUB_ENV
echo "LFS_VERSION_MINOR=$LFS_VERSION_MINOR" >> $GITHUB_ENV
echo "LFS_VERSION_PATCH=$LFS_VERSION_PATCH" >> $GITHUB_ENV

# try to find previous version?
- name: find-prev-version
continue-on-error: true
run: |
LFS_PREV_VERSION="$(git describe --tags --abbrev=0 --match 'v*')"
echo "LFS_PREV_VERSION=$LFS_PREV_VERSION"
echo "LFS_PREV_VERSION=$LFS_PREV_VERSION" >> $GITHUB_ENV

# try to find results from tests
- name: collect-results
run: |
# previous results to compare against?
[ -n "$LFS_PREV_VERSION" ] && curl -sS \
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/`
`status/$LFS_PREV_VERSION" \
| jq -re 'select(.sha != env.GITHUB_SHA) | .statuses[]' \
>> prev-results.json \
|| true

# unfortunately these each have their own format
[ -e results/code-thumb.csv ] && ( \
export PREV="$(jq -re '
select(.context == "results / code").description
| capture("Code size is (?<result>[0-9]+)").result' \
prev-results.json || echo 0)"
./scripts/code.py -u results/code-thumb.csv -s | awk '
NR==2 {printf "Code size,%d B",$2}
NR==2 && ENVIRON["PREV"]+0 != 0 {
printf " (%+.1f%%)",100*($2-ENVIRON["PREV"])/ENVIRON["PREV"]}
NR==2 {printf "\n"}' \
>> results.csv)
[ -e results/code-thumb-readonly.csv ] && ( \
export PREV="$(jq -re '
select(.context == "results / code (readonly)").description
| capture("Code size is (?<result>[0-9]+)").result' \
prev-results.json || echo 0)"
./scripts/code.py -u results/code-thumb-readonly.csv -s | awk '
NR==2 {printf "Code size (readonly),%d B",$2}
NR==2 && ENVIRON["PREV"]+0 != 0 {
printf " (%+.1f%%)",100*($2-ENVIRON["PREV"])/ENVIRON["PREV"]}
NR==2 {printf "\n"}' \
>> results.csv)
[ -e results/code-thumb-threadsafe.csv ] && ( \
export PREV="$(jq -re '
select(.context == "results / code (threadsafe)").description
| capture("Code size is (?<result>[0-9]+)").result' \
prev-results.json || echo 0)"
./scripts/code.py -u results/code-thumb-threadsafe.csv -s | awk '
NR==2 {printf "Code size (threadsafe),%d B",$2}
NR==2 && ENVIRON["PREV"]+0 != 0 {
printf " (%+.1f%%)",100*($2-ENVIRON["PREV"])/ENVIRON["PREV"]}
NR==2 {printf "\n"}' \
>> results.csv)
[ -e results/code-thumb-migrate.csv ] && ( \
export PREV="$(jq -re '
select(.context == "results / code (migrate)").description
| capture("Code size is (?<result>[0-9]+)").result' \
prev-results.json || echo 0)"
./scripts/code.py -u results/code-thumb-migrate.csv -s | awk '
NR==2 {printf "Code size (migrate),%d B",$2}
NR==2 && ENVIRON["PREV"]+0 != 0 {
printf " (%+.1f%%)",100*($2-ENVIRON["PREV"])/ENVIRON["PREV"]}
NR==2 {printf "\n"}' \
>> results.csv)
[ -e results/coverage.csv ] && ( \
export PREV="$(jq -re '
select(.context == "results / coverage").description
| capture("Coverage is (?<result>[0-9\\.]+)").result' \
prev-results.json || echo 0)"
./scripts/coverage.py -u results/coverage.csv -s | awk -F '[ /%]+' '
NR==2 {printf "Coverage,%.1f%% of %d lines",$4,$3}
NR==2 && ENVIRON["PREV"]+0 != 0 {
printf " (%+.1f%%)",$4-ENVIRON["PREV"]}
NR==2 {printf "\n"}' \
>> results.csv)

# transpose to GitHub table
[ -e results.csv ] || exit 0
awk -F ',' '
{label[NR]=$1; value[NR]=$2}
END {
for (r=1; r<=NR; r++) {printf "| %s ",label[r]}; printf "|\n";
for (r=1; r<=NR; r++) {printf "|:--"}; printf "|\n";
for (r=1; r<=NR; r++) {printf "| %s ",value[r]}; printf "|\n"}' \
results.csv > results.txt
echo "RESULTS:"
cat results.txt

# find changes from history
- name: collect-changes
run: |
[ -n "$LFS_PREV_VERSION" ] || exit 0
# use explicit link to github commit so that release notes can
# be copied elsewhere
git log "$LFS_PREV_VERSION.." \
--grep='^Merge' --invert-grep \
--format="format:[\`%h\`](`
`https://github.com/$GITHUB_REPOSITORY/commit/%h) %s" \
> changes.txt
echo "CHANGES:"
cat changes.txt

# create and update major branches (vN and vN-prefix)
- name: create-major-branches
run: |
# create major branch
git branch "v$LFS_VERSION_MAJOR" HEAD

# create major prefix branch
git config user.name ${{secrets.BOT_USERNAME}}
git config user.email ${{secrets.BOT_EMAIL}}
git fetch "https://github.com/$GITHUB_REPOSITORY.git" \
"v$LFS_VERSION_MAJOR-prefix" || true
./scripts/prefix.py "lfs$LFS_VERSION_MAJOR"
git branch "v$LFS_VERSION_MAJOR-prefix" $( \
git commit-tree $(git write-tree) \
$(git rev-parse --verify -q FETCH_HEAD | sed -e 's/^/-p /') \
-p HEAD \
-m "Generated v$LFS_VERSION_MAJOR prefixes")
git reset --hard

# push!
git push --atomic origin \
"v$LFS_VERSION_MAJOR" \
"v$LFS_VERSION_MAJOR-prefix"

# build release notes
- name: create-release
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)"
curl -sS -X POST -H "authorization: token ${{secrets.BOT_TOKEN}}" \
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/releases" \
-d "$(jq -n '{
tag_name: env.LFS_VERSION,
name: env.LFS_VERSION | rtrimstr(".0"),
target_commitish: "${{github.event.workflow_run.head_sha}}",
draft: env.LFS_VERSION | endswith(".0"),
body: [env.RESULTS, env.CHANGES | select(.)] | join("\n\n")}' \
| tee /dev/stderr)"

55 changes: 55 additions & 0 deletions .github/workflows/status.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: status
on:
workflow_run:
workflows: [test]
types: [completed]

jobs:
status:
runs-on: ubuntu-18.04
steps:
# custom statuses?
- 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: status
path: status
- name: update-status
continue-on-error: true
run: |
ls status
for s in $(shopt -s nullglob ; echo status/*.json)
do
# parse requested status
export STATE="$(jq -er '.state' $s)"
export CONTEXT="$(jq -er '.context' $s)"
export DESCRIPTION="$(jq -er '.description' $s)"
# help lookup URL for job/steps because GitHub makes
# it VERY HARD to link to specific jobs
export TARGET_URL="$(
jq -er '.target_url // empty' $s || (
export TARGET_JOB="$(jq -er '.target_job' $s)"
export TARGET_STEP="$(jq -er '.target_step // ""' $s)"
curl -sS -H "authorization: token ${{secrets.BOT_TOKEN}}" \
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/actions/runs/`
`${{github.event.workflow_run.id}}/jobs" \
| jq -er '.jobs[]
| select(.name == env.TARGET_JOB)
| .html_url
+ "?check_suite_focus=true"
+ ((.steps[]
| select(.name == env.TARGET_STEP)
| "#step:\(.number):0") // "")'))"
# update status
curl -sS -X POST -H "authorization: token ${{secrets.BOT_TOKEN}}" \
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/statuses/`
`${{github.event.workflow_run.head_sha}}" \
-d "$(jq -n '{
state: env.STATE,
context: env.CONTEXT,
description: env.DESCRIPTION,
target_url: env.TARGET_URL}' \
| tee /dev/stderr)"
done
Loading