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:
@@ -67,7 +67,9 @@ jobs:
|
|||||||
echo " PHP: $PHP_VERSION"
|
echo " PHP: $PHP_VERSION"
|
||||||
echo " Base: fpm-alpine"
|
echo " Base: fpm-alpine"
|
||||||
|
|
||||||
|
# 共有変数として出力
|
||||||
echo "version=$LATEST_VERSION" >> $GITHUB_OUTPUT
|
echo "version=$LATEST_VERSION" >> $GITHUB_OUTPUT
|
||||||
|
echo "version_base=$WP_VERSION" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Fetch latest Nginx Alpine Perl version
|
- name: Fetch latest Nginx Alpine Perl version
|
||||||
id: nginx
|
id: nginx
|
||||||
@@ -110,7 +112,9 @@ jobs:
|
|||||||
echo " Nginx: $NGINX_VERSION"
|
echo " Nginx: $NGINX_VERSION"
|
||||||
echo " Base: alpine-perl"
|
echo " Base: alpine-perl"
|
||||||
|
|
||||||
|
# 共有変数として出力
|
||||||
echo "version=$LATEST_VERSION" >> $GITHUB_OUTPUT
|
echo "version=$LATEST_VERSION" >> $GITHUB_OUTPUT
|
||||||
|
echo "version_base=$NGINX_VERSION" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Get current versions from values.yaml
|
- name: Get current versions from values.yaml
|
||||||
id: current
|
id: current
|
||||||
@@ -158,24 +162,28 @@ jobs:
|
|||||||
# バックアップを作成
|
# バックアップを作成
|
||||||
cp values.yaml values.yaml.bak
|
cp values.yaml values.yaml.bak
|
||||||
|
|
||||||
# 現在のWordPressバージョンを取得(Chart.yamlの更新判定用)
|
# 共有変数から最新バージョンを取得
|
||||||
CURRENT_WP_VERSION=$(grep -A 1 'wordpress:' values.yaml | grep 'tag:' | sed 's/.*tag: "\([^-]*\).*/\1/')
|
WP_LATEST="${{ steps.wordpress.outputs.version }}"
|
||||||
NEW_WP_VERSION=$(echo "${{ steps.wordpress.outputs.version }}" | cut -d'-' -f1)
|
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/')
|
CURRENT_NGINX=$(grep -A 1 'nginx:' values.yaml | grep 'tag:' | sed 's/.*tag: "\(.*\)".*/\1/')
|
||||||
|
|
||||||
echo "Current versions:"
|
echo "Current versions:"
|
||||||
echo " WordPress: $CURRENT_WP_VERSION"
|
echo " WordPress: $CURRENT_WP_BASE"
|
||||||
echo " Nginx: $CURRENT_NGINX"
|
echo " Nginx: $CURRENT_NGINX"
|
||||||
echo "New versions:"
|
echo ""
|
||||||
echo " WordPress: $NEW_WP_VERSION"
|
echo "Latest versions:"
|
||||||
echo " Nginx: ${{ steps.nginx.outputs.version }}"
|
echo " WordPress: $WP_BASE ($WP_LATEST)"
|
||||||
|
echo " Nginx: $NGINX_LATEST"
|
||||||
|
|
||||||
# WordPressのtagを更新
|
# 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を更新
|
# 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 ""
|
echo ""
|
||||||
@@ -191,8 +199,8 @@ jobs:
|
|||||||
echo "Changes detected in values.yaml"
|
echo "Changes detected in values.yaml"
|
||||||
|
|
||||||
# WordPressバージョンが更新されたか判定(Chart.yaml更新の判定用)
|
# WordPressバージョンが更新されたか判定(Chart.yaml更新の判定用)
|
||||||
if [ "$CURRENT_WP_VERSION" != "$NEW_WP_VERSION" ]; then
|
if [ "$CURRENT_WP_BASE" != "$WP_BASE" ]; then
|
||||||
echo "WordPress version changed: $CURRENT_WP_VERSION -> $NEW_WP_VERSION"
|
echo "WordPress version changed: $CURRENT_WP_BASE -> $WP_BASE"
|
||||||
echo "chart_version_update_needed=true" >> $GITHUB_OUTPUT
|
echo "chart_version_update_needed=true" >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
echo "INFO: WordPress version unchanged - only other images updated"
|
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_CHART_VERSION=$(grep '^version:' Chart.yaml | awk '{print $2}')
|
||||||
CURRENT_APP_VERSION=$(grep '^appVersion:' Chart.yaml | awk '{print $2}' | tr -d '"')
|
CURRENT_APP_VERSION=$(grep '^appVersion:' Chart.yaml | awk '{print $2}' | tr -d '"')
|
||||||
|
|
||||||
# values.yamlの新しいWordPressバージョンを取得(imageタグから)
|
# 共有変数から最新のWordPressバージョン(ベース)を取得
|
||||||
NEW_WP_VERSION=$(grep -A 3 'wordpress:' values.yaml | grep 'tag:' | awk -F'"' '{print $2}' | cut -d'-' -f1)
|
NEW_WP_VERSION="${{ steps.wordpress.outputs.version_base }}"
|
||||||
|
|
||||||
# Chart.yamlはWordPressバージョンに合わせて更新(version と appVersion を同じにする)
|
# Chart.yamlはWordPressバージョンに合わせて更新(version と appVersion を同じにする)
|
||||||
NEW_CHART_VERSION="$NEW_WP_VERSION"
|
NEW_CHART_VERSION="$NEW_WP_VERSION"
|
||||||
|
|||||||
Reference in New Issue
Block a user