-
Notifications
You must be signed in to change notification settings - Fork 15
Sync from ProjectTemplate: enriched docker-readme, merge gate, LF pins #764
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
Merged
Merged
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
a00e15f
Sync from ProjectTemplate: enriched docker-readme, merge gate, LF pins
ptr727 92c0eda
Conform to fleet: carry CODESTYLE whole, CRLF workflows, LF README.m4
ptr727 bfc1471
Carry caller-gated build-datebadge; fix SC2086 and drift
ptr727 987f90e
Re-carry self-contained CODESTYLE and contract-fixed release/docker-r…
ptr727 a2bda3b
Grant actions: read on docker-readme caller for transform-artifact
ptr727 c19aff8
Re-carry portable CODESTYLE and guarded docker-readme checkout
ptr727 98c719d
Re-carry AGENTS contract sections verbatim from template
ptr727 8ed3d24
Converge CODESTYLE carry-note to carry-whole (drop 'droppable section…
ptr727 d873e03
Add terminal cleanup-artifacts job to publish-release
ptr727 7e9e2f3
Converge merge-bot to template shape; fix the AGENTS description
ptr727 c97e431
ASCII-ify agent-added punctuation (em dashes, arrows, curly quotes)
ptr727 f10ee93
Restore precise .gitattributes EOL header from template
ptr727 f7831a3
Re-fan template doc/pin fixes from convergence re-review
ptr727 5eea61a
Refactor tool version logging in workflows; streamline merge bot cond…
ptr727 aacfa12
Update global using statements in GlobalUsings.cs; correct references…
ptr727 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,20 @@ | ||
| # Leave line endings alone | ||
| # Default: do not normalize line endings (`* -text`); .editorconfig end_of_line rules guide what the editor writes. | ||
| # The exception pins below are git's own enforcement - they force LF for execution-sensitive classes regardless of editor. | ||
| # git config --global core.autocrlf false | ||
| # git add --renormalize . | ||
| # git ls-files --eol | ||
| * -text | ||
|
|
||
| # Exception: scripts must stay LF regardless of the `* -text` default - a CRLF shebang breaks execution. `.editorconfig` | ||
| # covers `*.sh`, but extensionless executables match no extension rule, so pin them here so git enforces LF on checkout | ||
| # and `--renormalize`. Any repo whose tooling ships extensionless scripts adds the matching path pin, e.g. s6-overlay | ||
| # init `Docker/s6-overlay/** text eol=lf` or husky/git hooks `.husky/pre-commit text eol=lf`. | ||
| *.sh text eol=lf | ||
| .husky/pre-commit text eol=lf | ||
|
|
||
| # Dockerfiles must be LF - a CRLF breaks RUN heredocs and line continuations. | ||
| Dockerfile text eol=lf | ||
| *.Dockerfile text eol=lf | ||
|
|
||
| # m4 README source is rendered on Linux; keep it LF. | ||
| Docker/README.m4 text eol=lf |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,43 +1,43 @@ | ||
| # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file | ||
| version: 2 | ||
| updates: | ||
|
|
||
| # main | ||
| - package-ecosystem: "nuget" | ||
| target-branch: "main" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "daily" | ||
| groups: | ||
| nuget-deps: | ||
| patterns: | ||
| - "*" | ||
| - package-ecosystem: "github-actions" | ||
| target-branch: "main" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "daily" | ||
| groups: | ||
| actions-deps: | ||
| patterns: | ||
| - "*" | ||
|
|
||
| # develop | ||
| - package-ecosystem: "nuget" | ||
| target-branch: "develop" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "daily" | ||
| groups: | ||
| nuget-deps: | ||
| patterns: | ||
| - "*" | ||
| - package-ecosystem: "github-actions" | ||
| target-branch: "develop" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "daily" | ||
| groups: | ||
| actions-deps: | ||
| patterns: | ||
| - "*" | ||
| # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file | ||
| version: 2 | ||
| updates: | ||
| # main | ||
| - package-ecosystem: "nuget" | ||
| target-branch: "main" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "daily" | ||
| groups: | ||
| nuget-deps: | ||
| patterns: | ||
| - "*" | ||
| - package-ecosystem: "github-actions" | ||
| target-branch: "main" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "daily" | ||
| groups: | ||
| actions-deps: | ||
| patterns: | ||
| - "*" | ||
| # develop | ||
| - package-ecosystem: "nuget" | ||
| target-branch: "develop" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "daily" | ||
| groups: | ||
| nuget-deps: | ||
| patterns: | ||
| - "*" | ||
| - package-ecosystem: "github-actions" | ||
| target-branch: "develop" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "daily" | ||
| groups: | ||
| actions-deps: | ||
| patterns: | ||
| - "*" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,35 +1,29 @@ | ||
| name: Build BYOB date badge task | ||
|
|
||
| on: | ||
| workflow_call: | ||
| inputs: | ||
| # Logical branch this badge run is for. The badge only updates on | ||
| # `main`; the publisher passes the branch explicitly so a scheduled run | ||
| # building `develop` doesn't try to write the main badge. Required (no | ||
| # `github.ref_name` fallback) so the gate can't silently misfire. | ||
| branch: | ||
| required: true | ||
| type: string | ||
|
|
||
| jobs: | ||
|
|
||
| date-badge: | ||
| name: Build BYOB date badge job | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
|
|
||
| - name: Get current date step | ||
| id: date | ||
| run: echo "date=$(date)" >> $GITHUB_OUTPUT | ||
|
|
||
| - name: Build BYOB date badge step | ||
| if: ${{ inputs.branch == 'main' }} | ||
| uses: RubbaBoy/BYOB@24f464284c1fd32028524b59607d417a2e36fee7 # v1.3.0 | ||
| with: | ||
| name: lastbuild | ||
| label: "Last Build" | ||
| icon: "github" | ||
| status: ${{ steps.date.outputs.date }} | ||
| color: "blue" | ||
| github_token: ${{ secrets.GITHUB_TOKEN }} | ||
| name: Build BYOB date badge task | ||
|
|
||
| # Caller-gated: the publisher invokes this only when main is published - the badge has no per-branch context, it tracks | ||
| # the last main build. | ||
|
|
||
| on: | ||
| workflow_call: | ||
|
|
||
| jobs: | ||
|
|
||
| date-badge: | ||
| name: Build BYOB date badge job | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
|
|
||
| - name: Get current date step | ||
| id: date | ||
| run: echo "date=$(date)" >> "$GITHUB_OUTPUT" | ||
|
|
||
| - name: Build BYOB date badge step | ||
| uses: RubbaBoy/BYOB@24f464284c1fd32028524b59607d417a2e36fee7 # v1.3.0 | ||
| with: | ||
|
Copilot marked this conversation as resolved.
|
||
| name: lastbuild | ||
| label: "Last Build" | ||
| icon: "github" | ||
| status: ${{ steps.date.outputs.date }} | ||
| color: "blue" | ||
| github_token: ${{ secrets.GITHUB_TOKEN }} | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,101 +1,101 @@ | ||
| name: Build executable task | ||
|
|
||
| on: | ||
| workflow_call: | ||
| inputs: | ||
| # Git ref to check out / version (empty = default checkout ref). | ||
| ref: | ||
| required: false | ||
| type: string | ||
| default: '' | ||
| # Logical branch driving build configuration (`main` => Release, else | ||
| # Debug). Required (no `github.ref_name` fallback, which would mislabel | ||
| # the develop leg of the publisher's matrix); the orchestrator passes it. | ||
| branch: | ||
| required: true | ||
| type: string | ||
| # Smoke mode: build a representative runtime subset (linux-x64 + | ||
| # win-x64) instead of the full 7-runtime matrix, and skip the zip / | ||
| # artifact aggregation. Used for fast PR feedback. | ||
| smoke: | ||
| required: false | ||
| type: boolean | ||
| default: false | ||
|
|
||
| jobs: | ||
|
|
||
| get-version: | ||
| name: Get version information job | ||
| uses: ./.github/workflows/get-version-task.yml | ||
| secrets: inherit | ||
| with: | ||
| ref: ${{ inputs.ref }} | ||
|
|
||
| build-executable-matrix: | ||
| name: Build executable project matrix job | ||
| runs-on: ubuntu-latest | ||
| needs: [get-version] | ||
| strategy: | ||
| matrix: | ||
| runtime: ${{ fromJSON(inputs.smoke && '["linux-x64","win-x64"]' || '["win-x64","linux-x64","linux-musl-x64","linux-arm","linux-arm64","osx-x64","osx-arm64"]') }} | ||
|
|
||
| steps: | ||
|
|
||
| - name: Setup .NET SDK step | ||
| uses: actions/setup-dotnet@9a946fdbd5fb07b82b2f5a4466058b876ab72bb2 # v5.3.0 | ||
| with: | ||
| dotnet-version: 10.x | ||
|
|
||
| - name: Checkout code step | ||
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| with: | ||
| ref: ${{ inputs.ref }} | ||
|
|
||
| - name: Build executable project step | ||
| run: | | ||
| dotnet publish ./PlexCleaner/PlexCleaner.csproj \ | ||
| --runtime ${{ matrix.runtime }} \ | ||
| -property:PublishDir=${{ runner.temp }}/publish/${{ matrix.runtime }}/ \ | ||
| --configuration ${{ inputs.branch == 'main' && 'Release' || 'Debug' }} \ | ||
| -property:PublishAot=false \ | ||
| -property:Version=${{ needs.get-version.outputs.AssemblyVersion }} \ | ||
| -property:FileVersion=${{ needs.get-version.outputs.AssemblyFileVersion }} \ | ||
| -property:AssemblyVersion=${{ needs.get-version.outputs.AssemblyVersion }} \ | ||
| -property:InformationalVersion=${{ needs.get-version.outputs.AssemblyInformationalVersion }} \ | ||
| -property:PackageVersion=${{ needs.get-version.outputs.SemVer2 }} | ||
|
|
||
| - name: Upload matrix build artifacts step | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | ||
| with: | ||
| name: publish-${{ inputs.branch }}-${{ matrix.runtime }} | ||
| path: ${{ runner.temp }}/publish | ||
| retention-days: 1 | ||
|
|
||
| # Smoke builds only need the per-runtime compile to succeed (fast PR | ||
| # feedback) - the zipped, downloadable artifact is a release concern, so | ||
| # skip the aggregation entirely on smoke. The release job collects the | ||
| # release-asset-<branch>-* artifacts by pattern, so no artifact-id is needed. | ||
| upload-build-artifacts: | ||
| name: Upload matrix build artifacts job | ||
| if: ${{ !inputs.smoke }} | ||
| runs-on: ubuntu-latest | ||
| needs: [ build-executable-matrix ] | ||
|
|
||
| steps: | ||
|
|
||
| - name: Download matrix build artifacts step | ||
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | ||
| with: | ||
| pattern: publish-${{ inputs.branch }}-* | ||
| merge-multiple: true | ||
| path: ${{ runner.temp }}/publish | ||
|
|
||
| - name: Zip build output step | ||
| run: 7z a -t7z ${{ runner.temp }}/PlexCleaner.7z ${{ runner.temp }}/publish/* | ||
|
|
||
| - name: Upload build artifacts step | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | ||
| with: | ||
| name: release-asset-${{ inputs.branch }}-executable | ||
| path: ${{ runner.temp }}/PlexCleaner.7z | ||
| retention-days: 1 | ||
| name: Build executable task | ||
| on: | ||
| workflow_call: | ||
| inputs: | ||
| # Git ref to check out / version (empty = default checkout ref). | ||
| ref: | ||
| required: false | ||
| type: string | ||
| default: '' | ||
| # Logical branch driving build configuration (`main` => Release, else | ||
| # Debug). Required (no `github.ref_name` fallback, which would mislabel | ||
| # the develop leg of the publisher's matrix); the orchestrator passes it. | ||
| branch: | ||
| required: true | ||
| type: string | ||
| # Smoke mode: build a representative runtime subset (linux-x64 + | ||
| # win-x64) instead of the full 7-runtime matrix, and skip the zip / | ||
| # artifact aggregation. Used for fast PR feedback. | ||
| smoke: | ||
| required: false | ||
| type: boolean | ||
| default: false | ||
| jobs: | ||
| get-version: | ||
| name: Get version information job | ||
| uses: ./.github/workflows/get-version-task.yml | ||
| secrets: inherit | ||
| with: | ||
| ref: ${{ inputs.ref }} | ||
| build-executable-matrix: | ||
| name: Build executable project matrix job | ||
| runs-on: ubuntu-latest | ||
| needs: [get-version] | ||
| strategy: | ||
| matrix: | ||
| runtime: ${{ fromJSON(inputs.smoke && '["linux-x64","win-x64"]' || '["win-x64","linux-x64","linux-musl-x64","linux-arm","linux-arm64","osx-x64","osx-arm64"]') }} | ||
| steps: | ||
| - name: Setup .NET SDK step | ||
| uses: actions/setup-dotnet@9a946fdbd5fb07b82b2f5a4466058b876ab72bb2 # v5.3.0 | ||
| with: | ||
| dotnet-version: 10.x | ||
| - name: Checkout code step | ||
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| with: | ||
| ref: ${{ inputs.ref }} | ||
| - name: Build executable project step | ||
| run: | | ||
| dotnet publish ./PlexCleaner/PlexCleaner.csproj \ | ||
| --runtime ${{ matrix.runtime }} \ | ||
| -property:PublishDir=${{ runner.temp }}/publish/${{ matrix.runtime }}/ \ | ||
| --configuration ${{ inputs.branch == 'main' && 'Release' || 'Debug' }} \ | ||
| -property:PublishAot=false \ | ||
| -property:Version=${{ needs.get-version.outputs.AssemblyVersion }} \ | ||
| -property:FileVersion=${{ needs.get-version.outputs.AssemblyFileVersion }} \ | ||
| -property:AssemblyVersion=${{ needs.get-version.outputs.AssemblyVersion }} \ | ||
| -property:InformationalVersion=${{ needs.get-version.outputs.AssemblyInformationalVersion }} \ | ||
| -property:PackageVersion=${{ needs.get-version.outputs.SemVer2 }} | ||
| - name: Upload matrix build artifacts step | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | ||
| with: | ||
| name: publish-${{ inputs.branch }}-${{ matrix.runtime }} | ||
| path: ${{ runner.temp }}/publish | ||
| retention-days: 1 | ||
| # Smoke builds only need the per-runtime compile to succeed (fast PR | ||
| # feedback) - the zipped, downloadable artifact is a release concern, so | ||
| # skip the aggregation entirely on smoke. The release job collects the | ||
| # release-asset-<branch>-* artifacts by pattern, so no artifact-id is needed. | ||
| upload-build-artifacts: | ||
| name: Upload matrix build artifacts job | ||
| if: ${{ !inputs.smoke }} | ||
| runs-on: ubuntu-latest | ||
| needs: [ build-executable-matrix ] | ||
| steps: | ||
| - name: Download matrix build artifacts step | ||
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | ||
| with: | ||
| pattern: publish-${{ inputs.branch }}-* | ||
| merge-multiple: true | ||
| path: ${{ runner.temp }}/publish | ||
| - name: Zip build output step | ||
| run: 7z a -t7z ${{ runner.temp }}/PlexCleaner.7z ${{ runner.temp }}/publish/* | ||
| - name: Upload build artifacts step | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | ||
| with: | ||
| name: release-asset-${{ inputs.branch }}-executable | ||
| path: ${{ runner.temp }}/PlexCleaner.7z | ||
| retention-days: 1 |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.