osmith submitted this change.
contrib/jenkins: upload to downloads.osmocom.org
Related: OS#6879
Change-Id: Ice48e7cc347c822aab19bb6646726591d2841cc3
---
M .gitignore
M contrib/jenkins.sh
A contrib/upload_firmware.sh
3 files changed, 95 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
index 2232749..de644c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,3 +41,6 @@
doc/manuals/osmocombb-usermanual.xml
doc/manuals/common
doc/manuals/build
+
+osmo-ci
+.copy-done
diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh
index c4b409f..fce8744 100755
--- a/contrib/jenkins.sh
+++ b/contrib/jenkins.sh
@@ -69,4 +69,9 @@
cd "$base/src/target/trx_toolkit"
python3 -m unittest discover -v
+# Upload firmware to downloads.osmocom.org
+if [ "$PUBLISH" = "1" ]; then
+ "$base"/contrib/upload_firmware.sh
+fi
+
osmo-clean-workspace.sh
diff --git a/contrib/upload_firmware.sh b/contrib/upload_firmware.sh
new file mode 100755
index 0000000..18914f3
--- /dev/null
+++ b/contrib/upload_firmware.sh
@@ -0,0 +1,87 @@
+#!/bin/sh -e
+TOPDIR="$(realpath $(dirname "$0")/..)"
+GIT_VERSION="$("$TOPDIR"/src/shared/libosmocore/git-version-gen .tarball-version)"
+
+copy_with_latest_and_version() {
+ local marker="$TOPDIR"/.copy-done
+
+ if [ -e "$marker" ]; then
+ return
+ fi
+
+ echo "Copying binaries with "-latest" and "-$GIT_VERSION" appended..."
+
+ # Example paths:
+ # * src/target/firmware/board/se_k2xx/hello_world.highram.elf
+ # * src/target/firmware/board/se_k2xx/hello_world.highram.bin
+ cd "$TOPDIR"/src/target/firmware/board
+ for ext in bin elf; do
+ for file in */*."$ext"; do
+ without_ext="${file%.*}"
+ cp -v "$file" "$without_ext-latest.$ext"
+ cp -v "$file" "$without_ext-$GIT_VERSION.$ext"
+ done
+ done
+
+ touch "$marker"
+}
+
+prepare_ssh_cmd() {
+ if ! [ -d "$TOPDIR"/osmo-ci ]; then
+ # Get known_hosts from osmo-ci
+ git -C "$TOPDIR" clone -q --depth=1 https://gerrit.osmocom.org/osmo-ci
+ fi
+ export SSH_COMMAND="ssh -o UserKnownHostsFile=$TOPDIR/osmo-ci/contrib/known_hosts -p 48"
+}
+
+ssh_mkdir_p() {
+ $SSH_COMMAND binaries@ftp.osmocom.org -- mkdir -p -v /downloads/home/binaries/"$1"
+}
+
+upload_board_latest() {
+ echo "[$BOARD] Uploading latest files"
+
+ ssh_mkdir_p web-files/osmocom-bb/firmware/"$BOARD"/latest
+
+ rsync \
+ --archive \
+ --verbose \
+ --compress \
+ --delete \
+ --rsh "$SSH_COMMAND" \
+ "$BOARD"/*-latest.bin \
+ "$BOARD"/*-latest.elf \
+ binaries@ftp.osmocom.org:web-files/osmocom-bb/firmware/"$BOARD"/latest/
+}
+
+upload_board_versioned() {
+ echo "[$BOARD] Uploading $GIT_VERSION files"
+
+ ssh_mkdir_p web-files/osmocom-bb/firmware/"$BOARD"/all
+
+ rsync \
+ --archive \
+ --verbose \
+ --compress \
+ --rsh "$SSH_COMMAND" \
+ --exclude "$BOARD/*-latest.{bin,elf}" \
+ "$BOARD"/*-*-*.bin \
+ "$BOARD"/*-*-*.elf \
+ binaries@ftp.osmocom.org:web-files/osmocom-bb/firmware/"$BOARD"/all/
+}
+
+upload_boards_all() {
+ cd "$TOPDIR"/src/target/firmware/board
+ for BOARD in *; do
+ if [ -z "$(find "$BOARD" -name '*.elf')" ]; then
+ echo "[$BOARD] has no elf files, skipping"
+ continue
+ fi
+ upload_board_latest
+ upload_board_versioned
+ done
+}
+
+copy_with_latest_and_version
+prepare_ssh_cmd
+upload_boards_all
To view, visit change 43916. To unsubscribe, or for help writing mail filters, visit settings.