Skip to content

CI: add job to automate crate version bumping PR #8365

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

daywalker90
Copy link
Collaborator

I want these to go out faster after a CLN release so here's a github action that will automatically create a PR (like daywalker90#20) to bump crate versions very similar to the python action. It works for rc, major and minor releases. Merging that PR will trigger the other action to publish them.

Please check that the Workflow permissions under "Settings->Actions->General" are "Read and Write Permissions" aswell as "Allow GitHub Actions to create and approve pull requests".

For this i had to centralize the version management of the affected crates.

@ShahanaFarooqui
Copy link
Collaborator

As per my last discussion with Christian, the project's current preference is to manually update these crate versions whenever needed.

@cdecker, could you please elaborate your reason for posterity? Or if you would like to reconsider, I can proceed with reviewing the PR.

@daywalker90
Copy link
Collaborator Author

Keep in mind that this will only automatically create a PR to bump versions, not push to master directly.

@ShahanaFarooqui ShahanaFarooqui modified the milestones: v25.09, v25.12 Aug 6, 2025
@ShahanaFarooqui ShahanaFarooqui requested review from cdecker and removed request for cdecker August 7, 2025 14:06
@cdecker
Copy link
Member

cdecker commented Aug 8, 2025

Thanks @daywalker90 for this PR, I have not been consistent publishing the crates, sorry for that, and automation is the way to address is, so thanks for taking the initiative.

While working with the python bindings we discovered that there is an implicit coupling between pyln and CLN versions, which was ultimately detrimental, since plugins and apps could inadvertently end up being incompatible, because they were pinning a specific client library version.

With the introdiuction of the crates we rethought things a bit, also because the tighter typing made some things we got away in python no longer possible. So we decided we'd decouple the crate versions from the CLN version, and maintain an explicit compatibility tracking, through the version annotations, for when fields and methods were introduced and removed. While we haven't yet drawn up the compatibility matrix, you'll notice that the cln- crates are compatible with 22.11 upwards, and as we move the compat window forward, old versions will fall out and new ones will be added.

So the rust crates, and likely the pyln packages eventually too, should be released often, have their own versioning scheme, that does not imply a one-to-one mapping between client library and node version.

I think your PR is perfect, I would just change the trigger: a rust crate xyz should be released when a new tag xyz-vA.B.C is published to the repo. This allows us to signal releases via tags, we can tag CLN releases with their respective library releases too if they coincide. There is also tooling (cargo-semver-checks) to determine what kind of version bump it should be based on API changes being detected, and that could wire nicely into this too (tag a commit, action determines what type of change it is, and then kicks off the minor, major or path release by tagging).

@daywalker90
Copy link
Collaborator Author

daywalker90 commented Aug 8, 2025

cargo-semver-checks seems to be more for human readable analysis, i would have to yolo grep some output here:

cargo semver-checks -p cln-rpc
    Building cln-rpc v0.4.0 (current)
       Built [   2.908s] (current)
     Parsing cln-rpc v0.4.0 (current)
      Parsed [   0.087s] (current)
     Parsing cln-rpc v0.4.0 (baseline, cached)
      Parsed [   0.060s] (baseline)
    Checking cln-rpc v0.4.0 -> v0.4.0 (no change; assume minor)
     Checked [   0.103s] 140 checks: 136 pass, 4 fail, 0 warn, 37 skip

--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.42.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field ListhtlcsHtlcs.created_index in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:8731
  field ListhtlcsHtlcs.updated_index in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:8733
  field AskrenebiaschannelRequest.relative in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:4609
  field ListhtlcsRequest.index in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:2965
  field ListhtlcsRequest.limit in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:2967
  field ListhtlcsRequest.start in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:2969
  field ListpeerchannelsRequest.short_channel_id in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:1996
  field SendonionRequest.total_amount_msat in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:1359
  field WaitResponse.forwards in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:10000
  field WaitResponse.htlcs in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:10002
  field WaitResponse.invoices in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:10004
  field WaitResponse.sendpays in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:10006

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.42.0/src/lints/enum_variant_added.ron

Failed in:
  variant Response:SignMessageWithKey in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:364
  variant Response:SignMessageWithKey in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:364
  variant WaitSubsystem:HTLCS in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:9963
  variant Request:SignMessageWithKey in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:188
  variant Request:SignMessageWithKey in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:188
  variant WaitSubsystem:HTLCS in /media/addonssd/dev/lightning/cln-rpc/src/model.rs:3792

--- failure struct_missing: pub struct removed or renamed ---

Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.42.0/src/lints/struct_missing.ron

Failed in:
  struct cln_rpc::model::responses::ListconfigsPluginsOptions, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:9653
  struct cln_rpc::model::responses::ListconfigsImportantpluginsOptions, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:9641
  struct cln_rpc::model::responses::ListconfigsPlugins, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:9657
  struct cln_rpc::model::responses::ListconfigsImportantplugins, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:9645
  struct cln_rpc::model::responses::ListconfigsConfigsAccepthtlctlvtypes, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:9683

--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---

Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.42.0/src/lints/struct_pub_field_missing.ron

