osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/43916?usp=email ) Change subject: contrib/jenkins: upload to downloads.osmocom.org ...................................................................... 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(-) Approvals: pespin: Looks good to me, but someone else must approve osmith: Looks good to me, approved fixeria: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified 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 https://gerrit.osmocom.org/c/osmocom-bb/+/43916?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: Ice48e7cc347c822aab19bb6646726591d2841cc3 Gerrit-Change-Number: 43916 Gerrit-PatchSet: 2 Gerrit-Owner: osmith <osmith@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> Gerrit-Reviewer: laforge <laforge@osmocom.org> Gerrit-Reviewer: osmith <osmith@sysmocom.de> Gerrit-Reviewer: pespin <pespin@sysmocom.de>