refactor: Use shared variables for Docker version management
Refactor the workflow to use shared variables ($GITHUB_OUTPUT) for version information, improving code maintainability and reducing redundancy. Changes: - Add version_base output to Fetch WordPress step (e.g., "6.9.1") - Add version_base output to Fetch Nginx step (e.g., "1.29.5") - Update values.yaml step to use shared variables - Reference steps.wordpress.outputs.version_base instead of parsing - Reference steps.wordpress.outputs.version (full tag) and steps.nginx.outputs.version - Update Increment chart version step - Use steps.wordpress.outputs.version_base directly for Chart.yaml version - Eliminate redundant parsing of values.yaml Benefits: 1. Single source of truth: Version extracted once in fetch steps 2. Reduced code complexity: Eliminate multiple sed/grep operations 3. Better maintainability: Changes to version format only need updating fetch steps 4. Clearer logic: Each step has clear responsibility 5. Improved reliability: Less error-prone than multiple parsing operations Version flow: 1. Fetch WordPress → outputs: version, version_base 2. Fetch Nginx → outputs: version, version_base 3. Update values.yaml → uses version (full tag) 4. Increment chart version → uses version_base Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -29,7 +29,7 @@ jobs:
|
||||
run: |
|
||||
# Docker Hubから最新のWordPress FPM Alpineバージョンを取得(PHPバージョンも最新)
|
||||
echo "Fetching WordPress FPM Alpine versions..."
|
||||
|
||||
|
||||
# fpm-alpineタグを取得(全PHPバージョン対象)
|
||||
LATEST_VERSION=$(curl -s "https://hub.docker.com/v2/repositories/library/wordpress/tags?page_size=100&name=fpm-alpine" | \
|
||||
jq -r '.results[].name' | \
|
||||
@@ -39,7 +39,7 @@ jobs:
|
||||
grep -v 'alpha' | \
|
||||
sort -t- -k1,1V -k2,2V | \
|
||||
tail -n 1)
|
||||
|
||||
|
||||
if [ -z "$LATEST_VERSION" ]; then
|
||||
echo "Failed to fetch from first method, trying alternative..."
|
||||
# 代替方法: すべてのfpm-alpineタグを取得
|
||||
@@ -52,29 +52,31 @@ jobs:
|
||||
sort -t- -k1,1V -k2,2V | \
|
||||
tail -n 1)
|
||||
fi
|
||||
|
||||
|
||||
if [ -z "$LATEST_VERSION" ]; then
|
||||
echo "ERROR: Failed to fetch WordPress version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
echo "WordPress latest version: $LATEST_VERSION"
|
||||
|
||||
|
||||
# バージョン情報を分解して表示
|
||||
WP_VERSION=$(echo $LATEST_VERSION | cut -d'-' -f1)
|
||||
PHP_VERSION=$(echo $LATEST_VERSION | cut -d'-' -f2)
|
||||
echo " WordPress: $WP_VERSION"
|
||||
echo " PHP: $PHP_VERSION"
|
||||
echo " Base: fpm-alpine"
|
||||
|
||||
|
||||
# 共有変数として出力
|
||||
echo "version=$LATEST_VERSION" >> $GITHUB_OUTPUT
|
||||
echo "version_base=$WP_VERSION" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Fetch latest Nginx Alpine Perl version
|
||||
id: nginx
|
||||
run: |
|
||||
# Docker Hubから最新のNginx Alpine Perlバージョンを取得
|
||||
echo "Fetching Nginx Alpine Perl versions..."
|
||||
|
||||
|
||||
LATEST_VERSION=$(curl -s "https://hub.docker.com/v2/repositories/library/nginx/tags?page_size=100&name=alpine-perl" | \
|
||||
jq -r '.results[].name' | \
|
||||
grep -E '^[0-9]+\.[0-9]+\.[0-9]+-alpine-perl$' | \
|
||||
@@ -83,7 +85,7 @@ jobs:
|
||||
grep -v 'alpha' | \
|
||||
sort -V | \
|
||||
tail -n 1)
|
||||
|
||||
|
||||
if [ -z "$LATEST_VERSION" ]; then
|
||||
echo "Failed to fetch from first method, trying alternative..."
|
||||
# 代替方法: alpine-perlタグを別の方法で検索
|
||||
@@ -97,20 +99,22 @@ jobs:
|
||||
sort -V | \
|
||||
tail -n 1)
|
||||
fi
|
||||
|
||||
|
||||
if [ -z "$LATEST_VERSION" ]; then
|
||||
echo "ERROR: Failed to fetch Nginx version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
echo "Nginx latest version: $LATEST_VERSION"
|
||||
|
||||
|
||||
# バージョン情報を表示
|
||||
NGINX_VERSION=$(echo $LATEST_VERSION | cut -d'-' -f1)
|
||||
echo " Nginx: $NGINX_VERSION"
|
||||
echo " Base: alpine-perl"
|
||||
|
||||
|
||||
# 共有変数として出力
|
||||
echo "version=$LATEST_VERSION" >> $GITHUB_OUTPUT
|
||||
echo "version_base=$NGINX_VERSION" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Get current versions from values.yaml
|
||||
id: current
|
||||
@@ -158,24 +162,28 @@ jobs:
|
||||
# バックアップを作成
|
||||
cp values.yaml values.yaml.bak
|
||||
|
||||
# 現在のWordPressバージョンを取得(Chart.yamlの更新判定用)
|
||||
CURRENT_WP_VERSION=$(grep -A 1 'wordpress:' values.yaml | grep 'tag:' | sed 's/.*tag: "\([^-]*\).*/\1/')
|
||||
NEW_WP_VERSION=$(echo "${{ steps.wordpress.outputs.version }}" | cut -d'-' -f1)
|
||||
# 共有変数から最新バージョンを取得
|
||||
WP_LATEST="${{ steps.wordpress.outputs.version }}"
|
||||
WP_BASE="${{ steps.wordpress.outputs.version_base }}"
|
||||
NGINX_LATEST="${{ steps.nginx.outputs.version }}"
|
||||
|
||||
# 変更前のバージョンを表示
|
||||
# 現在のバージョンを取得(Chart.yaml更新判定用)
|
||||
CURRENT_WP_BASE=$(grep -A 1 'wordpress:' values.yaml | grep 'tag:' | sed 's/.*tag: "\([^-]*\).*/\1/')
|
||||
CURRENT_NGINX=$(grep -A 1 'nginx:' values.yaml | grep 'tag:' | sed 's/.*tag: "\(.*\)".*/\1/')
|
||||
|
||||
echo "Current versions:"
|
||||
echo " WordPress: $CURRENT_WP_VERSION"
|
||||
echo " WordPress: $CURRENT_WP_BASE"
|
||||
echo " Nginx: $CURRENT_NGINX"
|
||||
echo "New versions:"
|
||||
echo " WordPress: $NEW_WP_VERSION"
|
||||
echo " Nginx: ${{ steps.nginx.outputs.version }}"
|
||||
echo ""
|
||||
echo "Latest versions:"
|
||||
echo " WordPress: $WP_BASE ($WP_LATEST)"
|
||||
echo " Nginx: $NGINX_LATEST"
|
||||
|
||||
# WordPressのtagを更新
|
||||
sed -i "/^ wordpress:/,/^ [a-z]/s|tag: \"[^\"]*\"|tag: \"${{ steps.wordpress.outputs.version }}\"|" values.yaml
|
||||
sed -i "/^ wordpress:/,/^ [a-z]/s|tag: \"[^\"]*\"|tag: \"$WP_LATEST\"|" values.yaml
|
||||
|
||||
# Nginxのtagを更新
|
||||
sed -i "/^ nginx:/,/^ [a-z]/s|tag: \"[^\"]*\"|tag: \"${{ steps.nginx.outputs.version }}\"|" values.yaml
|
||||
sed -i "/^ nginx:/,/^ [a-z]/s|tag: \"[^\"]*\"|tag: \"$NGINX_LATEST\"|" values.yaml
|
||||
|
||||
# 変更内容を表示
|
||||
echo ""
|
||||
@@ -191,8 +199,8 @@ jobs:
|
||||
echo "Changes detected in values.yaml"
|
||||
|
||||
# WordPressバージョンが更新されたか判定(Chart.yaml更新の判定用)
|
||||
if [ "$CURRENT_WP_VERSION" != "$NEW_WP_VERSION" ]; then
|
||||
echo "WordPress version changed: $CURRENT_WP_VERSION -> $NEW_WP_VERSION"
|
||||
if [ "$CURRENT_WP_BASE" != "$WP_BASE" ]; then
|
||||
echo "WordPress version changed: $CURRENT_WP_BASE -> $WP_BASE"
|
||||
echo "chart_version_update_needed=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "INFO: WordPress version unchanged - only other images updated"
|
||||
@@ -214,8 +222,8 @@ jobs:
|
||||
CURRENT_CHART_VERSION=$(grep '^version:' Chart.yaml | awk '{print $2}')
|
||||
CURRENT_APP_VERSION=$(grep '^appVersion:' Chart.yaml | awk '{print $2}' | tr -d '"')
|
||||
|
||||
# values.yamlの新しいWordPressバージョンを取得(imageタグから)
|
||||
NEW_WP_VERSION=$(grep -A 3 'wordpress:' values.yaml | grep 'tag:' | awk -F'"' '{print $2}' | cut -d'-' -f1)
|
||||
# 共有変数から最新のWordPressバージョン(ベース)を取得
|
||||
NEW_WP_VERSION="${{ steps.wordpress.outputs.version_base }}"
|
||||
|
||||
# Chart.yamlはWordPressバージョンに合わせて更新(version と appVersion を同じにする)
|
||||
NEW_CHART_VERSION="$NEW_WP_VERSION"
|
||||
|
||||
Reference in New Issue
Block a user