From 04265b92f4bcd9bd635736adf4b2c2ea7ab3515e Mon Sep 17 00:00:00 2001 From: Patrick Bertsch Date: Tue, 12 May 2026 23:46:51 -0600 Subject: [PATCH] =?UTF-8?q?ci:=20idempotent=20pub.dev=20publish=20?= =?UTF-8?q?=E2=80=94=20skip=20already-published=20versions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace reusable dart-lang/setup-dart publish workflow with inline steps that treat 'already exists' as success. This lets the workflow pass cleanly when only a subset of packages have new versions (e.g. v0.9.8 bumped probe_agent but not annotation/gen), and after manual publish catches up a skipped package. --- .github/workflows/publish-pub-dev.yml | 59 ++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/.github/workflows/publish-pub-dev.yml b/.github/workflows/publish-pub-dev.yml index e4c5eb9..675d44c 100644 --- a/.github/workflows/publish-pub-dev.yml +++ b/.github/workflows/publish-pub-dev.yml @@ -8,27 +8,64 @@ on: jobs: publish-agent: name: Publish flutter_probe_agent + runs-on: ubuntu-latest permissions: id-token: write - uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 - with: - working-directory: probe_agent + steps: + - uses: actions/checkout@v6 + - uses: dart-lang/setup-dart@v1 + - uses: flutter-actions/setup-flutter@v4 + with: + channel: stable + - run: dart pub get + working-directory: probe_agent + - run: dart pub publish --dry-run + working-directory: probe_agent + - name: Publish + working-directory: probe_agent + run: | + out=$(dart pub publish -f 2>&1); code=$? + echo "$out" + echo "$out" | grep -q "already exists" && exit 0 + exit $code publish-annotation: name: Publish flutter_probe_annotation + runs-on: ubuntu-latest permissions: id-token: write - uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 - with: - working-directory: probe_annotation + steps: + - uses: actions/checkout@v6 + - uses: dart-lang/setup-dart@v1 + - run: dart pub get + working-directory: probe_annotation + - run: dart pub publish --dry-run + working-directory: probe_annotation + - name: Publish + working-directory: probe_annotation + run: | + out=$(dart pub publish -f 2>&1); code=$? + echo "$out" + echo "$out" | grep -q "already exists" && exit 0 + exit $code publish-gen: name: Publish flutter_probe_gen - # Must publish AFTER flutter_probe_annotation so the dependency - # constraint (flutter_probe_annotation: ^0.9.3) resolves on pub.dev. needs: publish-annotation + runs-on: ubuntu-latest permissions: id-token: write - uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 - with: - working-directory: probe_gen + steps: + - uses: actions/checkout@v6 + - uses: dart-lang/setup-dart@v1 + - run: dart pub get + working-directory: probe_gen + - run: dart pub publish --dry-run + working-directory: probe_gen + - name: Publish + working-directory: probe_gen + run: | + out=$(dart pub publish -f 2>&1); code=$? + echo "$out" + echo "$out" | grep -q "already exists" && exit 0 + exit $code