refactor: Use shared variables for Docker version management
Some checks failed
Helm Chart Release / release-chart (push) Successful in 12s
Update Docker Images and Helm Chart / update (push) Failing after 16s

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:
2026-02-12 09:34:07 +09:00
parent 0a1f08aa79
commit 71278b4036

View File

@@ -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"