Failed in:
  field accept_htlc_tlv_types of struct ListconfigsConfigs, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10174
  field accept_htlc_tlv_types of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10365
  field allow_deprecated_apis of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10369
  field always_use_proxy of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10373
  field announce_addr of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10377
  field announce_addr_discovered of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10381
  field announce_addr_discovered_port of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10385
  field announce_addr_dns of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10389
  field bind_addr of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10393
  field bookkeeper_db of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10397
  field bookkeeper_dir of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10401
  field cltv_delta of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10405
  field cltv_final of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10409
  field commit_fee of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10413
  field commit_time of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10417
  field database_upgrade of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10421
  field dev_allowdustreserve of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10425
  field disable_dns of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10429
  field encrypted_hsm of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10433
  field experimental_dual_fund of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10437
  field experimental_offers of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10441
  field experimental_onion_messages of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10445
  field experimental_peer_storage of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10449
  field experimental_quiesce of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10453
  field experimental_shutdown_wrong_funding of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10457
  field experimental_splicing of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10461
  field experimental_upgrade_protocol of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10465
  field fee_base of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10469
  field fee_per_satoshi of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10473
  field fetchinvoice_noconnect of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10477
  field force_feerates of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10481
  field funding_confirms of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10485
  field htlc_maximum_msat of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10489
  field htlc_minimum_msat of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10493
  field ignore_fee_limits of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10497
  field large_channels of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10501
  field lightning_dir of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10505
  field log_file of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10509
  field log_level of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10513
  field log_prefix of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10517
  field log_timestamps of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10521
  field max_concurrent_htlcs of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10525
  field max_dust_htlc_exposure_msat of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10529
  field max_locktime_blocks of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10533
  field min_capacity_sat of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10537
  field pid_file of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10541
  field require_confirmed_inputs of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10545
  field rpc_file of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10549
  field rpc_file_mode of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10553
  field tor_service_password of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10557
  field watchtime_blocks of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10561
  field addr of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10564
  field alias of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10567
  field autolisten of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10570
  field conf of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10573
  field daemon of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10576
  field network of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10579
  field offline of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10582
  field proxy of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10585
  field rescan of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10588
  field rgb of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10591
  field subdaemon of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10594
  field wallet of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10597
  field disable_plugin of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10600
  field important_plugins of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10603
  field plugins of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10606
  field autoconnect_seeker_peers of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10609
  field commit_feerate_offset of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10612
  field invoices_onchain_fallback of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10615
  field min_emergency_msat of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10618
  field developer of struct ListconfigsResponse, previously in file /home/nodeb4u/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cln-rpc-0.4.0/src/model.rs:10622

     Summary semver requires new major version: 4 major and 0 minor checks failed
    Finished [   3.756s] cln-rpc

a rust crate xyz should be released when a new tag xyz-vA.B.C is published to the repo. This allows us to signal releases via tags, we can tag CLN releases with their respective library releases too if they coincide. There is also tooling (cargo-semver-checks) to determine what kind of version bump it should be

I'm not sure i understand: do you intend to tag a version like "cln-rpc-v0.5.0" and then let the CI job change that version to what it thinks is correct? That seems weird if it then releases v0.4.2 instead.

@daywalker90
Copy link
Collaborator Author

For now i changed the ci job to allow for fine-grained selection of the specific crate and version part you want to bump via the workflow_dispatch (manually running the ci job) method.
Also it no longer triggers on CLN release tags but on specific tags like cln-plugin-v0.5.0 where it will bump that crate to that specific version.

@cdecker
Copy link
Member

cdecker commented Aug 11, 2025

Ok, maybe we're going too fancy with the tag trigger. I guess workflow dispatches allows us to specify some parameters? So we could make this a manually triggered only thing, and we specify the version number we expect this to become, then cargo semver-checks can tell us "yay" or "nay" (if we have a breaking change, therefore the proposed release number is disallowed) and then run through the publication steps. That'd be easier than coming up with some magic incantation we need to remember, and we can schedule todos to tell us to publish ^^

@cdecker
Copy link
Member

cdecker commented Aug 11, 2025

Sorry for bringing this up this late, but I just stumbled over https://axodotdev.github.io/cargo-dist/book/introduction.html and I wonder if there could be some parts of the workflow yaml that could be subsumed by it.

@daywalker90
Copy link
Collaborator Author

Ok i overall simplified the action and removed the tag trigger and simplified the workflow trigger by using semver-checks with --release-type that way i can just check for simple exit codes to determine the necessary version bump. Since we have not released "major" versions for the crates yet i made it so both minor and major violations of semver bump our minor version which in cargo is a major upgrade when it's a v0.x. I also pinned the rust and cargo tools version again so for now it won't bump the Cargo.lock version to 4 (i really want to raise the MSRV to 1.84 so we can use rust-version and the fallback setting for the resolver).

Sorry for bringing this up this late, but I just stumbled over https://axodotdev.github.io/cargo-dist/book/introduction.html and I wonder if there could be some parts of the workflow yaml that could be subsumed by it.

This seems more for github releases i think (i could use this for my plugins).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants