Skip to content

Software Version Check #404

Software Version Check

Software Version Check #404

# This workflow checks for new versions of key software dependencies (MariaDB, NGINX, OpenSSL, PCRE2, Zlib, etc.)
# and updates the enginescript-variables.txt file if newer versions are found. It creates a pull request with the
# changes and updates the version table in the README. This ensures EngineScript always tracks the latest stable
# releases of its core dependencies.
name: Software Version Check
on:
schedule:
- cron: '0 6 * * *' # Runs daily at 6:00 AM UTC
workflow_dispatch: # Allows manual triggering
push:
paths:
- 'enginescript-variables.txt'
branches:
- main
permissions:
contents: write
pull-requests: write
jobs:
check-versions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Check Software Versions
id: version-check
run: |
# Initialize software versions changed flag and changelog
SOFTWARE_VERSIONS_CHANGED=false
CHANGELOG_CONTENT=""
# Function to compare version numbers
version_gt() {
local v1=$1
local v2=$2
echo "::debug::Version comparison: '$v1' > '$v2'"
if [[ "$(printf '%s\n' "$v1" "$v2" | sort -V | head -n 1)" != "$v1" ]]; then
echo "::debug::Result: true"
return 0
else
echo "::debug::Result: false"
return 1
fi
}
# Function to extract current version
get_current_version() {
local var_name=$1
grep "^${var_name}=" enginescript-variables.txt | cut -d'"' -f2
}
# Function to check and update version
check_version() {
local var_name=$1
local new_ver=$2
local current_ver=$(get_current_version "$var_name")
echo "::debug::Checking $var_name: current='$current_ver', new='$new_ver'"
# Handle special case where current version is "null" or empty
if [[ -n "$new_ver" && ( "$current_ver" = "null" || -z "$current_ver" || $(version_gt "$new_ver" "$current_ver") ) ]]; then
echo "::debug::Version update detected for $var_name"
# Update version in enginescript-variables.txt directly
sed -i "s/^${var_name}=\"[^\"]*\"/${var_name}=\"${new_ver}\"/" enginescript-variables.txt
SOFTWARE_VERSIONS_CHANGED=true
echo "::notice::${var_name} update available: ${current_ver} -> ${new_ver}"
# Add to changelog
if [[ -z "$CHANGELOG_CONTENT" ]]; then
CHANGELOG_CONTENT="| ${var_name} | ${current_ver} | **${new_ver}** |"
else
CHANGELOG_CONTENT="${CHANGELOG_CONTENT}\n| ${var_name} | ${current_ver} | **${new_ver}** |"
fi
else
echo "::debug::No update needed for $var_name"
fi
}
# MariaDB (11.8.x series)
LATEST_MARIADB=$(curl -sL https://downloads.mariadb.org/mariadb/+releases/ |
grep -oP '11\.8\.[0-9]+(?=/)' |
sort -V |
tail -n1)
check_version "MARIADB_VER" "$LATEST_MARIADB"
# EngineScript Site Exporter Plugin
echo "::debug::Fetching ES_SE Plugin version..."
ES_SE_API_RESPONSE=$(curl -s https://api.github.com/repos/EngineScript/enginescript-site-exporter/releases/latest)
echo "::debug::ES_SE API Response: $ES_SE_API_RESPONSE"
LATEST_ES_SE=$(echo "$ES_SE_API_RESPONSE" | jq -r '.tag_name // empty' | sed 's/v//')
echo "::debug::Parsed ES_SE version: '$LATEST_ES_SE'"
# Only check version if we got a valid response
if [[ -n "$LATEST_ES_SE" && "$LATEST_ES_SE" != "null" ]]; then
check_version "ES_SE_PLUGIN_VER" "$LATEST_ES_SE"
else
echo "::warning::Failed to fetch ES_SE Plugin version, keeping current version"
fi
# EngineScript Site Optimizer Plugin
echo "::debug::Fetching ES_SO Plugin version..."
ES_SO_API_RESPONSE=$(curl -s https://api.github.com/repos/EngineScript/enginescript-site-optimizer/releases/latest)
echo "::debug::ES_SO API Response: $ES_SO_API_RESPONSE"
LATEST_ES_SO=$(echo "$ES_SO_API_RESPONSE" | jq -r '.tag_name // empty' | sed 's/^v//')
echo "::debug::Parsed ES_SO version: '$LATEST_ES_SO'"
# Debug current version
CURRENT_ES_SO_VER=$(get_current_version "ES_SO_PLUGIN_VER")
echo "::debug::Current ES_SO version: '$CURRENT_ES_SO_VER'"
# Only check version if we got a valid response
if [[ -n "$LATEST_ES_SO" && "$LATEST_ES_SO" != "null" ]]; then
check_version "ES_SO_PLUGIN_VER" "$LATEST_ES_SO"
else
echo "::warning::Failed to fetch ES_SO Plugin version, keeping current version"
fi
# PCRE2
echo "::debug::Fetching PCRE2 version..."
PCRE2_API_RESPONSE=$(curl -s https://api.github.com/repos/PCRE2Project/pcre2/releases/latest)
echo "::debug::PCRE2 API Response: $PCRE2_API_RESPONSE"
LATEST_PCRE2=$(echo "$PCRE2_API_RESPONSE" | jq -r '.tag_name // empty' | sed 's/pcre2-//')
echo "::debug::Parsed PCRE2 version: '$LATEST_PCRE2'"
if [[ -n "$LATEST_PCRE2" && "$LATEST_PCRE2" != "null" ]]; then
check_version "PCRE2_VER" "$LATEST_PCRE2"
else
echo "::warning::Failed to fetch PCRE2 version, keeping current version"
fi
# OpenSSL (3.5.x series)
echo "::debug::Fetching OpenSSL version..."
OPENSSL_API_RESPONSE=$(curl -s https://api.github.com/repos/openssl/openssl/releases)
echo "::debug::OpenSSL API Response: $(echo "$OPENSSL_API_RESPONSE" | jq -r '.[0:3]')"
LATEST_OPENSSL=$(echo "$OPENSSL_API_RESPONSE" |
jq -r '.[].tag_name // empty' |
grep '^openssl-3\.5\.[0-9]*$' |
sort -V |
tail -n 1 |
sed 's/openssl-//')
echo "::debug::Parsed OpenSSL version: '$LATEST_OPENSSL'"
if [[ -n "$LATEST_OPENSSL" && "$LATEST_OPENSSL" != "null" ]]; then
check_version "OPENSSL_VER" "$LATEST_OPENSSL"
else
echo "::warning::Failed to fetch OpenSSL version, keeping current version"
fi
# NGINX (1.29.x series - mainline)
echo "::debug::Fetching NGINX version from GitHub..."
NGINX_API_RESPONSE=$(curl -s https://api.github.com/repos/nginx/nginx/tags)
echo "::debug::NGINX GitHub API Response: $(echo "$NGINX_API_RESPONSE" | jq -r '.[0:5]')"
# Look for the latest 1.29.x version from GitHub tags
LATEST_NGINX=$(echo "$NGINX_API_RESPONSE" |
jq -r '.[].name // empty' |
grep -E '^release-1\.29\.[0-9]+$' |
sort -V |
tail -n 1 |
sed 's/release-//')
echo "::debug::Latest 1.29.x version found: '$LATEST_NGINX'"
# If no 1.29.x version found, get the latest mainline (odd minor version)
if [[ -z "$LATEST_NGINX" ]]; then
echo "::debug::No 1.29.x version found, looking for latest mainline version..."
LATEST_NGINX=$(echo "$NGINX_API_RESPONSE" |
jq -r '.[].name // empty' |
grep -E '^release-1\.(2[579]|3[13579]|4[13579])\.[0-9]+$' |
sort -V |
tail -n 1 |
sed 's/release-//')
echo "::debug::Latest mainline version found: '$LATEST_NGINX'"
fi
# Verify the version exists on nginx.org before accepting it
if [[ -n "$LATEST_NGINX" && "$LATEST_NGINX" != "null" ]]; then
echo "::debug::Verifying nginx-${LATEST_NGINX}.tar.gz exists on nginx.org..."
if curl -s --head "https://nginx.org/download/nginx-${LATEST_NGINX}.tar.gz" | grep -q "200 OK"; then
echo "::debug::Confirmed: nginx-${LATEST_NGINX}.tar.gz is available for download"
check_version "NGINX_VER" "$LATEST_NGINX"
else
echo "::warning::nginx-${LATEST_NGINX}.tar.gz not found on nginx.org, keeping current version"
fi
else
echo "::warning::Failed to fetch NGINX version from GitHub, keeping current version"
fi
# phpMyAdmin
LATEST_PMA=$(curl -s https://www.phpmyadmin.net/downloads/ |
grep -oP 'phpMyAdmin-\K[0-9]+\.[0-9]+\.[0-9]+(?=-all-languages\.zip)' |
head -n1)
check_version "PHPMYADMIN_VER" "$LATEST_PMA"
# Zlib
echo "::debug::Fetching Zlib version..."
ZLIB_API_RESPONSE=$(curl -s https://api.github.com/repos/madler/zlib/tags)
echo "::debug::Zlib API Response: $(echo "$ZLIB_API_RESPONSE" | jq -r '.[0:3]')"
LATEST_ZLIB=$(echo "$ZLIB_API_RESPONSE" | jq -r '.[0].name // empty' | sed 's/v//')
echo "::debug::Parsed Zlib version: '$LATEST_ZLIB'"
if [[ -n "$LATEST_ZLIB" && "$LATEST_ZLIB" != "null" ]]; then
check_version "ZLIB_VER" "$LATEST_ZLIB"
else
echo "::warning::Failed to fetch Zlib version, keeping current version"
fi
# zlib-ng
echo "::debug::Fetching zlib-ng version..."
ZLIB_NG_API_RESPONSE=$(curl -s https://api.github.com/repos/zlib-ng/zlib-ng/releases/latest)
echo "::debug::zlib-ng API Response: $ZLIB_NG_API_RESPONSE"
LATEST_ZLIB_NG=$(echo "$ZLIB_NG_API_RESPONSE" | jq -r '.tag_name // empty')
echo "::debug::Parsed zlib-ng version: '$LATEST_ZLIB_NG'"
if [[ -n "$LATEST_ZLIB_NG" && "$LATEST_ZLIB_NG" != "null" ]]; then
check_version "ZLIB_NG_VER" "$LATEST_ZLIB_NG"
else
echo "::warning::Failed to fetch zlib-ng version, keeping current version"
fi
# zlib-rs
echo "::debug::Fetching zlib-rs version..."
ZLIB_RS_API_RESPONSE=$(curl -s https://api.github.com/repos/trifectatechfoundation/zlib-rs/releases/latest)
echo "::debug::zlib-rs API Response: $ZLIB_RS_API_RESPONSE"
LATEST_ZLIB_RS=$(echo "$ZLIB_RS_API_RESPONSE" | jq -r '.tag_name // empty')
echo "::debug::Parsed zlib-rs version: '$LATEST_ZLIB_RS'"
if [[ -n "$LATEST_ZLIB_RS" && "$LATEST_ZLIB_RS" != "null" ]]; then
check_version "ZLIB_RS_VER" "$LATEST_ZLIB_RS"
else
echo "::warning::Failed to fetch zlib-rs version, keeping current version"
fi
# liburing
echo "::debug::Fetching liburing version..."
LIBURING_API_RESPONSE=$(curl -s https://api.github.com/repos/axboe/liburing/tags)
echo "::debug::liburing API Response: $(echo "$LIBURING_API_RESPONSE" | jq -r '.[0:3]')"
LATEST_LIBURING=$(echo "$LIBURING_API_RESPONSE" | jq -r '.[0].name // empty' | sed 's/liburing-//')
echo "::debug::Parsed liburing version: '$LATEST_LIBURING'"
if [[ -n "$LATEST_LIBURING" && "$LATEST_LIBURING" != "null" ]]; then
check_version "LIBURING_VER" "$LATEST_LIBURING"
else
echo "::warning::Failed to fetch liburing version, keeping current version"
fi
# NGINX Headers More Module
echo "::debug::Fetching NGINX Headers More Module version..."
NGINX_HEADER_API_RESPONSE=$(curl -s https://api.github.com/repos/openresty/headers-more-nginx-module/tags)
echo "::debug::NGINX Headers API Response: $(echo "$NGINX_HEADER_API_RESPONSE" | jq -r '.[0:3]')"
# Filter for stable releases only (exclude pre-releases and dev versions)
LATEST_NGINX_HEADER=$(echo "$NGINX_HEADER_API_RESPONSE" |
jq -r '.[].name // empty' |
grep -E '^v[0-9]+\.[0-9]+$' |
head -n 1 |
sed 's/v//')
echo "::debug::Parsed NGINX Headers version: '$LATEST_NGINX_HEADER'"
if [[ -n "$LATEST_NGINX_HEADER" && "$LATEST_NGINX_HEADER" != "null" ]]; then
check_version "NGINX_HEADER_VER" "$LATEST_NGINX_HEADER"
else
echo "::warning::Failed to fetch NGINX Headers More Module version, keeping current version"
fi
# NGINX Cache Purge Module
echo "::debug::Fetching NGINX Cache Purge Module version..."
NGINX_PURGE_API_RESPONSE=$(curl -s https://api.github.com/repos/nginx-modules/ngx_cache_purge/tags)
echo "::debug::NGINX Purge API Response: $(echo "$NGINX_PURGE_API_RESPONSE" | jq -r '.[0:3]')"
LATEST_NGINX_PURGE=$(echo "$NGINX_PURGE_API_RESPONSE" | jq -r '.[0].name // empty' | sed 's/[^0-9\.]//g')
echo "::debug::Parsed NGINX Purge version: '$LATEST_NGINX_PURGE'"
if [[ -n "$LATEST_NGINX_PURGE" && "$LATEST_NGINX_PURGE" != "null" ]]; then
check_version "NGINX_PURGE_VER" "$LATEST_NGINX_PURGE"
else
echo "::warning::Failed to fetch NGINX Cache Purge Module version, keeping current version"
fi
# NGINX Dynamic TLS Records Patch - Track repository commits
echo "::debug::Fetching NGINX Dynamic TLS Records Patch latest commit..."
LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA=$(curl -sL https://api.github.com/repos/nginx-modules/ngx_http_tls_dyn_size/commits/master | jq -r '.sha')
echo "::debug::Fetched commit SHA: '$LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA'"
CURRENT_NGINX_DYN_TLS_PATCH_COMMIT_SHA=$(get_current_version "NGINX_DYN_TLS_PATCH_COMMIT_SHA")
if [[ -n "$LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA" && "$LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA" != "null" && "$CURRENT_NGINX_DYN_TLS_PATCH_COMMIT_SHA" != "$LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA" ]]; then
sed -i "s/^NGINX_DYN_TLS_PATCH_COMMIT_SHA=\"[^\"]*\"/NGINX_DYN_TLS_PATCH_COMMIT_SHA=\"$LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA\"/" enginescript-variables.txt
SOFTWARE_VERSIONS_CHANGED=true
echo "::notice::NGINX_DYN_TLS_PATCH_COMMIT_SHA update detected: $CURRENT_NGINX_DYN_TLS_PATCH_COMMIT_SHA -> $LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA"
# Add to changelog
if [[ -z "$CHANGELOG_CONTENT" ]]; then
CHANGELOG_CONTENT="| NGINX_DYN_TLS_PATCH | ${CURRENT_NGINX_DYN_TLS_PATCH_COMMIT_SHA:0:7} | **${LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA:0:7}** |"
else
CHANGELOG_CONTENT="${CHANGELOG_CONTENT}\n| NGINX_DYN_TLS_PATCH | ${CURRENT_NGINX_DYN_TLS_PATCH_COMMIT_SHA:0:7} | **${LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA:0:7}** |"
fi
else
if [[ -z "$LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA" || "$LATEST_NGINX_DYN_TLS_PATCH_COMMIT_SHA" == "null" ]]; then
echo "::warning::Failed to fetch NGINX Dynamic TLS Records Patch commit SHA, keeping current SHA"
fi
fi
# Font Awesome (restricted to 7.0.x releases)
echo "::debug::Fetching Font Awesome 7.0.x version..."
FONTAWESOME_API_RESPONSE=$(curl -s https://api.github.com/repos/FortAwesome/Font-Awesome/releases)
echo "::debug::Font Awesome API Response: $FONTAWESOME_API_RESPONSE"
# Filter for 7.0.x releases only, get the latest one
LATEST_FONTAWESOME=$(echo "$FONTAWESOME_API_RESPONSE" | jq -r '[.[] | select(.tag_name | test("^7\\.0\\.[0-9]+$")) | .tag_name] | first // empty' | sed 's/[^0-9\.]//g')
echo "::debug::Parsed Font Awesome 7.0.x version: '$LATEST_FONTAWESOME'"
if [[ -n "$LATEST_FONTAWESOME" && "$LATEST_FONTAWESOME" != "null" ]]; then
check_version "FONTAWESOME_VER" "$LATEST_FONTAWESOME"
else
echo "::warning::Failed to fetch Font Awesome 7.0.x version, keeping current version"
fi
# TinyFileManager
echo "::debug::Fetching TinyFileManager version..."
TFM_API_RESPONSE=$(curl -s https://api.github.com/repos/prasathmani/tinyfilemanager/releases/latest)
echo "::debug::TinyFileManager API Response: $TFM_API_RESPONSE"
LATEST_TFM=$(echo "$TFM_API_RESPONSE" | jq -r '.tag_name // empty')
echo "::debug::Parsed TinyFileManager version: '$LATEST_TFM'"
if [[ -n "$LATEST_TFM" && "$LATEST_TFM" != "null" ]]; then
check_version "TINYFILEMANAGER_VER" "$LATEST_TFM"
else
echo "::warning::Failed to fetch TinyFileManager version, keeping current version"
fi
# Output results if software versions changed
if [[ "$SOFTWARE_VERSIONS_CHANGED" = true ]]; then
echo "software_versions_changed=true" >> $GITHUB_OUTPUT
# Generate changelog
echo "changelog<<EOF" >> $GITHUB_OUTPUT
echo "The following software versions have been updated:" >> $GITHUB_OUTPUT
echo "" >> $GITHUB_OUTPUT
echo "| Software | Current | New |" >> $GITHUB_OUTPUT
echo "|----------|---------|-----|" >> $GITHUB_OUTPUT
echo -e "$CHANGELOG_CONTENT" >> $GITHUB_OUTPUT
echo "" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
# Check if we actually have changes to commit
if git diff --quiet; then
echo "No actual file changes detected, skipping PR creation"
echo "software_versions_changed=false" >> $GITHUB_OUTPUT
else
echo "File changes detected, proceeding with PR creation"
# Update README.md table directly in this step
echo "Updating README.md..."
sed -i -E \
-e "s#^(\\|NGINX MAINLINE[^|]*\\|)[^|]*#\1$(get_current_version NGINX_VER)#" \
-e "s#^(\\|NGINX CACHE PURGE[^|]*\\|)[^|]*#\1$(get_current_version NGINX_PURGE_VER)#" \
-e "s#^(\\|NGINX HEADERS MORE[^|]*\\|)[^|]*#\1$(get_current_version NGINX_HEADER_VER)#" \
-e "s#^(\\|NGINX PATCH: Dynamic TLS Records[^|]*\\|)[^|]*#\1Latest#" \
-e "s#^(\\|OPENSSL[^|]*\\|)[^|]*#\1$(get_current_version OPENSSL_VER)#" \
-e "s#^(\\|PCRE2[^|]*\\|)[^|]*#\1$(get_current_version PCRE2_VER)#" \
-e "s#^(\\|ZLIB[^|]*\\|)[^|]*#\1$(get_current_version ZLIB_VER)#" \
-e "s#^(\\|LIBURING[^|]*\\|)[^|]*#\1$(get_current_version LIBURING_VER)#" \
-e "s#^(\\|PHPMYADMIN[^|]*\\|)[^|]*#\1$(get_current_version PHPMYADMIN_VER)#" \
-e "s#^(\\|MARIADB[^|]*\\|)[^|]*#\1$(get_current_version MARIADB_VER)#" \
-e "s#^(\\|PLUGIN: EngineScript Site Exporter[^|]*\\|)[^|]*#\1$(get_current_version ES_SE_PLUGIN_VER)#" \
-e "s#^(\\|PLUGIN: EngineScript Site Optimizer[^|]*\\|)[^|]*#\1$(get_current_version ES_SO_PLUGIN_VER)#" \
-e "s#^(\\|Font Awesome[^|]*\\|)[^|]*#\1$(get_current_version FONTAWESOME_VER)#" \
-e "s#^(\\|TinyFileManager[^|]*\\|)[^|]*#\1$(get_current_version TINYFILEMANAGER_VER)#" \
README.md
# Update CI variables file to keep it in sync
echo "Updating enginescript-variables-ci.txt..."
sed -i \
-e "s/^LIBURING_VER=\"[^\"]*\"/LIBURING_VER=\"$(get_current_version LIBURING_VER)\"/" \
-e "s/^MARIADB_VER=\"[^\"]*\"/MARIADB_VER=\"$(get_current_version MARIADB_VER)\"/" \
-e "s/^NGINX_DYN_TLS_PATCH_COMMIT_SHA=\"[^\"]*\"/NGINX_DYN_TLS_PATCH_COMMIT_SHA=\"$(get_current_version NGINX_DYN_TLS_PATCH_COMMIT_SHA)\"/" \
-e "s/^NGINX_HEADER_VER=\"[^\"]*\"/NGINX_HEADER_VER=\"$(get_current_version NGINX_HEADER_VER)\"/" \
-e "s/^NGINX_PURGE_VER=\"[^\"]*\"/NGINX_PURGE_VER=\"$(get_current_version NGINX_PURGE_VER)\"/" \
-e "s/^NGINX_VER=\"[^\"]*\"/NGINX_VER=\"$(get_current_version NGINX_VER)\"/" \
-e "s/^OPENSSL_VER=\"[^\"]*\"/OPENSSL_VER=\"$(get_current_version OPENSSL_VER)\"/" \
-e "s/^PCRE2_VER=\"[^\"]*\"/PCRE2_VER=\"$(get_current_version PCRE2_VER)\"/" \
-e "s/^PHP_VER=\"[^\"]*\"/PHP_VER=\"$(get_current_version PHP_VER)\"/" \
-e "s/^PHPMYADMIN_VER=\"[^\"]*\"/PHPMYADMIN_VER=\"$(get_current_version PHPMYADMIN_VER)\"/" \
-e "s/^ZLIB_VER=\"[^\"]*\"/ZLIB_VER=\"$(get_current_version ZLIB_VER)\"/" \
-e "s/^ZLIB_NG_VER=\"[^\"]*\"/ZLIB_NG_VER=\"$(get_current_version ZLIB_NG_VER)\"/" \
-e "s/^ZLIB_RS_VER=\"[^\"]*\"/ZLIB_RS_VER=\"$(get_current_version ZLIB_RS_VER)\"/" \
-e "s/^ES_SE_PLUGIN_VER=\"[^\"]*\"/ES_SE_PLUGIN_VER=\"$(get_current_version ES_SE_PLUGIN_VER)\"/" \
-e "s/^ES_SO_PLUGIN_VER=\"[^\"]*\"/ES_SO_PLUGIN_VER=\"$(get_current_version ES_SO_PLUGIN_VER)\"/" \
.github/ci-config/enginescript-variables-ci.txt
fi
else
echo "software_versions_changed=false" >> $GITHUB_OUTPUT
fi
- name: Check for existing PR
if: steps.version-check.outputs.software_versions_changed == 'true'
id: check-pr
run: |
# Check if there's already an open PR for software version updates
EXISTING_PR=$(gh pr list --state open --head update-software-versions --json number --jq '.[0].number // empty')
if [[ -n "$EXISTING_PR" ]]; then
echo "existing_pr=$EXISTING_PR" >> $GITHUB_OUTPUT
echo "Found existing PR #$EXISTING_PR"
else
echo "existing_pr=" >> $GITHUB_OUTPUT
echo "No existing PR found"
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update existing PR or create new one
if: steps.version-check.outputs.software_versions_changed == 'true'
uses: peter-evans/create-pull-request@v8
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "chore: update software versions"
title: "chore: update software versions"
body: |
Automated software version updates
${{ steps.version-check.outputs.changelog }}
These updates ensure EngineScript uses the latest stable versions of its dependencies.
---
*Last updated: ${{ github.run_id }} on ${{ github.run_number }}*
branch: update-software-versions
delete-branch: false
labels: |
automated
dependencies