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: |
|
run: |
|
||||||
# Docker Hubから最新のWordPress FPM Alpineバージョンを取得(PHPバージョンも最新)
|
# Docker Hubから最新のWordPress FPM Alpineバージョンを取得(PHPバージョンも最新)
|
||||||
echo "Fetching WordPress FPM Alpine versions..."
|
echo "Fetching WordPress FPM Alpine versions..."
|
||||||
|
|
||||||
# fpm-alpineタグを取得(全PHPバージョン対象)
|
# fpm-alpineタグを取得(全PHPバージョン対象)
|
||||||
LATEST_VERSION=$(curl -s "https://hub.docker.com/v2/repositories/library/wordpress/tags?page_size=100&name=fpm-alpine" | \
|
LATEST_VERSION=$(curl -s "https://hub.docker.com/v2/repositories/library/wordpress/tags?page_size=100&name=fpm-alpine" | \
|
||||||
jq -r '.results[].name' | \
|
jq -r '.results[].name' | \
|
||||||
@@ -39,7 +39,7 @@ jobs:
|
|||||||
grep -v 'alpha' | \
|
grep -v 'alpha' | \
|
||||||
sort -t- -k1,1V -k2,2V | \
|
sort -t- -k1,1V -k2,2V | \
|
||||||
tail -n 1)
|
tail -n 1)
|
||||||
|
|
||||||
if [ -z "$LATEST_VERSION" ]; then
|
if [ -z "$LATEST_VERSION" ]; then
|
||||||
echo "Failed to fetch from first method, trying alternative..."
|
echo "Failed to fetch from first method, trying alternative..."
|
||||||
# 代替方法: すべてのfpm-alpineタグを取得
|
# 代替方法: すべてのfpm-alpineタグを取得
|
||||||
@@ -52,29 +52,31 @@ jobs:
|
|||||||
sort -t- -k1,1V -k2,2V | \
|
sort -t- -k1,1V -k2,2V | \
|
||||||
tail -n 1)
|
tail -n 1)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$LATEST_VERSION" ]; then
|
if [ -z "$LATEST_VERSION" ]; then
|
||||||
echo "ERROR: Failed to fetch WordPress version"
|
echo "ERROR: Failed to fetch WordPress version"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "WordPress latest version: $LATEST_VERSION"
|
echo "WordPress latest version: $LATEST_VERSION"
|
||||||
|
|
||||||
# バージョン情報を分解して表示
|
# バージョン情報を分解して表示
|
||||||
WP_VERSION=$(echo $LATEST_VERSION | cut -d'-' -f1)
|
WP_VERSION=$(echo $LATEST_VERSION | cut -d'-' -f1)
|
||||||
PHP_VERSION=$(echo $LATEST_VERSION | cut -d'-' -f2)
|
PHP_VERSION=$(echo $LATEST_VERSION | cut -d'-' -f2)
|
||||||
echo " WordPress: $WP_VERSION"
|
echo " WordPress: $WP_VERSION"
|
||||||
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
|
||||||
run: |
|
run: |
|
||||||
# Docker Hubから最新のNginx Alpine Perlバージョンを取得
|
# Docker Hubから最新のNginx Alpine Perlバージョンを取得
|
||||||
echo "Fetching Nginx Alpine Perl versions..."
|
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" | \
|
LATEST_VERSION=$(curl -s "https://hub.docker.com/v2/repositories/library/nginx/tags?page_size=100&name=alpine-perl" | \
|
||||||
jq -r '.results[].name' | \
|
jq -r '.results[].name' | \
|
||||||
grep -E '^[0-9]+\.[0-9]+\.[0-9]+-alpine-perl$' | \
|
grep -E '^[0-9]+\.[0-9]+\.[0-9]+-alpine-perl$' | \
|
||||||
@@ -83,7 +85,7 @@ jobs:
|
|||||||
grep -v 'alpha' | \
|
grep -v 'alpha' | \
|
||||||
sort -V | \
|
sort -V | \
|
||||||
tail -n 1)
|
tail -n 1)
|
||||||
|
|
||||||
if [ -z "$LATEST_VERSION" ]; then
|
if [ -z "$LATEST_VERSION" ]; then
|
||||||
echo "Failed to fetch from first method, trying alternative..."
|
echo "Failed to fetch from first method, trying alternative..."
|
||||||
# 代替方法: alpine-perlタグを別の方法で検索
|
# 代替方法: alpine-perlタグを別の方法で検索
|
||||||
@@ -97,20 +99,22 @@ jobs:
|
|||||||
sort -V | \
|
sort -V | \
|
||||||
tail -n 1)
|
tail -n 1)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$LATEST_VERSION" ]; then
|
if [ -z "$LATEST_VERSION" ]; then
|
||||||
echo "ERROR: Failed to fetch Nginx version"
|
echo "ERROR: Failed to fetch Nginx version"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Nginx latest version: $LATEST_VERSION"
|
echo "Nginx latest version: $LATEST_VERSION"
|
||||||
|
|
||||||
# バージョン情報を表示
|
# バージョン情報を表示
|
||||||
NGINX_VERSION=$(echo $LATEST_VERSION | cut -d'-' -f1)
|
NGINX_VERSION=$(echo $LATEST_VERSION | cut -d'-' -f1)
|
||||||
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