diff --git a/.gitea/workflows/image-update-and-release.yaml b/.gitea/workflows/image-update-and-release.yaml index f34e991..0162ded 100644 --- a/.gitea/workflows/image-update-and-release.yaml +++ b/.gitea/workflows/image-update-and-release.yaml @@ -315,7 +315,23 @@ jobs: # パッケージファイルをコミット git add ./packages/*.tgz ./packages/index.yaml git commit -m "chore: Add Helm package for version ${{ steps.increment.outputs.new_chart_version }}" || echo "No package changes to commit" - git push origin main || echo "Failed to push packages (this may be expected)" + + # パッケージのプッシュをリトライ機構付きで実行 + MAX_RETRIES=3 + RETRY_COUNT=0 + until git push origin main || [ $RETRY_COUNT -eq $MAX_RETRIES ]; do + RETRY_COUNT=$((RETRY_COUNT+1)) + echo "Push failed, retrying ($RETRY_COUNT/$MAX_RETRIES)..." + sleep 5 + git pull --rebase origin main + done + + if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then + echo "ERROR: Failed to push Helm packages after $MAX_RETRIES attempts" + exit 1 + fi + + echo "Successfully pushed Helm packages" - name: Create release tag if: steps.update_values.outputs.chart_version_update_needed == 'true' @@ -323,18 +339,38 @@ jobs: # リリースタグを作成(Chart.yaml更新時のみ) TAG_NAME="v${{ steps.increment.outputs.new_chart_version }}" - cat << EOF > /tmp/tag_msg.txt + # タグが既に存在するか確認 + if git rev-parse "$TAG_NAME" >/dev/null 2>&1; then + echo "INFO: Tag $TAG_NAME already exists locally" + else + # タグメッセージを作成 + cat << EOF > /tmp/tag_msg.txt Release $TAG_NAME ${{ steps.check.outputs.changes }} Chart version: ${{ steps.increment.outputs.new_chart_version }} EOF - git tag -a "$TAG_NAME" -F /tmp/tag_msg.txt - if ! git push origin "$TAG_NAME"; then - echo "WARNING: Failed to push tag (may already exist or network issue)" + git tag -a "$TAG_NAME" -F /tmp/tag_msg.txt + echo "Created tag: $TAG_NAME" fi + # タグをプッシュ(リトライ付き) + MAX_RETRIES=3 + RETRY_COUNT=0 + until git push origin "$TAG_NAME" 2>/dev/null || [ $RETRY_COUNT -eq $MAX_RETRIES ]; do + RETRY_COUNT=$((RETRY_COUNT+1)) + echo "Tag push failed, retrying ($RETRY_COUNT/$MAX_RETRIES)..." + sleep 5 + done + + if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then + echo "ERROR: Failed to push tag $TAG_NAME after $MAX_RETRIES attempts" + exit 1 + fi + + echo "Successfully pushed tag: $TAG_NAME" + - name: Summary if: always() run: |