| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #!/bin/bash
- # this script is intended to be run from a crontab owned by the
- # custom user on ArduPilot's autotest server
- # to do a hot reload of remotes.json on custom.ardupilot.org
- # CBS_REMOTES_RELOAD_TOKEN can be supplied as an environment
- # variable in the crontab line, for example:
- # 0 * * * * CBS_REMOTES_RELOAD_TOKEN=8d64ed06945 /home/custom/CustomBuild/scripts/fetch_release_cronjob.sh
- # or can be read from base/secrets/reload_token (the token from the file gets the preference)
- CUSTOM_HOME=/home/custom
- TOPDIR=$CUSTOM_HOME
- LOGDIR=$TOPDIR/cron
- BASEDIR=$TOPDIR/base
- # Maximum number of log files to retain
- MAX_LOG_FILES=50
- # Get the current timestamp
- TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
- # Function to clean up old log files
- cleanup_old_logs() {
- # Find and sort log files by modification time, oldest first
- LOG_FILES=($(ls -1t ${LOGDIR}/fetch_releases_*.log \
- ${LOGDIR}/fetch_whitelisted_tags_*.log \
- 2>/dev/null))
- # Count the number of log files
- NUM_LOG_FILES=${#LOG_FILES[@]}
- # If the number of log files is greater than the maximum allowed
- if [ $NUM_LOG_FILES -gt $MAX_LOG_FILES ]; then
- # Loop through and delete the oldest files
- for ((i = $MAX_LOG_FILES ; i < $NUM_LOG_FILES ; i++ )); do
- rm -f "${LOG_FILES[$i]}"
- done
- fi
- }
- # Method to reload remotes on custom build server app
- reload_remotes_on_app() {
- local token_file="$BASEDIR/secrets/reload_token"
- local token
- # Check if the token file exists and is readable
- if [[ -f "$token_file" && -r "$token_file" ]]; then
- # Read the token from the file
- token=$(cat "$token_file")
- else
- echo "Token can't be retrieved from the file."
- # Try to get the token from the environment variable
- token=$CBS_REMOTES_RELOAD_TOKEN
- fi
- # Check if token is still empty
- if [[ -z "$token" ]]; then
- echo "Error: Token could not be retrieved."
- return 1
- fi
- # Send the curl request
- curl -X POST https://custom.ardupilot.org/refresh_remotes \
- -H "Content-Type: application/json" \
- -d "{\"token\": \"$token\"}"
- return 0
- }
- # Call the cleanup function before executing the main script
- cleanup_old_logs
- # Run fetch_releases.py to add official releases from AP
- python3 $TOPDIR/CustomBuild/scripts/fetch_releases.py \
- --basedir $BASEDIR \
- >> $LOGDIR/fetch_releases_${TIMESTAMP}.log 2>&1
- # Run fetch_whitelisted_tags.py to add tags from whitelisted repos
- python3 $TOPDIR/CustomBuild/scripts/fetch_whitelisted_tags.py \
- --basedir $BASEDIR \
- >> $LOGDIR/fetch_whitelisted_tags_${TIMESTAMP}.log 2>&1
- # Call the reload_remotes_on_app function to refresh remotes.json on app
- reload_remotes_on_app
|