Skip to content

playground-preview-publish: ci-artifacts リリースを pre-release として作成したい #103

Description

@fumikito

概要

playground-preview-publish.yml で利用している WordPress/action-wp-playground-pr-previewexpose-artifact-on-public-url アクションが、ci-artifacts リリースを 通常リリース(prerelease: false)として作成します。

これにより以下の問題が起きます。

  1. release-drafter の baseline 判定が乱れる。release-drafter (v6+) はデフォルトで include-pre-releases: false なので、prerelease マークが付いていれば無視されるが、現状は付かない。タイミングによっては ci-artifacts が「最新の非prerelease リリース」になり、次バージョンの算出が壊れる懸念がある。
  2. WordPress.org への自動デプロイワークフロー(on: release: { types: [published] })が誤発火する。プラグイン側で production environment の tag policy (*.*.*) でガードすれば実害は止まるが、ガードがない/弱いリポジトリでは事故りうる。
  3. Releases 一覧に通常リリースと混在して見え、視認性が悪い。Playground 用の中間アーティファクトであり、ユーザー向けリリースではない。

既存の挙動

参考: WordPress/action-wp-playground-pr-preview 内の作成ロジック

```bash
gh release create "$RELEASE_TAG" \
--repo "$release_repo" \
--draft \
--notes "Automated release for WordPress Playground CI artifacts"
```

--prerelease フラグなし。手動で publish したあと、メンテナが UI でチェックを入れない限り通常リリース扱いになります。

提案

tarosky/workflows/.github/workflows/playground-preview-publish.yml の publish ジョブで、アセットアップロード後に下記を追加し、ci-artifacts強制的に pre-release マーク する:

```yaml

  • name: Ensure ci-artifacts release is pre-release
    if: steps.metadata.outputs.found == 'true'
    shell: bash
    env:
    GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    run: |
    gh release edit ci-artifacts --prerelease --repo "$GITHUB_REPOSITORY" || true
    ```

メリット:

  • 既存のアクション (WordPress/action-wp-playground-pr-preview) を変更せず、tarosky/workflows 側だけで完結
  • gh release upload --clobber でアセット更新しても prerelease フラグは保持される一回限りの設定
  • upstream に PR を送るより速い

長期的には WordPress/action-wp-playground-pr-preview 側に prerelease 入力オプションを足してもらうのが本筋ですが、当面はラッパー側で吸収するのが現実的だと考えます。

発見した経緯

hametuha/hamail で Playground プレビューを導入したところ (hametuha/hamail#83)、ci-artifacts が通常リリースとして残り、release-drafter とdeploy ワークフローを混乱させかねない状態だったため。プラグイン側では deploy.yml に明示的なガードを追加して回避 (hametuha/hamail#85) しましたが、共通ワークフロー側で吸収できるはずなので報告します。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions