summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Levsen <holger@layer-acht.org>2015-02-28 13:49:53 +0100
committerHolger Levsen <holger@layer-acht.org>2015-02-28 13:50:31 +0100
commit803416689a9a9bd83dc8a90fbc4960ac5bf2159f (patch)
treea0a45d9973f22ebd14da31b810bcd623ad973066
parentaee6e1dd695802c69e01db86fd9b47f45d24304c (diff)
downloadjenkins.debian.net-803416689a9a9bd83dc8a90fbc4960ac5bf2159f.tar.xz
reproducible: calculate build duration (for both builds combined, or just the time it takes to ftbfs once) and save it in reproducible.db
-rw-r--r--TODO1
-rwxr-xr-xbin/reproducible_build.sh25
2 files changed, 15 insertions, 11 deletions
diff --git a/TODO b/TODO
index 6db93f0f..9edbbcee 100644
--- a/TODO
+++ b/TODO
@@ -130,7 +130,6 @@ properties:
* db schema 2.0
** actually add support for suites in the code, the db is fine now.
** actually add support for archs, the db is fine now. One day we'll want to rebuild all the packages on all the archs too!
-** record build times in the results table.
** record build stats in the new stats_build table (forever, so we get relevant data)
** add support for the save_artifacts field in the schedule table, so we can manually schedule packages, which provide the binary packages somewhere for inspection
** move "untested" field in stats table too? (as in csv output...)
diff --git a/bin/reproducible_build.sh b/bin/reproducible_build.sh
index d614f1fb..83f542c6 100755
--- a/bin/reproducible_build.sh
+++ b/bin/reproducible_build.sh
@@ -26,6 +26,11 @@ cleanup_userContent() {
rm -f /var/lib/jenkins/userContent/buildinfo/${SRCPACKAGE}_*.buildinfo > /dev/null 2>&1
}
+calculate_build_duration() {
+ END=$(date +'%s')
+ DURATION=$(( $END - $START ))
+}
+
update_db_and_html() {
# unmark build as properly finished
sqlite3 -init $INIT ${PACKAGES_DB} "DELETE FROM schedule WHERE package_id='$SRCPKGID';"
@@ -81,8 +86,8 @@ call_debbindiff() {
echo
echo "debbindiff found no differences in the changes files, and a .buildinfo file also exist." | tee -a ${RBUILDLOG}
echo "${SRCPACKAGE} built successfully and reproducibly." | tee -a ${RBUILDLOG}
- # FIXME calculate build_duration and push it to the db
- sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date) VALUES ('${SRCPKGID}', '${VERSION}', 'reproducible', '$DATE')"
+ calculate_build_duration
+ sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date, build_duration) VALUES ('${SRCPKGID}', '${VERSION}', 'reproducible', '$DATE', '$DURATION')"
update_db_and_html
else
echo | tee -a ${RBUILDLOG}
@@ -105,8 +110,8 @@ call_debbindiff() {
echo "\n$MESSAGE" | tee -a ${RBUILDLOG}
#kgb-client --conf /srv/jenkins/kgb/debian-reproducible.conf --relay-msg "$MESSAGE" || true # don't fail the whole job
fi
- # FIXME calculate build_duration and push it to the db
- sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date) VALUES ('${SRCPKGID}', '${VERSION}', 'unreproducible', '$DATE')"
+ calculate_build_duration
+ sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date, build_duration) VALUES ('${SRCPKGID}', '${VERSION}', 'unreproducible', '$DATE', '$DURATION')"
update_db_and_html
fi
}
@@ -141,6 +146,8 @@ else
echo "============================================================================="
set -x
DATE=$(date +'%Y-%m-%d %H:%M')
+ START=$(date +'%s')
+ DURATION=0
# mark build attempt
sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO schedule (package_id, date_scheduled, date_build_started) VALUES ('$SRCPKGID', '$SCHEDULED_DATE', '$DATE');"
@@ -163,8 +170,7 @@ else
if [ $RESULT != 0 ] ; then
echo "Warning: Download of ${SRCPACKAGE}/${SUITE} sources failed." | tee -a ${RBUILDLOG}
ls -l ${SRCPACKAGE}* | tee -a ${RBUILDLOG}
- # FIXME calculate build_duration and push it to the db
- sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date) VALUES ('${SRCPKGID}', 'None', '404', '$DATE')"
+ sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date, build_duration) VALUES ('${SRCPKGID}', 'None', '404', '$DATE', '')"
set +x
echo "Warning: Maybe there was a network problem, or ${SRCPACKAGE} is not a source package, or was removed or renamed. Please investigate." | tee -a ${RBUILDLOG}
update_db_and_html
@@ -194,8 +200,7 @@ else
done
if ! $SUITABLE ; then
set -x
- # FIXME calculate build_duration and push it to the db
- sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date) VALUES ('${SRCPKGID}', '${VERSION}', 'not for us', '$DATE')"
+ sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date, build_duration) VALUES ('${SRCPKGID}', '${VERSION}', 'not for us', '$DATE', '')"
set +x
echo "Package ${SRCPACKAGE} (${VERSION}) shall only be build on \"$(echo "${ARCHITECTURES}" | xargs echo )\" and thus was skipped." | tee -a ${RBUILDLOG}
update_db_and_html
@@ -252,8 +257,8 @@ else
if [ $FTBFS -eq 1 ] ; then
set +x
echo "${SRCPACKAGE} failed to build from source."
- # FIXME calculate build_duration and push it to the db
- sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date) VALUES ('${SRCPKGID}', '${VERSION}', 'FTBFS', '$DATE')"
+ calculate_build_duration
+ sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date, build_duration) VALUES ('${SRCPKGID}', '${VERSION}', 'FTBFS', '$DATE', '$DURATION')"
update_db_and_html
fi
fi