#!/bin/bash # version 1.0.1 # made by Filip Rojek # project website: https://filiprojek.cz/projects/gitlab-ce-auto-minor-upgrade/ # git repo: https://git.filiprojek.cz/fr/gitlab-ce-auto-minor-upgrade/ # # TODO: # - check and notify for new major version PKG_NAME="gitlab-ce" CURRENT_VERSION=$(dpkg -s $PKG_NAME | grep Version | sed 's/Version: //') # TODO: make this as an function and call it in success log line MINOR_PREFIX=$(dpkg -s $PKG_NAME | grep Version | sed 's/Version: //' | awk -F "." '{print $1 "." $2}') UPDATE_TO=$(apt-cache madison $PKG_NAME | grep $CURRENT_VERSION -B5 | awk -F "|" '{print $2}' | sed 's/ //' | grep $MINOR_PREFIX | head -n1) DATE=$(date +'%Y-%m-%d %H:%M:%S') UPDATE_LOG="/var/log/gitlab-auto-update.log" ERROR_LOG="/var/log/gitlab-auto-update.error.log" # Remove leading/trailing whitespace and newlines from the strings CURRENT_VERSION=$(echo "$CURRENT_VERSION" | tr -d '[:space:]') UPDATE_TO=$(echo "$UPDATE_TO" | tr -d '[:space:]') if [[ "$CURRENT_VERSION" == "$UPDATE_TO" ]]; then echo "$DATE | $CURRENT_VERSION | no new minor version is available" >> /var/log/gitlab-auto-update.log exit 0 else echo "$DATE | $CURRENT_VERSION | updating to $UPDATE_TO" >> /var/log/gitlab-auto-update.log INSTALL_LOG=$(sudo apt install -y "$PKG_NAME=$UPDATE_TO") INSTALLATION_STATUS_CODE=$(echo $?) # Check if there were any errors if [ INSTALLATION_STATUS_CODE != 0 ]; then echo "$DATE | $CURRENT_VERSION | error occurred while updating the package" >> $UPDATE_LOG echo "$DATE | $CURRENT_VERSION | error occurred while updating the package" >> $ERROR_LOG echo $INSTALL_LOG >> $ERROR_LOG echo "\n\n\n" >> $ERROR_LOG cat "$ERROR_LOG" exit 1 else echo "$DATE | $CURRENT_VERSION | package has been successfully updated to $UPDATE_TO" >> $UPDATE_LOG exit 0 fi fi