Compare commits
13 commits
b60e9b1d44
...
a62219491d
| Author | SHA1 | Date | |
|---|---|---|---|
| a62219491d | |||
| 348dfc6087 | |||
| a29fa93e1e | |||
| 5f554a5b76 | |||
| 121bdf1b00 | |||
| 5a27df49ea | |||
| 783cb17e40 | |||
| 6d4987e067 | |||
| 5941e13389 | |||
| 8147fcaf90 | |||
| 5841012a5a | |||
| def06475cf | |||
| 050983c345 |
2 changed files with 45 additions and 23 deletions
|
|
@ -156,6 +156,8 @@
|
||||||
owner: "{{ forgejo_user_uid }}"
|
owner: "{{ forgejo_user_uid }}"
|
||||||
group: "{{ forgejo_user_gid }}"
|
group: "{{ forgejo_user_gid }}"
|
||||||
mode: '0755'
|
mode: '0755'
|
||||||
|
tags:
|
||||||
|
- update_script
|
||||||
|
|
||||||
- name: Set up cron job for Forgejo auto-update
|
- name: Set up cron job for Forgejo auto-update
|
||||||
cron:
|
cron:
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
set -e
|
set -e
|
||||||
LOG_FILE="{{ forgejo_data_dir }}/logs/update.log"
|
LOG_FILE="{{ forgejo_data_dir }}/logs/update.log"
|
||||||
COMPOSE_FILE="{{ forgejo_data_dir }}/docker-compose.yml"
|
COMPOSE_FILE="{{ forgejo_data_dir }}/docker-compose.yml"
|
||||||
CURRENT_VERSION=$(docker inspect --format='{% raw %}{{.Config.Image}}{% endraw %}' forgejo | awk -F':' '{print $2}')
|
|
||||||
|
|
||||||
# Create log directory if it doesn't exist
|
# Create log directory if it doesn't exist
|
||||||
mkdir -p "{{ forgejo_data_dir }}/logs"
|
mkdir -p "{{ forgejo_data_dir }}/logs"
|
||||||
|
|
@ -46,28 +45,43 @@ backup_forgejo() {
|
||||||
|
|
||||||
# Get the latest Forgejo version
|
# Get the latest Forgejo version
|
||||||
get_latest_version() {
|
get_latest_version() {
|
||||||
log "Checking for the latest Forgejo version..."
|
# Redirect log output to stderr so it doesn't get captured
|
||||||
|
log "Checking for the latest Forgejo version..." >&2
|
||||||
|
|
||||||
# Fetch the latest version from the Forgejo API
|
local response
|
||||||
LATEST_VERSION=$(curl -s https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | grep -o '\"tag_name\":\"[^\"]*' | cut -d'\"' -f4 | sed 's/^v//')
|
local latest_version
|
||||||
|
|
||||||
if [ -z "$LATEST_VERSION" ]; then
|
response=$(curl -s --max-time 10 https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest)
|
||||||
log "ERROR: Failed to retrieve the latest version. Exiting."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
log "Latest version: $LATEST_VERSION"
|
# Check if response contains expected field (also redirect to stderr)
|
||||||
log "Current version: $CURRENT_VERSION"
|
if ! echo "$response" | jq -e '.tag_name' > /dev/null; then
|
||||||
|
log "ERROR: Invalid response from Codeberg API." >&2
|
||||||
|
log "Response was: $response" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Return the latest version
|
latest_version=$(echo "$response" | jq -r '.tag_name' | sed 's/^v//')
|
||||||
echo "$LATEST_VERSION"
|
|
||||||
|
if [ -z "$latest_version" ]; then
|
||||||
|
log "ERROR: Failed to retrieve the latest version from Codeberg API." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Only output the version number
|
||||||
|
echo "$latest_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get current version
|
||||||
|
get_current_version() {
|
||||||
|
docker inspect --format='{% raw %}{{.Config.Image}}{% endraw %}' forgejo | cut -d':' -f2
|
||||||
}
|
}
|
||||||
|
|
||||||
# Update Forgejo to the latest version
|
# Update Forgejo to the latest version
|
||||||
update_forgejo() {
|
update_forgejo() {
|
||||||
local latest_version=$1
|
local latest_version=$1
|
||||||
|
local image_name="codeberg.org/forgejo/forgejo"
|
||||||
|
|
||||||
log "Starting Forgejo update process..."
|
log "Current image: $image_name:$(get_current_version)"
|
||||||
|
|
||||||
# Check if Forgejo is running
|
# Check if Forgejo is running
|
||||||
if ! is_forgejo_running; then
|
if ! is_forgejo_running; then
|
||||||
|
|
@ -79,20 +93,22 @@ update_forgejo() {
|
||||||
backup_forgejo
|
backup_forgejo
|
||||||
|
|
||||||
# Pull the latest image
|
# Pull the latest image
|
||||||
log "Pulling the latest Forgejo image..."
|
log "Pulling the latest Forgejo image... $image_name:$latest_version"
|
||||||
docker pull "codeberg.org/forgejo/forgejo:$latest_version"
|
docker pull "$image_name:$latest_version"
|
||||||
|
|
||||||
# Update the docker-compose file with the new version
|
# Update the docker-compose file with the new version
|
||||||
log "Updating docker-compose.yml with the new version..."
|
log "Updating docker-compose.yml with the new version..."
|
||||||
sed -i "s/codeberg.org\/forgejo\/forgejo:[0-9]*\.[0-9]*\.[0-9]*/codeberg.org\/forgejo\/forgejo:$latest_version/g" "$COMPOSE_FILE"
|
sed -i "s|codeberg.org/forgejo/forgejo:[0-9.]*\+*|$image_name:$latest_version|g" "$COMPOSE_FILE"
|
||||||
|
|
||||||
# Restart Forgejo with the new version
|
# Restart Forgejo with the new version
|
||||||
log "Restarting Forgejo with the new version..."
|
log "Restarting Forgejo with the new version..."
|
||||||
cd "{{ forgejo_data_dir }}" && docker-compose down && docker-compose up -d
|
cd "{{ forgejo_data_dir }}" && docker-compose down && docker-compose up -d
|
||||||
|
|
||||||
|
# Wait for container to restart and verify
|
||||||
|
sleep 15
|
||||||
|
|
||||||
# Verify the update
|
# Verify the update
|
||||||
sleep 10
|
NEW_VERSION=$(docker inspect --format='{% raw %}{{.Config.Image}}{% endraw %}' forgejo | cut -d':' -f2)
|
||||||
NEW_VERSION=$(docker inspect --format='{% raw %}{{.Config.Image}}{% endraw %}' forgejo | awk -F':' '{print $2}')
|
|
||||||
|
|
||||||
if [ "$NEW_VERSION" = "$latest_version" ]; then
|
if [ "$NEW_VERSION" = "$latest_version" ]; then
|
||||||
log "Forgejo successfully updated to version $latest_version"
|
log "Forgejo successfully updated to version $latest_version"
|
||||||
|
|
@ -106,9 +122,13 @@ update_forgejo() {
|
||||||
# Main execution
|
# Main execution
|
||||||
log "=== Forgejo Auto-Update Script Started ==="
|
log "=== Forgejo Auto-Update Script Started ==="
|
||||||
|
|
||||||
# Get the latest version
|
# Get versions
|
||||||
|
CURRENT_VERSION=$(get_current_version)
|
||||||
LATEST_VERSION=$(get_latest_version)
|
LATEST_VERSION=$(get_latest_version)
|
||||||
|
|
||||||
|
log "Current version: $CURRENT_VERSION"
|
||||||
|
log "Latest version: $LATEST_VERSION"
|
||||||
|
|
||||||
# Compare versions and update if needed
|
# Compare versions and update if needed
|
||||||
if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then
|
if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then
|
||||||
log "A new version is available. Updating from $CURRENT_VERSION to $LATEST_VERSION..."
|
log "A new version is available. Updating from $CURRENT_VERSION to $LATEST_VERSION..."
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue