Add first draft of the package update notification
This commit is contained in:
71
.utilities/package_update_notifier.sh
Normal file
71
.utilities/package_update_notifier.sh
Normal file
@@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Docker Seafile client, help you mount a Seafile library as a volume.
|
||||
# Copyright (C) 2019-2020, flow.gunso@gmail.com
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
apk add curl jq
|
||||
|
||||
# Load utilities functions.
|
||||
SCRIPT_DIRECTORY=$(dirname ${BASH_SOURCE[0]})
|
||||
source $SCRIPT_DIRECTORY/utilities.sh
|
||||
|
||||
# Restrict the job to the right schedule.
|
||||
if [[ "$SCHEDULE_ID" != "$PACKAGE_UPDATE_NOTIFICATION_SCHEDULE_ID" ]]; then
|
||||
exit_with_message_and_code "Schedule ID did not match." 0
|
||||
fi
|
||||
|
||||
# Fetch the issue state if the ISSUE_ID variable is set,
|
||||
# if that state is closed remove the ISSUE_ID variable and continue the job, otherwise exit the job.
|
||||
if [[ -n "$ISSUE_ID" ]]; then
|
||||
issue_state="$(curl -H \"PRIVATE-TOKEN: $REPORTER_BOT_ACCESS_TOKEN\" \
|
||||
https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/issue/$ISSUE_ID | jq .state)"
|
||||
if [[ "$issue_state" == "closed" ]]; then
|
||||
echo "An issue exist, but is closed. Removing ISSUE_ID schedule variable..."
|
||||
echo 'curl -X DELETE \
|
||||
-H "PRIVATE-TOKEN: $REPORTER_BOT_ACCESS_TOKEN" \
|
||||
https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/pipeline_schedules/$SCHEDULE_ID/variables/ISSUES_ID'
|
||||
else
|
||||
exit_with_message_and_code "An issue already exists, it is not closed yet." 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get the installed and candidate versions of the seafile-cli package from the latest Docker image.
|
||||
docker pull $CI_REGISTRY_IMAGE:latest
|
||||
candidate_version=$(docker run --rm --entrypoint="" $CI_REGISTRY_IMAGE:latest \
|
||||
bash -c "\
|
||||
apt-get -qq update;\
|
||||
apt-cache policy seafile-cli | grep 'Candidate:' | awk '{print \$2}'")
|
||||
installed_version=$(docker run --rm --entrypoint="" $CI_REGISTRY_IMAGE:latest \
|
||||
bash -c "\
|
||||
apt-get -qq update;\
|
||||
apt-cache policy seafile-cli | grep 'Installed:' | awk '{print \$2}'")
|
||||
|
||||
# Create an issue if a new version was released.
|
||||
if [[ "$installed_version" == "$candidate_version"]; then
|
||||
exit_with_message_and_code "No new version of the seafile-cli package have been released." 0
|
||||
else
|
||||
echo "A new version of the seafile-cli package have been released. Creating a new issue..."
|
||||
data=$(jq -n \
|
||||
--arg title "seafile-cli v${candidate_version} was released" \
|
||||
--arg description "Check for new feature, breaking changes or anything worth updating to update the Docker image." \
|
||||
--arg labels "enhancement" \
|
||||
'{title: $title, description: $description, labels: [$labels]}')
|
||||
echo 'curl -X POST \
|
||||
-H "PRIVATE-TOKEN: $REPORTER_BOT_ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$data"
|
||||
https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/issues'
|
||||
fi
|
||||
Reference in New Issue
Block a user