Skip to content

ci: fix early exit and timing issues#2159

Merged
alandtse merged 3 commits into
community-shaders:devfrom
alandtse:semantic-release
Apr 20, 2026
Merged

ci: fix early exit and timing issues#2159
alandtse merged 3 commits into
community-shaders:devfrom
alandtse:semantic-release

Conversation

@alandtse
Copy link
Copy Markdown
Collaborator

@alandtse alandtse commented Apr 19, 2026

Summary by CodeRabbit

  • New Features
    • Added a reusable, tag-triggered upload job to forward build artifacts to the external mod host (invoked with a computed release tag; dry-run enabled by default).
  • Bug Fixes
    • Validation prevents pre-release (hyphenated) tags from being uploaded.
  • Chores
    • Simplified release workflow inputs/outputs, removed an interactive dry-run input and write permission, and removed an older dispatch/upload handoff.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 19, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 8ebf4e03-155d-4dbc-a5e7-1ba257fa0454

📥 Commits

Reviewing files that changed from the base of the PR and between 7a970fb and 4e76acc.

📒 Files selected for processing (1)
  • .github/workflows/build.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/build.yaml

📝 Walkthrough

Walkthrough

Build workflow now exposes the computed release tag and adds a nexus-upload job that invokes a new reusable upload workflow. The release workflow is simplified (removed dry_run input, permissions, outputs, and a dispatch job). upload-nexus.yaml becomes a callable workflow with inputs, secrets, and tag validation that rejects hyphenated (pre-release) tags.

Changes

Cohort / File(s) Summary
Build workflow
.github/workflows/build.yaml
Adds jobs.release.outputs.release_tag mapped from steps.combined_notes.outputs.release_tag; gives Create or Update Release step an id: create_release; adds nexus-upload job that calls the reusable upload-nexus.yaml using needs.release.outputs.release_tag, restricts artifact pattern to CommunityShaders-*.7z, enables dry-run and forwards Nexus secrets.
Release workflow
.github/workflows/release.yaml
Removes workflow_dispatch.inputs.dry_run, removes permissions.actions: write, deletes jobs.release outputs (new_release_published, new_release_version), removes downstream dispatch-upload job, and removes --ci flag from tools/feature_version_audit.py invocation.
Reusable upload workflow
.github/workflows/upload-nexus.yaml
Converts to on: workflow_call with inputs (tag, nexus_game_id, nexus_mod_id, artifact_pattern, mod_filename, dry_run, changelog) and optional secrets (UNEX_NEXUSMODS_SESSION_COOKIE, UNEX_APIKEY); internal references switched from github.event.inputs.* to inputs.*; adds validation to error if tag contains a hyphen (blocks pre-release uploads).

Sequence Diagram(s)

sequenceDiagram
    participant Build as Build (build.yaml)
    participant Release as Release (release job)
    participant Upload as Upload (upload-nexus.yaml)
    participant Nexus as Nexus

    Build->>Release: run release job -> compute release_tag
    Release-->>Build: expose outputs.release_tag
    Build->>Upload: workflow_call(tag: release_tag, artifact_pattern, dry_run, secrets)
    Upload->>Upload: validate tag (error if contains "-")
    Upload->>Nexus: upload artifact(s) (dry_run or real) with provided secrets
    Nexus-->>Upload: upload result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested reviewers

  • jiayev
  • doodlum

Poem

🐰 I hopped through tags and workflows bright,

Reused a call and checked the light.
No hyphens here — I thumped my paw,
Artifacts queued without a flaw. ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The PR title 'ci: fix early exit and timing issues' is vague and does not clearly describe the main changes, which involve restructuring CI workflows to move upload functionality from release.yaml to build.yaml and converting upload-nexus.yaml to a reusable workflow. Consider a more specific title such as 'ci: refactor release workflow to use reusable upload workflow' or 'ci: move nexus upload to build workflow and make upload-nexus reusable' to better convey the primary architectural change.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 actionlint (1.7.12)
.github/workflows/build.yaml

