Skip to content

Commit b2124a5

Browse files
committed
Fixed multiple deploy steps in Travis
1 parent 949015a commit b2124a5

File tree

1 file changed

+84
-71
lines changed

1 file changed

+84
-71
lines changed

.travis.yml

Lines changed: 84 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ script:
2424

2525
- make clean test QUIET=1 CFLAGS+="-DLFS_NO_INTRINSICS"
2626

27-
# compile and find the code size with the smalles configuration
27+
# compile and find the code size with the smallest configuration
2828
- make clean size
2929
OBJ="$(ls lfs*.o | tr '\n' ' ')"
3030
CFLAGS+="-DLFS_NO{ASSERT,DEBUG,WARN,ERROR}"
@@ -35,27 +35,32 @@ script:
3535
if [ "$TRAVIS_TEST_RESULT" -eq 0 ]
3636
then
3737
CURR=$(tail -n1 sizes | awk '{print $1}')
38-
STATUS="Passed, code size is ${CURR}B"
39-
4038
PREV=$(curl https://github.com/api/repos/$TRAVIS_REPO_SLUG/status/master \
41-
| jq -r ".statuses[] | select(.context == \"ci/$NAME\").description" \
42-
| sed 's/.*code size is \([0-9]*\).*/\1/' \
39+
| jq -re "select(.sha != \"$TRAVIS_COMMIT\")
40+
| .statuses[] | select(.context == \"$STAGE/$NAME\").description
41+
| capture(\"code size is (?<size>[0-9]+)\").size" \
4342
|| echo 0)
43+
44+
STATUS="Passed, code size is ${CURR}B"
4445
if [ "$PREV" -ne 0 ]
4546
then
4647
STATUS="$STATUS ($(python -c "print '%+.2f' % (100*($CURR-$PREV)/$PREV.0)")%)"
4748
fi
4849
fi
4950
5051
# CI matrix
51-
matrix:
52+
jobs:
5253
include:
5354
# native testing
54-
- env:
55+
- stage: test
56+
env:
57+
- STAGE=test
5558
- NAME=littlefs-x86
5659

5760
# cross-compile with ARM (thumb mode)
58-
- env:
61+
- stage: test
62+
env:
63+
- STAGE=test
5964
- NAME=littlefs-arm
6065
- CC="arm-linux-gnueabi-gcc --static -mthumb"
6166
- EXEC="qemu-arm"
@@ -65,7 +70,9 @@ matrix:
6570
- qemu-arm -version
6671

6772
# cross-compile with PowerPC
68-
- env:
73+
- stage: test
74+
env:
75+
- STAGE=test
6976
- NAME=littlefs-powerpc
7077
- CC="powerpc-linux-gnu-gcc --static"
7178
- EXEC="qemu-ppc"
@@ -75,7 +82,9 @@ matrix:
7582
- qemu-ppc -version
7683

7784
# cross-compile with MIPS
78-
- env:
85+
- stage: test
86+
env:
87+
- STAGE=test
7988
- NAME=littlefs-mips
8089
- CC="mips-linux-gnu-gcc --static"
8190
- EXEC="qemu-mips"
@@ -87,7 +96,9 @@ matrix:
8796
- qemu-mips -version
8897

8998
# self-host with littlefs-fuse for fuzz test
90-
- env:
99+
- stage: test
100+
env:
101+
- STAGE=test
91102
- NAME=littlefs-fuse
92103
install:
93104
- sudo apt-get install libfuse-dev
@@ -117,13 +128,67 @@ matrix:
117128
- ls
118129
- make -B test_dirs test_files QUIET=1
119130

131+
# Automatically update releases
132+
- stage: deploy
133+
env:
134+
- STAGE=deploy
135+
- NAME=deploy
136+
script:
137+
# Update tag for version defined in lfs.h
138+
- LFS_VERSION=$(grep -ox '#define LFS_VERSION .*' lfs.h | cut -d ' ' -f3)
139+
- LFS_VERSION_MAJOR=$((0xffff & ($LFS_VERSION >> 16)))
140+
- LFS_VERSION_MINOR=$((0xffff & ($LFS_VERSION >> 0)))
141+
- LFS_VERSION="v$LFS_VERSION_MAJOR.$LFS_VERSION_MINOR"
142+
- echo "littlefs version $LFS_VERSION"
143+
- |
144+
curl -u $GEKY_BOT_RELEASES -X POST \
145+
https://github.com/api/repos/$TRAVIS_REPO_SLUG/git/refs \
146+
-d "{
147+
\"ref\": \"refs/tags/$LFS_VERSION\",
148+
\"sha\": \"$TRAVIS_COMMIT\"
149+
}"
150+
- |
151+
curl -f -u $GEKY_BOT_RELEASES -X PATCH \
152+
https://github.com/api/repos/$TRAVIS_REPO_SLUG/git/refs/tags/$LFS_VERSION \
153+
-d "{
154+
\"sha\": \"$TRAVIS_COMMIT\"
155+
}"
156+
# Create release notes from commits
157+
- LFS_PREV_VERSION="v$LFS_VERSION_MAJOR.$(($LFS_VERSION_MINOR-1))"
158+
- |
159+
if [ $(git tag -l "$LFS_PREV_VERSION") ]
160+
then
161+
curl -u $GEKY_BOT_RELEASES -X POST \
162+
https://github.com/api/repos/$TRAVIS_REPO_SLUG/releases \
163+
-d "{
164+
\"tag_name\": \"$LFS_VERSION\",
165+
\"name\": \"$LFS_VERSION\"
166+
}"
167+
RELEASE=$(
168+
curl -f https://github.com/api/repos/$TRAVIS_REPO_SLUG/releases/tags/$LFS_VERSION
169+
)
170+
CHANGES=$(
171+
git log --oneline $LFS_PREV_VERSION.. --grep='^Merge' --invert-grep
172+
)
173+
curl -f -u $GEKY_BOT_RELEASES -X PATCH \
174+
https://github.com/api/repos/$TRAVIS_REPO_SLUG/releases/$(
175+
jq -r '.id' <<< "$RELEASE"
176+
) \
177+
-d "$(
178+
jq -s '{
179+
"body": ((.[0] // "" | sub("(?<=\n)#+ Changes.*"; ""; "mi"))
180+
+ "### Changes\n\n" + .[1])
181+
}' <(jq '.body' <<< "$RELEASE") <(jq -sR '.' <<< "$CHANGES")
182+
)"
183+
fi
184+
120185
# Manage statuses
121186
before_install:
122187
- |
123188
curl -u $GEKY_BOT_STATUSES -X POST \
124189
https://github.com/api/repos/$TRAVIS_REPO_SLUG/statuses/${TRAVIS_PULL_REQUEST_SHA:-$TRAVIS_COMMIT} \
125190
-d "{
126-
\"context\": \"ci/$NAME\",
191+
\"context\": \"$STAGE/$NAME\",
127192
\"state\": \"pending\",
128193
\"description\": \"${STATUS:-In progress}\",
129194
\"target_url\": \"https://travis-ci.org/$TRAVIS_REPO_SLUG/jobs/$TRAVIS_JOB_ID\"
@@ -134,7 +199,7 @@ after_failure:
134199
curl -u $GEKY_BOT_STATUSES -X POST \
135200
https://github.com/api/repos/$TRAVIS_REPO_SLUG/statuses/${TRAVIS_PULL_REQUEST_SHA:-$TRAVIS_COMMIT} \
136201
-d "{
137-
\"context\": \"ci/$NAME\",
202+
\"context\": \"$STAGE/$NAME\",
138203
\"state\": \"failure\",
139204
\"description\": \"${STATUS:-Failed}\",
140205
\"target_url\": \"https://travis-ci.org/$TRAVIS_REPO_SLUG/jobs/$TRAVIS_JOB_ID\"
@@ -145,66 +210,14 @@ after_success:
145210
curl -u $GEKY_BOT_STATUSES -X POST \
146211
https://github.com/api/repos/$TRAVIS_REPO_SLUG/statuses/${TRAVIS_PULL_REQUEST_SHA:-$TRAVIS_COMMIT} \
147212
-d "{
148-
\"context\": \"ci/$NAME\",
213+
\"context\": \"$STAGE/$NAME\",
149214
\"state\": \"success\",
150215
\"description\": \"${STATUS:-Passed}\",
151216
\"target_url\": \"https://travis-ci.org/$TRAVIS_REPO_SLUG/jobs/$TRAVIS_JOB_ID\"
152217
}"
153218
154-
# Automatically update releases
155-
deploy:
156-
# Let before_deploy take over
157-
provider: script
158-
script: 'true'
159-
on:
160-
branch: master
161-
162-
before_deploy:
163-
- cd $TRAVIS_BUILD_DIR
164-
# Update tag for version defined in lfs.h
165-
- LFS_VERSION=$(grep -ox '#define LFS_VERSION .*' lfs.h | cut -d ' ' -f3)
166-
- LFS_VERSION_MAJOR=$((0xffff & ($LFS_VERSION >> 16)))
167-
- LFS_VERSION_MINOR=$((0xffff & ($LFS_VERSION >> 0)))
168-
- LFS_VERSION="v$LFS_VERSION_MAJOR.$LFS_VERSION_MINOR"
169-
- echo "littlefs version $LFS_VERSION"
170-
- |
171-
curl -u $GEKY_BOT_RELEASES -X POST \
172-
https://github.com/api/repos/$TRAVIS_REPO_SLUG/git/refs \
173-
-d "{
174-
\"ref\": \"refs/tags/$LFS_VERSION\",
175-
\"sha\": \"$TRAVIS_COMMIT\"
176-
}"
177-
- |
178-
curl -f -u $GEKY_BOT_RELEASES -X PATCH \
179-
https://github.com/api/repos/$TRAVIS_REPO_SLUG/git/refs/tags/$LFS_VERSION \
180-
-d "{
181-
\"sha\": \"$TRAVIS_COMMIT\"
182-
}"
183-
# Create release notes from commits
184-
- LFS_PREV_VERSION="v$LFS_VERSION_MAJOR.$(($LFS_VERSION_MINOR-1))"
185-
- |
186-
if [ $(git tag -l "$LFS_PREV_VERSION") ]
187-
then
188-
curl -u $GEKY_BOT_RELEASES -X POST \
189-
https://github.com/api/repos/$TRAVIS_REPO_SLUG/releases \
190-
-d "{
191-
\"tag_name\": \"$LFS_VERSION\",
192-
\"name\": \"$LFS_VERSION\"
193-
}"
194-
RELEASE=$(
195-
curl -f https://github.com/api/repos/$TRAVIS_REPO_SLUG/releases/tags/$LFS_VERSION
196-
)
197-
CHANGES=$(
198-
git log --oneline $LFS_PREV_VERSION.. --grep='^Merge' --invert-grep
199-
)
200-
curl -f -u $GEKY_BOT_RELEASES -X PATCH \
201-
https://github.com/api/repos/$TRAVIS_REPO_SLUG/releases/$(
202-
jq -r '.id' <<< "$RELEASE"
203-
) \
204-
-d "$(
205-
jq -s '{
206-
"body": ((.[0] // "" | sub("(?<=\n)#+ Changes.*"; ""; "mi"))
207-
+ "### Changes\n\n" + .[1])
208-
}' <(jq '.body' <<< "$RELEASE") <(jq -sR '.' <<< "$CHANGES")
209-
)"
210-
fi
219+
# Job control
220+
stages:
221+
- name: test
222+
- name: deploy
223+
if: branch = master

0 commit comments

Comments
 (0)