Skip to content

Migrate to ecosystem health publish check and setup-dart publish workflow - #1123

Open
mosuem wants to merge 2 commits into
mainfrom
migrate-publish-workflow
Open

mosuem wants to merge 2 commits into
mainfrom
migrate-publish-workflow

Conversation

@mosuem

@mosuem mosuem commented Oct 31, 2026 •

Copy link
Copy Markdown
Member

Note

This PR was generated by an AI coding agent (Jetski) on behalf of @mosuem.

Migrates publishing validation and tag-triggered publishing to the split workflow architecture from dart-lang/ecosystem#454:

  • .github/workflows/health.yaml: Repin to dart-lang/ecosystem main (enabling the publish check) and include publish in fail_on.
  • .github/workflows/post_summaries.yaml: Pin to dart-lang/ecosystem main and remove Publish from workflow_run.workflows.
  • .github/workflows/publish_<pkg>.yaml: Remove .github/workflows/publish.yaml and add per-package tag-triggered publishing workflows (publish_intl.yaml, publish_intl4x.yaml, publish_intl_translation.yaml, publish_messages_shrinker.yaml) delegating to dart-lang/setup-dart/.github/workflows/publish.yml (use-flutter: false).

Important

dart-lang/i18n currently lists publish / validate as a required branch protection check on main. When merging this PR, update branch protection on main to replace publish / validate with health / publish / run publish health check.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported.

@github-actions github-actions Bot added the type-infra A repository infrastructure change or enhancement label Oct 31, 2026
@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

PR Health

Publish ✔️
  • 2 already published.
  • 2 WIP (no publish necessary).

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

This check can be disabled by tagging the PR with skip-publish-check.

Changelog Entry ✔️
Package Changed Files

Changes to files need to be accounted for in their respective changelogs.

This check can be disabled by tagging the PR with skip-changelog-check (for example, for non-user-visible changes when the package version is already at -wip).

Breaking changes ✔️
Package Change Current Version New Version Needed Version Looking good?
intl4x None 1.0.1 1.0.2-wip 1.0.2-wip ✔️
messages_shrinker Non-Breaking 0.2.1 0.2.2-wip 0.2.2-wip ✔️
intl_translation None 0.22.0 0.22.0 0.22.0 ✔️
intl None 0.20.3 0.20.3 0.20.3 ✔️

This check can be disabled by tagging the PR with skip-breaking-check.

API leaks ⚠️

The following packages contain symbols visible in the public API, but not exported by the library. Export these symbols or remove them from your publicly visible API.

Package Leaked API symbol Leaking sources
intl StringStack intl/date_format.dart::_DateFormatField::parse::input
intl/date_format.dart::_DateFormatField::parseLoose::input
intl/date_format.dart::_DateFormatField::parseLiteral::input
intl/date_format.dart::_DateFormatField::parseLiteralLoose::input
intl/date_format.dart::_DateFormatField::throwFormatException::stack
intl/number_parser_base.dart::NumberParserBase::input
intl/number_parser_base.dart::NumberParserBase::parseNumber::input
intl DateBuilder intl/date_format.dart::_DateFormatField::parse::dateFields
intl/date_format.dart::_DateFormatField::parseLoose::dateFields

This check can be disabled by tagging the PR with skip-leaking-check.

Unused Dependencies ⚠️
Package Status
intl
❗ Show Issues
Validating dependencies for intl...
Error parsing: ./lib/src/intl/compact_number_format.dart
Content produced diagnostics when parsed:
extraneous_modifier: Can't have modifier 'final' here. - 580:13
intl4x ✔️ All dependencies utilized correctly.
intl_translation ✔️ All dependencies utilized correctly.
messages_shrinker
❗ Show Issues
These packages are only used outside lib/ and should be downgraded to dev_dependencies:
* messages_builder
You do not need to depend on analyzer to run the Dart analyzer.
Instead, just run the dartanalyzer executable that is bundled with the Dart SDK.
These packages may be unused, or you may be using assets from these packages:
* analyzer