could not read ".github/workflows/build.yaml": open .github/workflows/build.yaml: no such file or directory

🔧 YAMLlint (1.38.0)
.github/workflows/build.yaml

[Errno 2] No such file or directory: '.github/workflows/build.yaml'

🔧 Checkov (3.2.519)
.github/workflows/build.yaml

2026-04-20 23:11:22,082 [MainThread ] [ERROR] Template file not found: .github/workflows/build.yaml
2026-04-20 23:11:22,090 [MainThread ] [ERROR] Template file not found: .github/workflows/build.yaml
2026-04-20 23:11:22,121 [MainThread ] [ERROR] Template file not found: .github/workflows/build.yaml
2026-04-20 23:11:22,141 [MainThread ] [ERROR] Failed to invoke function /usr/local/lib/python3.11/dist-packages/checkov/common/runners/object_runner. with .github/workflows/build.yaml
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/checkov/common/parallelizer/parallel_runner.py", line 88, in func_wrapper
result = original_func(item)
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/checkov/common/runners/object_runner.py", line 74, in
results = parallel_runner.run_function(lambda f: (f, self._parse_file(f)), files_to_load)
^^^^^^^^^^^^^^^

... [truncated 9062 characters] ...

2] No such file or directory: '.github/workflows/build.yaml'
2026-04-20 23:11:22,177 [MainThread ] [ERROR] Exception traceback:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/checkov/main.py", line 647, in run
self.scan_reports = runner_registry.run(
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/checkov/common/runners/runner_registry.py", line 177, in run
for result in parallel_runner_results:
File "/usr/local/lib/python3.11/dist-packages/checkov/common/parallelizer/parallel_runner.py", line 118, in _run_function_multiprocess_fork
raise v.internal_exception.with_traceback(v.internal_exception.traceback)
FileNotFoundError: [Errno 2] No such file or directory: '.github/workflows/build.yaml'


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

No actionable suggestions for changed features.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/build.yaml:
- Around line 615-621: nexus-upload is being skipped when the upstream release
job is skipped; modify the job's if condition so it runs regardless of upstream
skip by prefixing the existing condition with always(), i.e. update the
nexus-upload job's if (the line currently containing "if: startsWith(github.ref,
'refs/tags/v') && !contains(github.ref_name, '-' )") to include always() so the
job will execute even when needs: release is skipped.

In @.github/workflows/upload-nexus.yaml:
- Around line 46-49: The artifact_pattern default in upload-nexus.yaml is
incorrect (uses "CommunityShaders-*.7z") which doesn't match produced assets
named "CommunityShaders_AIO-*.7z"; fix by either updating the caller build.yaml
to pass artifact_pattern: "CommunityShaders_AIO-*.7z" when invoking the
upload-nexus.yaml workflow, or change the default value of the artifact_pattern
input in upload-nexus.yaml to "CommunityShaders_AIO-*.7z" so the artifact
selection step (the artifact_pattern input used in the upload logic) matches the
real files.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 172703e8-0fe6-4e9f-b7f6-1d11d07a5834

📥 Commits

Reviewing files that changed from the base of the PR and between f2fd2a3 and c4f11ac.

📒 Files selected for processing (3)
  • .github/workflows/build.yaml
  • .github/workflows/release.yaml
  • .github/workflows/upload-nexus.yaml
💤 Files with no reviewable changes (1)
  • .github/workflows/release.yaml

Comment thread .github/workflows/build.yaml
Comment thread .github/workflows/upload-nexus.yaml
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 19, 2026

✅ A pre-release build is available for this PR:
Download

@alandtse alandtse merged commit 89b38e6 into community-shaders:dev Apr 20, 2026
17 checks passed
ParticleTroned pushed a commit to ParticleTroned/skyrim-community-shaders that referenced this pull request May 2, 2026
IgorAlanAlbuquerque pushed a commit to IgorAlanAlbuquerque/skyrim-community-shaders that referenced this pull request May 29, 2026
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.

3 participants