Software Version Check #404
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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 |