For details on how to fix these, see dependency_validator.

This check can be disabled by tagging the PR with skip-unused-dependencies-check.

License Headers ✔️
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
Files
no missing headers

All source files should start with a license header.

This check can be disabled by tagging the PR with skip-license-check.

Coverage ⚠️
File Coverage
pkgs/intl/benchmark/string_char_conversion_benchmark.dart 💔 Not covered
pkgs/intl/example/bin/example.dart 💔 Not covered
pkgs/intl/lib/date_symbol_data_custom.dart 💔 Not covered
pkgs/intl/lib/date_symbol_data_file.dart 💔 Not covered
pkgs/intl/lib/date_symbol_data_http_request.dart 💔 Not covered
pkgs/intl/lib/date_symbol_data_local.dart 💔 Not covered
pkgs/intl/lib/date_symbols.dart 💔 Not covered
pkgs/intl/lib/date_time_patterns.dart 💔 Not covered
pkgs/intl/lib/find_locale.dart 💔 Not covered
pkgs/intl/lib/intl.dart 💔 Not covered
pkgs/intl/lib/intl_browser.dart 💔 Not covered
pkgs/intl/lib/intl_default.dart 💔 Not covered
pkgs/intl/lib/intl_standalone.dart 💔 Not covered
pkgs/intl/lib/locale.dart 💔 Not covered
pkgs/intl/lib/message_format.dart 💔 Not covered
pkgs/intl/lib/message_lookup_by_library.dart 💔 Not covered
pkgs/intl/lib/number_symbols.dart 💔 Not covered
pkgs/intl/lib/number_symbols_data.dart 💔 Not covered
pkgs/intl/lib/src/data/dates/locale_list.dart 💔 Not covered
pkgs/intl/lib/src/date_format_internal.dart 💔 Not covered
pkgs/intl/lib/src/file_data_reader.dart 💔 Not covered
pkgs/intl/lib/src/global_state.dart 💔 Not covered
pkgs/intl/lib/src/http_request_data_reader.dart 💔 Not covered
pkgs/intl/lib/src/intl/bidi.dart 💔 Not covered
pkgs/intl/lib/src/intl/bidi_formatter.dart 💔 Not covered
pkgs/intl/lib/src/intl/compact_number_format.dart 💔 Not covered
pkgs/intl/lib/src/intl/constants.dart 💔 Not covered
pkgs/intl/lib/src/intl/date_builder.dart 💔 Not covered
pkgs/intl/lib/src/intl/date_computation.dart 💔 Not covered
pkgs/intl/lib/src/intl/date_format.dart 💔 Not covered
pkgs/intl/lib/src/intl/date_format_field.dart 💔 Not covered
pkgs/intl/lib/src/intl/micro_money.dart 💔 Not covered
pkgs/intl/lib/src/intl/number_format.dart 💔 Not covered
pkgs/intl/lib/src/intl/number_format_parser.dart 💔 Not covered
pkgs/intl/lib/src/intl/number_parser.dart 💔 Not covered
pkgs/intl/lib/src/intl/number_parser_base.dart 💔 Not covered
pkgs/intl/lib/src/intl/regexp.dart 💔 Not covered
pkgs/intl/lib/src/intl/string_stack.dart 💔 Not covered
pkgs/intl/lib/src/intl/text_direction.dart 💔 Not covered
pkgs/intl/lib/src/intl_default.dart 💔 Not covered
pkgs/intl/lib/src/intl_helpers.dart 💔 Not covered
pkgs/intl/lib/src/lazy_locale_data.dart 💔 Not covered
pkgs/intl/lib/src/locale.dart 💔 Not covered
pkgs/intl/lib/src/locale/locale_deprecations.dart 💔 Not covered
pkgs/intl/lib/src/locale/locale_extensions.dart 💔 Not covered
pkgs/intl/lib/src/locale/locale_implementation.dart 💔 Not covered
pkgs/intl/lib/src/locale/locale_parser.dart 💔 Not covered
pkgs/intl/lib/src/plural_rules.dart 💔 Not covered
pkgs/intl/lib/src/web.dart 💔 Not covered
pkgs/intl/tool/generate_locale_data_files.dart 💔 Not covered
pkgs/intl4x/example/docs/case_mapping.dart 💔 Not covered
pkgs/intl4x/example/docs/collation.dart 💔 Not covered
pkgs/intl4x/example/docs/datetime_format.dart 💔 Not covered
pkgs/intl4x/example/docs/display_names.dart 💔 Not covered
pkgs/intl4x/example/docs/list_format.dart 💔 Not covered
pkgs/intl4x/example/docs/number_format.dart 💔 Not covered
pkgs/intl4x/example/docs/plural_rules.dart 💔 Not covered
pkgs/intl4x/example/example.dart 💔 Not covered
pkgs/intl4x/lib/calendar.dart 💔 Not covered
pkgs/intl4x/lib/case_mapping.dart 💚 100 %
pkgs/intl4x/lib/collation.dart 💚 100 %
pkgs/intl4x/lib/datetime_format.dart 💔 Not covered
pkgs/intl4x/lib/display_names.dart 💔 Not covered
pkgs/intl4x/lib/list_format.dart 💚 100 %
pkgs/intl4x/lib/locale.dart 💔 Not covered
pkgs/intl4x/lib/number_format.dart 💔 Not covered
pkgs/intl4x/lib/plural_rules.dart 💔 Not covered
pkgs/intl4x/lib/src/case_mapping/case_mapping.dart 💚 100 %
pkgs/intl4x/lib/src/case_mapping/case_mapping_4x.dart 💚 100 %
pkgs/intl4x/lib/src/case_mapping/case_mapping_ecma.dart 💔 Not covered
pkgs/intl4x/lib/src/case_mapping/case_mapping_impl.dart 💚 100 %
pkgs/intl4x/lib/src/case_mapping/case_mapping_stub.dart 💔 0 % ⬇️ NaN %
pkgs/intl4x/lib/src/case_mapping/case_mapping_stub_4x.dart 💔 Not covered
pkgs/intl4x/lib/src/collation/collation.dart 💚 88 %
pkgs/intl4x/lib/src/collation/collation_4x.dart 💚 85 %
pkgs/intl4x/lib/src/collation/collation_ecma.dart 💔 Not covered
pkgs/intl4x/lib/src/collation/collation_impl.dart 💚 100 %
pkgs/intl4x/lib/src/collation/collation_options.dart 💚 100 %
pkgs/intl4x/lib/src/collation/collation_stub.dart 💔 0 % ⬇️ NaN %
pkgs/intl4x/lib/src/collation/collation_stub_4x.dart 💔 Not covered
pkgs/intl4x/lib/src/datetime_format/datetime_format.dart 💚 78 %
pkgs/intl4x/lib/src/datetime_format/datetime_format_ecma.dart 💔 Not covered
pkgs/intl4x/lib/src/datetime_format/datetime_format_impl.dart 💚 92 %
pkgs/intl4x/lib/src/datetime_format/datetime_format_options.dart 💚 40 %
pkgs/intl4x/lib/src/datetime_format/datetime_format_stub.dart 💔 0 % ⬇️ NaN %
pkgs/intl4x/lib/src/datetime_format/datetime_format_stub_4x.dart 💔 Not covered
pkgs/intl4x/lib/src/datetime_format/icu4x/date_formatter.dart 💚 93 %
pkgs/intl4x/lib/src/datetime_format/icu4x/date_time_formatter.dart 💚 100 %
pkgs/intl4x/lib/src/datetime_format/icu4x/datetime_format_4x.dart 💚 97 %
pkgs/intl4x/lib/src/datetime_format/icu4x/time_formatter.dart 💚 9 %
pkgs/intl4x/lib/src/display_names/display_names.dart 💚 80 %
pkgs/intl4x/lib/src/display_names/display_names_4x.dart 💚 95 %
pkgs/intl4x/lib/src/display_names/display_names_ecma.dart 💔 Not covered
pkgs/intl4x/lib/src/display_names/display_names_impl.dart 💚 100 %
pkgs/intl4x/lib/src/display_names/display_names_options.dart 💚 100 %
pkgs/intl4x/lib/src/display_names/display_names_stub.dart 💔 0 % ⬇️ NaN %
pkgs/intl4x/lib/src/display_names/display_names_stub_4x.dart 💔 Not covered
pkgs/intl4x/lib/src/ecma/ecma_native.dart 💚 100 %
pkgs/intl4x/lib/src/ecma/ecma_web.dart 💔 Not covered
pkgs/intl4x/lib/src/find_locale.dart 💔 Not covered
pkgs/intl4x/lib/src/first_day_of_week/first_day_of_week.dart 💚 100 %
pkgs/intl4x/lib/src/first_day_of_week/first_day_of_week_4x.dart 💚 100 %
pkgs/intl4x/lib/src/first_day_of_week/first_day_of_week_ecma.dart 💔 Not covered
pkgs/intl4x/lib/src/first_day_of_week/first_day_of_week_stub.dart 💔 0 % ⬇️ NaN %
pkgs/intl4x/lib/src/first_day_of_week/first_day_of_week_stub_4x.dart 💔 Not covered
pkgs/intl4x/lib/src/intl_browser.dart 💔 Not covered
pkgs/intl4x/lib/src/intl_standalone.dart 💔 0 % ⬇️ NaN %
pkgs/intl4x/lib/src/list_format/list_format.dart 💚 75 %
pkgs/intl4x/lib/src/list_format/list_format_4x.dart 💚 100 %
pkgs/intl4x/lib/src/list_format/list_format_ecma.dart 💔 Not covered
pkgs/intl4x/lib/src/list_format/list_format_impl.dart 💚 100 %
pkgs/intl4x/lib/src/list_format/list_format_options.dart 💚 100 %
pkgs/intl4x/lib/src/list_format/list_format_stub.dart 💔 0 % ⬇️ NaN %
pkgs/intl4x/lib/src/list_format/list_format_stub_4x.dart 💔 Not covered
pkgs/intl4x/lib/src/locale/locale.dart 💚 76 %
pkgs/intl4x/lib/src/locale/locale_4x.dart 💚 100 %
pkgs/intl4x/lib/src/locale/locale_ecma.dart 💔 Not covered
pkgs/intl4x/lib/src/number_format/number_format.dart 💚 30 %
pkgs/intl4x/lib/src/number_format/number_format_4x.dart 💚 91 %
pkgs/intl4x/lib/src/number_format/number_format_ecma.dart 💔 Not covered
pkgs/intl4x/lib/src/number_format/number_format_impl.dart 💚 100 %
pkgs/intl4x/lib/src/number_format/number_format_options.dart 💚 38 %
pkgs/intl4x/lib/src/number_format/number_format_stub.dart 💔 0 % ⬇️ NaN %
pkgs/intl4x/lib/src/number_format/number_format_stub_4x.dart 💔 Not covered
pkgs/intl4x/lib/src/options.dart 💚 100 %
pkgs/intl4x/lib/src/plural_rules/plural_rules.dart 💚 92 %
pkgs/intl4x/lib/src/plural_rules/plural_rules_4x.dart 💚 100 %
pkgs/intl4x/lib/src/plural_rules/plural_rules_ecma.dart 💔 Not covered
pkgs/intl4x/lib/src/plural_rules/plural_rules_impl.dart 💚 100 %
pkgs/intl4x/lib/src/plural_rules/plural_rules_options.dart 💚 100 %
pkgs/intl4x/lib/src/plural_rules/plural_rules_stub.dart 💔 0 % ⬇️ NaN %
pkgs/intl4x/lib/src/plural_rules/plural_rules_stub_4x.dart 💔 Not covered
pkgs/intl4x/lib/src/test_checker.dart 💚 100 %
pkgs/intl4x/lib/src/utils.dart 💚 100 %
pkgs/intl_translation/bin/extract_to_arb.dart 💔 Not covered
pkgs/intl_translation/bin/generate_from_arb.dart 💔 Not covered
pkgs/intl_translation/bin/make_examples_const.dart 💔 Not covered
pkgs/intl_translation/bin/rewrite_intl_messages.dart 💔 Not covered
pkgs/intl_translation/example/lib/example_messages.dart 💔 Not covered
pkgs/intl_translation/example/lib/generated/messages_all.dart 💔 Not covered
pkgs/intl_translation/example/lib/generated/messages_all_locales.dart 💔 Not covered
pkgs/intl_translation/example/lib/generated/messages_de.dart 💔 Not covered
pkgs/intl_translation/example/lib/generated/messages_de_CH.dart 💔 Not covered
pkgs/intl_translation/example/lib/generated/messages_en.dart 💔 Not covered
pkgs/intl_translation/example/lib/generated/messages_es.dart 💔 Not covered
pkgs/intl_translation/example/lib/generated/messages_iw.dart 💔 Not covered
pkgs/intl_translation/lib/extract_messages.dart 💚 82 %
pkgs/intl_translation/lib/generate_localized.dart 💔 Not covered
pkgs/intl_translation/lib/src/arb_generation.dart 💔 Not covered
pkgs/intl_translation/lib/src/directory_utils.dart 💔 Not covered
pkgs/intl_translation/lib/src/language_version.dart 💔 Not covered
pkgs/intl_translation/lib/src/message_parser.dart 💚 95 %
pkgs/intl_translation/lib/src/message_rewriter.dart 💚 18 %
pkgs/intl_translation/lib/src/messages/complex_message.dart 💚 100 %
pkgs/intl_translation/lib/src/messages/composite_message.dart 💚 42 %
pkgs/intl_translation/lib/src/messages/constant_evaluator.dart 💚 100 %
pkgs/intl_translation/lib/src/messages/literal_string_message.dart 💚 33 %
pkgs/intl_translation/lib/src/messages/main_message.dart 💚 52 %
pkgs/intl_translation/lib/src/messages/message.dart 💚 89 %
pkgs/intl_translation/lib/src/messages/message_extraction_exception.dart 💚 100 %
pkgs/intl_translation/lib/src/messages/pair_message.dart 💚 14 %
pkgs/intl_translation/lib/src/messages/submessages/gender.dart 💚 92 %
pkgs/intl_translation/lib/src/messages/submessages/plural.dart 💚 79 %
pkgs/intl_translation/lib/src/messages/submessages/select.dart 💚 66 %
pkgs/intl_translation/lib/src/messages/submessages/submessage.dart 💚 60 %
pkgs/intl_translation/lib/src/messages/variable_substitution_message.dart 💚 41 %
pkgs/intl_translation/lib/visitors/interpolation_visitor.dart 💚 90 %
pkgs/intl_translation/lib/visitors/message_finding_visitor.dart 💚 93 %
pkgs/intl_translation/lib/visitors/plural_gender_visitor.dart 💚 65 %
pkgs/messages_shrinker/bin/messages_shrinker.dart 💔 Not covered
pkgs/messages_shrinker/lib/messages_shrinker.dart 💚 90 %

This check for test coverage is informational (issues shown here will not fail the PR).

This check can be disabled by tagging the PR with skip-coverage-check.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type-infra A repository infrastructure change or enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant