fix(rust): remove deprecated set-output GitHub Actions command#27
fix(rust): remove deprecated set-output GitHub Actions command#27
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: #26
Replace deprecated `::set-output` command with plain console.log for visibility. The script already writes to GITHUB_OUTPUT file which is the recommended approach. Fixes #26 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add detailed case study analysis including: - Problem description and root cause analysis - CI log evidence of the deprecation warnings - Research on GitHub Actions set-output deprecation - Timeline of events and impact assessment - Proposed solution and testing strategy Also adds test script in experiments/ folder to verify the fix. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
CLAUDE.md was used for task setup and is no longer needed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
|
https://github.com/link-foundation/lino-env/actions/runs/20790260825/job/59710513024#step:3:28, changelog fragment check should be never a warning, it must be an error, so it will be impossible to skip it if the source code in rust is changed. |
|
🤖 AI Work Session Started Starting automated work session at 2026-01-07T17:41:43.603Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait working session to finish, and provide your feedback. |
Change the changelog fragment check from a warning to an error. When Rust source code changes without a corresponding changelog entry, the CI will now fail instead of just showing a warning and passing. Also adds a changelog fragment for all changes in this PR. Addresses feedback from PR #27 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changes MadeAddressed the feedback to enforce changelog fragment requirements: Changelog Fragment Check Now Fails CIChanged the changelog fragment check in
This ensures that when Rust source code ( Added Changelog FragmentAdded
CI ResultsAll checks are passing:
The PR is ready for review. 🤖 Generated with Claude Code |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
🔄 Auto-restart 1/3Detected uncommitted changes from previous run. Starting new session to review and commit them. Uncommitted files: Auto-restart will stop after changes are committed or after 2 more iterations. Please wait until working session will end and give your feedback. |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
This commit applies best practices discovered in link-foundation repositories (start, lino-env) to improve the Rust CI/CD pipeline. Changes: - Fix deprecated ::set-output GitHub Actions command in version-and-commit.mjs - Change changelog fragment check from warning to error (exit 1) - Add always() && !cancelled() to job conditions to fix workflow_dispatch skipping - Add release_mode input with "instant" and "changelog-pr" options - Add crates.io publishing support to auto-release and manual-release jobs - Add --tag-prefix and --crates-io-url options to create-github-release.mjs - Add comprehensive case study documentation in docs/case-studies/issue-11/ References: - link-foundation/start#58 - link-foundation/lino-env#27 - link-foundation/lino-env#25 - link-foundation/lino-env#23 Fixes #11 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
Fixes the deprecation warnings in CI/CD and enforces changelog fragment requirements.
Problem
Set-output deprecation: The CI/CD pipeline was generating 2 deprecation warnings during the "Instant Release" job:
Changelog check too lenient: The changelog fragment check only produced a warning when source code changed without a changelog entry, allowing PRs to pass without proper documentation.
Solutions
Fix 1: Remove deprecated
set-outputcommandRoot Cause: The
setOutputfunction inrust/scripts/version-and-commit.mjswas using both:GITHUB_OUTPUTenvironment file approach (correct)::set-outputstdout command (causes warnings)Solution: Removed the deprecated
console.log(::set-output name=${key}::${value})line and replaced it with a plainconsole.log(Output: ${key}=${value})for visibility.Fix 2: Enforce changelog fragment requirement
Root Cause: The changelog fragment check in
.github/workflows/rust.ymlused::warning::andexit 0, so it would only warn but still pass CI even when source code changed without a changelog entry.Solution: Changed
::warning::to::error::andexit 0toexit 1so that CI fails when Rust source code (src/,tests/,scripts/,Cargo.toml) is changed without a changelog fragment.Changes
rust/scripts/version-and-commit.mjs: Remove deprecatedset-outputcommand.github/workflows/rust.yml: Enforce changelog fragment requirement as error instead of warningrust/changelog.d/: Add changelog fragment for this PRdocs/case-studies/issue-26/: Add case study documentation with CI logs and analysisexperiments/test-setOutput.mjs: Add test script to verify the fixTest Plan
::set-outputcommandjs/scripts/version-and-commit.mjs) which was already correctly implementedReferences
Fixes #26
🤖 Generated with Claude Code