Add GitHub Actions CI workflow to replace AppVeyor - #43

Merged
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution
Oct 11, 2025
Merged

Add GitHub Actions CI workflow to replace AppVeyor#43
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution

Conversation

CopilotAI commented Oct 11, 2025

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the existing AppVeyor CI configuration with a modern GitHub Actions workflow, providing comprehensive multi-platform testing and automated package building.

What Changed

1. New GitHub Actions Workflow

Created .github/workflows/dotnet-ci.yml with the following features:

  • Multi-platform testing: Runs builds and tests on Ubuntu, Windows, and macOS
  • Multi-.NET version support: Tests with .NET 6.0, 8.0, and 9.0 SDKs
  • Comprehensive framework coverage: Builds all target frameworks (netstandard2.0, netstandard2.1, net472, net6.0, net8.0, net9.0)
  • Automated NuGet packaging: Creates packages on main branch pushes
  • Test artifact uploads: Preserves test results for all platforms
  • Performance optimizations: Implements NuGet package caching

The workflow consists of two jobs:

  1. build-and-test: Validates the build across all three operating systems using a matrix strategy
  2. package: Creates NuGet packages (runs only on main branch pushes after successful tests)

2. Removed AppVeyor Configuration

  • Deleted appveyor.yml
  • Removed reference from solution file

3. Updated Documentation

  • Updated build status badges in README.md and README_EN.md to point to the new GitHub Actions workflow

4. Fixed Build Issue

Fixed a syntax error in Chsword.Excel2Object/Internal/ExcelConstants.cs where the CommonDateTimeFormats array was missing its opening bracket for the collection expression.

Why This Change?

The new GitHub Actions CI provides several advantages over AppVeyor:

  1. Better platform coverage: Tests on Linux, Windows, and macOS instead of just Windows
  2. Native integration: Built into GitHub with better visibility and no external dependencies
  3. Free for open source: No concerns about CI minutes or service availability
  4. Modern tooling: Latest action versions and better caching mechanisms
  5. Faster feedback: Parallel execution across platforms

Testing

✅ All 88 tests pass on the local environment
✅ Builds successfully for all 6 target frameworks
✅ Workflow YAML syntax validated with yamllint
✅ Clean build from scratch verified

The workflow will be automatically triggered on the next push/PR to validate multi-platform compatibility.

Related Issues

Fixes issue: 添加 github ci 方案 取代现有ci 并保证项目编译测试通过 (Add GitHub CI solution to replace existing CI and ensure project builds and tests pass)

Original prompt

添加 github ci 方案 取代现有ci 并保证项目编译测试通过


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

CopilotAIand others added 3 commits October 11, 2025 09:10
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
CopilotAI changed the title [WIP] Add GitHub CI solution to replace existing CIAdd GitHub Actions CI workflow to replace AppVeyorOct 11, 2025
CopilotAI requested a review from chswordOctober 11, 2025 09:15
@chsword
chsword marked this pull request as ready for review October 11, 2025 09:24
CopilotAI review requested due to automatic review settings October 11, 2025 09:24
@chsword
chsword merged commit d9d1cb1 into mainOct 11, 2025
9 of 10 checks passed

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR modernizes the CI/CD pipeline by replacing the existing AppVeyor configuration with a comprehensive GitHub Actions workflow that provides multi-platform testing and automated NuGet package building.

  • Replaces AppVeyor CI with GitHub Actions for better platform coverage and native GitHub integration
  • Implements multi-platform testing across Ubuntu, Windows, and macOS with .NET 6.0, 8.0, and 9.0 support
  • Fixes a syntax error in the ExcelConstants.cs file for modern C# collection expressions

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
appveyor.ymlRemoves legacy AppVeyor CI configuration
.github/workflows/dotnet-core.ymlRemoves outdated .NET Core workflow
.github/workflows/dotnet-ci.ymlAdds comprehensive CI workflow with multi-platform testing and NuGet packaging
README.md, README_EN.mdUpdates build status badges to point to new GitHub Actions workflow
Chsword.Excel2Object.slnRemoves AppVeyor configuration reference from solution
Chsword.Excel2Object/Internal/ExcelConstants.csFixes collection expression syntax for C# 12 compatibility

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

name: Create NuGet Package
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

CopilotAIOct 11, 2025

Copy link

Choose a reason for hiding this comment

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

The condition only checks for 'main' branch but the workflow triggers on both 'main' and 'master' branches (line 5). Consider updating to check for both branches: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Suggested change
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Copilot uses AI. Check for mistakes.
Sign up for freeto 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

@chsword
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add GitHub Actions CI workflow to replace AppVeyor - #43

Merged
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution
Oct 11, 2025
Merged

Add GitHub Actions CI workflow to replace AppVeyor#43
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution

Conversation

CopilotAI commented Oct 11, 2025

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the existing AppVeyor CI configuration with a modern GitHub Actions workflow, providing comprehensive multi-platform testing and automated package building.

What Changed

1. New GitHub Actions Workflow

Created .github/workflows/dotnet-ci.yml with the following features:

  • Multi-platform testing: Runs builds and tests on Ubuntu, Windows, and macOS
  • Multi-.NET version support: Tests with .NET 6.0, 8.0, and 9.0 SDKs
  • Comprehensive framework coverage: Builds all target frameworks (netstandard2.0, netstandard2.1, net472, net6.0, net8.0, net9.0)
  • Automated NuGet packaging: Creates packages on main branch pushes
  • Test artifact uploads: Preserves test results for all platforms
  • Performance optimizations: Implements NuGet package caching

The workflow consists of two jobs:

  1. build-and-test: Validates the build across all three operating systems using a matrix strategy
  2. package: Creates NuGet packages (runs only on main branch pushes after successful tests)

2. Removed AppVeyor Configuration

  • Deleted appveyor.yml
  • Removed reference from solution file

3. Updated Documentation

  • Updated build status badges in README.md and README_EN.md to point to the new GitHub Actions workflow

4. Fixed Build Issue

Fixed a syntax error in Chsword.Excel2Object/Internal/ExcelConstants.cs where the CommonDateTimeFormats array was missing its opening bracket for the collection expression.

Why This Change?

The new GitHub Actions CI provides several advantages over AppVeyor:

  1. Better platform coverage: Tests on Linux, Windows, and macOS instead of just Windows
  2. Native integration: Built into GitHub with better visibility and no external dependencies
  3. Free for open source: No concerns about CI minutes or service availability
  4. Modern tooling: Latest action versions and better caching mechanisms
  5. Faster feedback: Parallel execution across platforms

Testing

✅ All 88 tests pass on the local environment
✅ Builds successfully for all 6 target frameworks
✅ Workflow YAML syntax validated with yamllint
✅ Clean build from scratch verified

The workflow will be automatically triggered on the next push/PR to validate multi-platform compatibility.

Related Issues

Fixes issue: 添加 github ci 方案 取代现有ci 并保证项目编译测试通过 (Add GitHub CI solution to replace existing CI and ensure project builds and tests pass)

Original prompt

添加 github ci 方案 取代现有ci 并保证项目编译测试通过


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

CopilotAIand others added 3 commits October 11, 2025 09:10
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
CopilotAI changed the title [WIP] Add GitHub CI solution to replace existing CIAdd GitHub Actions CI workflow to replace AppVeyorOct 11, 2025
CopilotAI requested a review from chswordOctober 11, 2025 09:15
@chsword
chsword marked this pull request as ready for review October 11, 2025 09:24
CopilotAI review requested due to automatic review settings October 11, 2025 09:24
@chsword
chsword merged commit d9d1cb1 into mainOct 11, 2025
9 of 10 checks passed

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR modernizes the CI/CD pipeline by replacing the existing AppVeyor configuration with a comprehensive GitHub Actions workflow that provides multi-platform testing and automated NuGet package building.

  • Replaces AppVeyor CI with GitHub Actions for better platform coverage and native GitHub integration
  • Implements multi-platform testing across Ubuntu, Windows, and macOS with .NET 6.0, 8.0, and 9.0 support
  • Fixes a syntax error in the ExcelConstants.cs file for modern C# collection expressions

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
appveyor.ymlRemoves legacy AppVeyor CI configuration
.github/workflows/dotnet-core.ymlRemoves outdated .NET Core workflow
.github/workflows/dotnet-ci.ymlAdds comprehensive CI workflow with multi-platform testing and NuGet packaging
README.md, README_EN.mdUpdates build status badges to point to new GitHub Actions workflow
Chsword.Excel2Object.slnRemoves AppVeyor configuration reference from solution
Chsword.Excel2Object/Internal/ExcelConstants.csFixes collection expression syntax for C# 12 compatibility

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

name: Create NuGet Package
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

CopilotAIOct 11, 2025

Copy link

Choose a reason for hiding this comment

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

The condition only checks for 'main' branch but the workflow triggers on both 'main' and 'master' branches (line 5). Consider updating to check for both branches: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Suggested change
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Copilot uses AI. Check for mistakes.
Sign up for freeto 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

@chsword
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add GitHub Actions CI workflow to replace AppVeyor - #43

Merged
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution
Oct 11, 2025
Merged

Add GitHub Actions CI workflow to replace AppVeyor#43
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution

Conversation

CopilotAI commented Oct 11, 2025

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the existing AppVeyor CI configuration with a modern GitHub Actions workflow, providing comprehensive multi-platform testing and automated package building.

What Changed

1. New GitHub Actions Workflow

Created .github/workflows/dotnet-ci.yml with the following features:

  • Multi-platform testing: Runs builds and tests on Ubuntu, Windows, and macOS
  • Multi-.NET version support: Tests with .NET 6.0, 8.0, and 9.0 SDKs
  • Comprehensive framework coverage: Builds all target frameworks (netstandard2.0, netstandard2.1, net472, net6.0, net8.0, net9.0)
  • Automated NuGet packaging: Creates packages on main branch pushes
  • Test artifact uploads: Preserves test results for all platforms
  • Performance optimizations: Implements NuGet package caching

The workflow consists of two jobs:

  1. build-and-test: Validates the build across all three operating systems using a matrix strategy
  2. package: Creates NuGet packages (runs only on main branch pushes after successful tests)

2. Removed AppVeyor Configuration

  • Deleted appveyor.yml
  • Removed reference from solution file

3. Updated Documentation

  • Updated build status badges in README.md and README_EN.md to point to the new GitHub Actions workflow

4. Fixed Build Issue

Fixed a syntax error in Chsword.Excel2Object/Internal/ExcelConstants.cs where the CommonDateTimeFormats array was missing its opening bracket for the collection expression.

Why This Change?

The new GitHub Actions CI provides several advantages over AppVeyor:

  1. Better platform coverage: Tests on Linux, Windows, and macOS instead of just Windows
  2. Native integration: Built into GitHub with better visibility and no external dependencies
  3. Free for open source: No concerns about CI minutes or service availability
  4. Modern tooling: Latest action versions and better caching mechanisms
  5. Faster feedback: Parallel execution across platforms

Testing

✅ All 88 tests pass on the local environment
✅ Builds successfully for all 6 target frameworks
✅ Workflow YAML syntax validated with yamllint
✅ Clean build from scratch verified

The workflow will be automatically triggered on the next push/PR to validate multi-platform compatibility.

Related Issues

Fixes issue: 添加 github ci 方案 取代现有ci 并保证项目编译测试通过 (Add GitHub CI solution to replace existing CI and ensure project builds and tests pass)

Original prompt

添加 github ci 方案 取代现有ci 并保证项目编译测试通过


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

CopilotAIand others added 3 commits October 11, 2025 09:10
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
CopilotAI changed the title [WIP] Add GitHub CI solution to replace existing CIAdd GitHub Actions CI workflow to replace AppVeyorOct 11, 2025
CopilotAI requested a review from chswordOctober 11, 2025 09:15
@chsword
chsword marked this pull request as ready for review October 11, 2025 09:24
CopilotAI review requested due to automatic review settings October 11, 2025 09:24
@chsword
chsword merged commit d9d1cb1 into mainOct 11, 2025
9 of 10 checks passed

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR modernizes the CI/CD pipeline by replacing the existing AppVeyor configuration with a comprehensive GitHub Actions workflow that provides multi-platform testing and automated NuGet package building.

  • Replaces AppVeyor CI with GitHub Actions for better platform coverage and native GitHub integration
  • Implements multi-platform testing across Ubuntu, Windows, and macOS with .NET 6.0, 8.0, and 9.0 support
  • Fixes a syntax error in the ExcelConstants.cs file for modern C# collection expressions

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
appveyor.ymlRemoves legacy AppVeyor CI configuration
.github/workflows/dotnet-core.ymlRemoves outdated .NET Core workflow
.github/workflows/dotnet-ci.ymlAdds comprehensive CI workflow with multi-platform testing and NuGet packaging
README.md, README_EN.mdUpdates build status badges to point to new GitHub Actions workflow
Chsword.Excel2Object.slnRemoves AppVeyor configuration reference from solution
Chsword.Excel2Object/Internal/ExcelConstants.csFixes collection expression syntax for C# 12 compatibility

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

name: Create NuGet Package
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

CopilotAIOct 11, 2025

Copy link

Choose a reason for hiding this comment

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

The condition only checks for 'main' branch but the workflow triggers on both 'main' and 'master' branches (line 5). Consider updating to check for both branches: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Suggested change
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Copilot uses AI. Check for mistakes.
Sign up for freeto 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

@chsword
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add GitHub Actions CI workflow to replace AppVeyor - #43

Merged
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution
Oct 11, 2025
Merged

Add GitHub Actions CI workflow to replace AppVeyor#43
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution

Conversation

CopilotAI commented Oct 11, 2025

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the existing AppVeyor CI configuration with a modern GitHub Actions workflow, providing comprehensive multi-platform testing and automated package building.

What Changed

1. New GitHub Actions Workflow

Created .github/workflows/dotnet-ci.yml with the following features:

  • Multi-platform testing: Runs builds and tests on Ubuntu, Windows, and macOS
  • Multi-.NET version support: Tests with .NET 6.0, 8.0, and 9.0 SDKs
  • Comprehensive framework coverage: Builds all target frameworks (netstandard2.0, netstandard2.1, net472, net6.0, net8.0, net9.0)
  • Automated NuGet packaging: Creates packages on main branch pushes
  • Test artifact uploads: Preserves test results for all platforms
  • Performance optimizations: Implements NuGet package caching

The workflow consists of two jobs:

  1. build-and-test: Validates the build across all three operating systems using a matrix strategy
  2. package: Creates NuGet packages (runs only on main branch pushes after successful tests)

2. Removed AppVeyor Configuration

  • Deleted appveyor.yml
  • Removed reference from solution file

3. Updated Documentation

  • Updated build status badges in README.md and README_EN.md to point to the new GitHub Actions workflow

4. Fixed Build Issue

Fixed a syntax error in Chsword.Excel2Object/Internal/ExcelConstants.cs where the CommonDateTimeFormats array was missing its opening bracket for the collection expression.

Why This Change?

The new GitHub Actions CI provides several advantages over AppVeyor:

  1. Better platform coverage: Tests on Linux, Windows, and macOS instead of just Windows
  2. Native integration: Built into GitHub with better visibility and no external dependencies
  3. Free for open source: No concerns about CI minutes or service availability
  4. Modern tooling: Latest action versions and better caching mechanisms
  5. Faster feedback: Parallel execution across platforms

Testing

✅ All 88 tests pass on the local environment
✅ Builds successfully for all 6 target frameworks
✅ Workflow YAML syntax validated with yamllint
✅ Clean build from scratch verified

The workflow will be automatically triggered on the next push/PR to validate multi-platform compatibility.

Related Issues

Fixes issue: 添加 github ci 方案 取代现有ci 并保证项目编译测试通过 (Add GitHub CI solution to replace existing CI and ensure project builds and tests pass)

Original prompt

添加 github ci 方案 取代现有ci 并保证项目编译测试通过


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

CopilotAIand others added 3 commits October 11, 2025 09:10
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
CopilotAI changed the title [WIP] Add GitHub CI solution to replace existing CIAdd GitHub Actions CI workflow to replace AppVeyorOct 11, 2025
CopilotAI requested a review from chswordOctober 11, 2025 09:15
@chsword
chsword marked this pull request as ready for review October 11, 2025 09:24
CopilotAI review requested due to automatic review settings October 11, 2025 09:24
@chsword
chsword merged commit d9d1cb1 into mainOct 11, 2025
9 of 10 checks passed

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR modernizes the CI/CD pipeline by replacing the existing AppVeyor configuration with a comprehensive GitHub Actions workflow that provides multi-platform testing and automated NuGet package building.

  • Replaces AppVeyor CI with GitHub Actions for better platform coverage and native GitHub integration
  • Implements multi-platform testing across Ubuntu, Windows, and macOS with .NET 6.0, 8.0, and 9.0 support
  • Fixes a syntax error in the ExcelConstants.cs file for modern C# collection expressions

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
appveyor.ymlRemoves legacy AppVeyor CI configuration
.github/workflows/dotnet-core.ymlRemoves outdated .NET Core workflow
.github/workflows/dotnet-ci.ymlAdds comprehensive CI workflow with multi-platform testing and NuGet packaging
README.md, README_EN.mdUpdates build status badges to point to new GitHub Actions workflow
Chsword.Excel2Object.slnRemoves AppVeyor configuration reference from solution
Chsword.Excel2Object/Internal/ExcelConstants.csFixes collection expression syntax for C# 12 compatibility

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

name: Create NuGet Package
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

CopilotAIOct 11, 2025

Copy link

Choose a reason for hiding this comment

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

The condition only checks for 'main' branch but the workflow triggers on both 'main' and 'master' branches (line 5). Consider updating to check for both branches: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Suggested change
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Copilot uses AI. Check for mistakes.
Sign up for freeto 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

@chsword
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add GitHub Actions CI workflow to replace AppVeyor - #43

Merged
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution
Oct 11, 2025
Merged

Add GitHub Actions CI workflow to replace AppVeyor#43
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution

Conversation

CopilotAI commented Oct 11, 2025

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the existing AppVeyor CI configuration with a modern GitHub Actions workflow, providing comprehensive multi-platform testing and automated package building.

What Changed

1. New GitHub Actions Workflow

Created .github/workflows/dotnet-ci.yml with the following features:

  • Multi-platform testing: Runs builds and tests on Ubuntu, Windows, and macOS
  • Multi-.NET version support: Tests with .NET 6.0, 8.0, and 9.0 SDKs
  • Comprehensive framework coverage: Builds all target frameworks (netstandard2.0, netstandard2.1, net472, net6.0, net8.0, net9.0)
  • Automated NuGet packaging: Creates packages on main branch pushes
  • Test artifact uploads: Preserves test results for all platforms
  • Performance optimizations: Implements NuGet package caching

The workflow consists of two jobs:

  1. build-and-test: Validates the build across all three operating systems using a matrix strategy
  2. package: Creates NuGet packages (runs only on main branch pushes after successful tests)

2. Removed AppVeyor Configuration

  • Deleted appveyor.yml
  • Removed reference from solution file

3. Updated Documentation

  • Updated build status badges in README.md and README_EN.md to point to the new GitHub Actions workflow

4. Fixed Build Issue

Fixed a syntax error in Chsword.Excel2Object/Internal/ExcelConstants.cs where the CommonDateTimeFormats array was missing its opening bracket for the collection expression.

Why This Change?

The new GitHub Actions CI provides several advantages over AppVeyor:

  1. Better platform coverage: Tests on Linux, Windows, and macOS instead of just Windows
  2. Native integration: Built into GitHub with better visibility and no external dependencies
  3. Free for open source: No concerns about CI minutes or service availability
  4. Modern tooling: Latest action versions and better caching mechanisms
  5. Faster feedback: Parallel execution across platforms

Testing

✅ All 88 tests pass on the local environment
✅ Builds successfully for all 6 target frameworks
✅ Workflow YAML syntax validated with yamllint
✅ Clean build from scratch verified

The workflow will be automatically triggered on the next push/PR to validate multi-platform compatibility.

Related Issues

Fixes issue: 添加 github ci 方案 取代现有ci 并保证项目编译测试通过 (Add GitHub CI solution to replace existing CI and ensure project builds and tests pass)

Original prompt

添加 github ci 方案 取代现有ci 并保证项目编译测试通过


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

CopilotAIand others added 3 commits October 11, 2025 09:10
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
CopilotAI changed the title [WIP] Add GitHub CI solution to replace existing CIAdd GitHub Actions CI workflow to replace AppVeyorOct 11, 2025
CopilotAI requested a review from chswordOctober 11, 2025 09:15
@chsword
chsword marked this pull request as ready for review October 11, 2025 09:24
CopilotAI review requested due to automatic review settings October 11, 2025 09:24
@chsword
chsword merged commit d9d1cb1 into mainOct 11, 2025
9 of 10 checks passed

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR modernizes the CI/CD pipeline by replacing the existing AppVeyor configuration with a comprehensive GitHub Actions workflow that provides multi-platform testing and automated NuGet package building.

  • Replaces AppVeyor CI with GitHub Actions for better platform coverage and native GitHub integration
  • Implements multi-platform testing across Ubuntu, Windows, and macOS with .NET 6.0, 8.0, and 9.0 support
  • Fixes a syntax error in the ExcelConstants.cs file for modern C# collection expressions

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
appveyor.ymlRemoves legacy AppVeyor CI configuration
.github/workflows/dotnet-core.ymlRemoves outdated .NET Core workflow
.github/workflows/dotnet-ci.ymlAdds comprehensive CI workflow with multi-platform testing and NuGet packaging
README.md, README_EN.mdUpdates build status badges to point to new GitHub Actions workflow
Chsword.Excel2Object.slnRemoves AppVeyor configuration reference from solution
Chsword.Excel2Object/Internal/ExcelConstants.csFixes collection expression syntax for C# 12 compatibility

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

name: Create NuGet Package
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

CopilotAIOct 11, 2025

Copy link

Choose a reason for hiding this comment

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

The condition only checks for 'main' branch but the workflow triggers on both 'main' and 'master' branches (line 5). Consider updating to check for both branches: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Suggested change
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Copilot uses AI. Check for mistakes.
Sign up for freeto 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

@chsword
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add GitHub Actions CI workflow to replace AppVeyor - #43

Merged
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution
Oct 11, 2025
Merged

Add GitHub Actions CI workflow to replace AppVeyor#43
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution

Conversation

CopilotAI commented Oct 11, 2025

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the existing AppVeyor CI configuration with a modern GitHub Actions workflow, providing comprehensive multi-platform testing and automated package building.

What Changed

1. New GitHub Actions Workflow

Created .github/workflows/dotnet-ci.yml with the following features:

  • Multi-platform testing: Runs builds and tests on Ubuntu, Windows, and macOS
  • Multi-.NET version support: Tests with .NET 6.0, 8.0, and 9.0 SDKs
  • Comprehensive framework coverage: Builds all target frameworks (netstandard2.0, netstandard2.1, net472, net6.0, net8.0, net9.0)
  • Automated NuGet packaging: Creates packages on main branch pushes
  • Test artifact uploads: Preserves test results for all platforms
  • Performance optimizations: Implements NuGet package caching

The workflow consists of two jobs:

  1. build-and-test: Validates the build across all three operating systems using a matrix strategy
  2. package: Creates NuGet packages (runs only on main branch pushes after successful tests)

2. Removed AppVeyor Configuration

  • Deleted appveyor.yml
  • Removed reference from solution file

3. Updated Documentation

  • Updated build status badges in README.md and README_EN.md to point to the new GitHub Actions workflow

4. Fixed Build Issue

Fixed a syntax error in Chsword.Excel2Object/Internal/ExcelConstants.cs where the CommonDateTimeFormats array was missing its opening bracket for the collection expression.

Why This Change?

The new GitHub Actions CI provides several advantages over AppVeyor:

  1. Better platform coverage: Tests on Linux, Windows, and macOS instead of just Windows
  2. Native integration: Built into GitHub with better visibility and no external dependencies
  3. Free for open source: No concerns about CI minutes or service availability
  4. Modern tooling: Latest action versions and better caching mechanisms
  5. Faster feedback: Parallel execution across platforms

Testing

✅ All 88 tests pass on the local environment
✅ Builds successfully for all 6 target frameworks
✅ Workflow YAML syntax validated with yamllint
✅ Clean build from scratch verified

The workflow will be automatically triggered on the next push/PR to validate multi-platform compatibility.

Related Issues

Fixes issue: 添加 github ci 方案 取代现有ci 并保证项目编译测试通过 (Add GitHub CI solution to replace existing CI and ensure project builds and tests pass)

Original prompt

添加 github ci 方案 取代现有ci 并保证项目编译测试通过


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

CopilotAIand others added 3 commits October 11, 2025 09:10
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
CopilotAI changed the title [WIP] Add GitHub CI solution to replace existing CIAdd GitHub Actions CI workflow to replace AppVeyorOct 11, 2025
CopilotAI requested a review from chswordOctober 11, 2025 09:15
@chsword
chsword marked this pull request as ready for review October 11, 2025 09:24
CopilotAI review requested due to automatic review settings October 11, 2025 09:24
@chsword
chsword merged commit d9d1cb1 into mainOct 11, 2025
9 of 10 checks passed

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR modernizes the CI/CD pipeline by replacing the existing AppVeyor configuration with a comprehensive GitHub Actions workflow that provides multi-platform testing and automated NuGet package building.

  • Replaces AppVeyor CI with GitHub Actions for better platform coverage and native GitHub integration
  • Implements multi-platform testing across Ubuntu, Windows, and macOS with .NET 6.0, 8.0, and 9.0 support
  • Fixes a syntax error in the ExcelConstants.cs file for modern C# collection expressions

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
appveyor.ymlRemoves legacy AppVeyor CI configuration
.github/workflows/dotnet-core.ymlRemoves outdated .NET Core workflow
.github/workflows/dotnet-ci.ymlAdds comprehensive CI workflow with multi-platform testing and NuGet packaging
README.md, README_EN.mdUpdates build status badges to point to new GitHub Actions workflow
Chsword.Excel2Object.slnRemoves AppVeyor configuration reference from solution
Chsword.Excel2Object/Internal/ExcelConstants.csFixes collection expression syntax for C# 12 compatibility

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

name: Create NuGet Package
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

CopilotAIOct 11, 2025

Copy link

Choose a reason for hiding this comment

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

The condition only checks for 'main' branch but the workflow triggers on both 'main' and 'master' branches (line 5). Consider updating to check for both branches: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Suggested change
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Copilot uses AI. Check for mistakes.
Sign up for freeto 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

@chsword
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add GitHub Actions CI workflow to replace AppVeyor - #43

Merged
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution
Oct 11, 2025
Merged

Add GitHub Actions CI workflow to replace AppVeyor#43
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution

Conversation

CopilotAI commented Oct 11, 2025

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the existing AppVeyor CI configuration with a modern GitHub Actions workflow, providing comprehensive multi-platform testing and automated package building.

What Changed

1. New GitHub Actions Workflow

Created .github/workflows/dotnet-ci.yml with the following features:

  • Multi-platform testing: Runs builds and tests on Ubuntu, Windows, and macOS
  • Multi-.NET version support: Tests with .NET 6.0, 8.0, and 9.0 SDKs
  • Comprehensive framework coverage: Builds all target frameworks (netstandard2.0, netstandard2.1, net472, net6.0, net8.0, net9.0)
  • Automated NuGet packaging: Creates packages on main branch pushes
  • Test artifact uploads: Preserves test results for all platforms
  • Performance optimizations: Implements NuGet package caching

The workflow consists of two jobs:

  1. build-and-test: Validates the build across all three operating systems using a matrix strategy
  2. package: Creates NuGet packages (runs only on main branch pushes after successful tests)

2. Removed AppVeyor Configuration

  • Deleted appveyor.yml
  • Removed reference from solution file

3. Updated Documentation

  • Updated build status badges in README.md and README_EN.md to point to the new GitHub Actions workflow

4. Fixed Build Issue

Fixed a syntax error in Chsword.Excel2Object/Internal/ExcelConstants.cs where the CommonDateTimeFormats array was missing its opening bracket for the collection expression.

Why This Change?

The new GitHub Actions CI provides several advantages over AppVeyor:

  1. Better platform coverage: Tests on Linux, Windows, and macOS instead of just Windows
  2. Native integration: Built into GitHub with better visibility and no external dependencies
  3. Free for open source: No concerns about CI minutes or service availability
  4. Modern tooling: Latest action versions and better caching mechanisms
  5. Faster feedback: Parallel execution across platforms

Testing

✅ All 88 tests pass on the local environment
✅ Builds successfully for all 6 target frameworks
✅ Workflow YAML syntax validated with yamllint
✅ Clean build from scratch verified

The workflow will be automatically triggered on the next push/PR to validate multi-platform compatibility.

Related Issues

Fixes issue: 添加 github ci 方案 取代现有ci 并保证项目编译测试通过 (Add GitHub CI solution to replace existing CI and ensure project builds and tests pass)

Original prompt

添加 github ci 方案 取代现有ci 并保证项目编译测试通过


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

CopilotAIand others added 3 commits October 11, 2025 09:10
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
CopilotAI changed the title [WIP] Add GitHub CI solution to replace existing CIAdd GitHub Actions CI workflow to replace AppVeyorOct 11, 2025
CopilotAI requested a review from chswordOctober 11, 2025 09:15
@chsword
chsword marked this pull request as ready for review October 11, 2025 09:24
CopilotAI review requested due to automatic review settings October 11, 2025 09:24
@chsword
chsword merged commit d9d1cb1 into mainOct 11, 2025
9 of 10 checks passed

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR modernizes the CI/CD pipeline by replacing the existing AppVeyor configuration with a comprehensive GitHub Actions workflow that provides multi-platform testing and automated NuGet package building.

  • Replaces AppVeyor CI with GitHub Actions for better platform coverage and native GitHub integration
  • Implements multi-platform testing across Ubuntu, Windows, and macOS with .NET 6.0, 8.0, and 9.0 support
  • Fixes a syntax error in the ExcelConstants.cs file for modern C# collection expressions

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
appveyor.ymlRemoves legacy AppVeyor CI configuration
.github/workflows/dotnet-core.ymlRemoves outdated .NET Core workflow
.github/workflows/dotnet-ci.ymlAdds comprehensive CI workflow with multi-platform testing and NuGet packaging
README.md, README_EN.mdUpdates build status badges to point to new GitHub Actions workflow
Chsword.Excel2Object.slnRemoves AppVeyor configuration reference from solution
Chsword.Excel2Object/Internal/ExcelConstants.csFixes collection expression syntax for C# 12 compatibility

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

name: Create NuGet Package
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

CopilotAIOct 11, 2025

Copy link

Choose a reason for hiding this comment

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

The condition only checks for 'main' branch but the workflow triggers on both 'main' and 'master' branches (line 5). Consider updating to check for both branches: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Suggested change
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Copilot uses AI. Check for mistakes.
Sign up for freeto 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

@chsword
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add GitHub Actions CI workflow to replace AppVeyor - #43

Merged
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution
Oct 11, 2025
Merged

Add GitHub Actions CI workflow to replace AppVeyor#43
chsword merged 4 commits into
mainfrom
copilot/add-github-ci-solution

Conversation

CopilotAI commented Oct 11, 2025

Copy link
Copy Markdown
Contributor

Overview

This PR replaces the existing AppVeyor CI configuration with a modern GitHub Actions workflow, providing comprehensive multi-platform testing and automated package building.

What Changed

1. New GitHub Actions Workflow

Created .github/workflows/dotnet-ci.yml with the following features:

  • Multi-platform testing: Runs builds and tests on Ubuntu, Windows, and macOS
  • Multi-.NET version support: Tests with .NET 6.0, 8.0, and 9.0 SDKs
  • Comprehensive framework coverage: Builds all target frameworks (netstandard2.0, netstandard2.1, net472, net6.0, net8.0, net9.0)
  • Automated NuGet packaging: Creates packages on main branch pushes
  • Test artifact uploads: Preserves test results for all platforms
  • Performance optimizations: Implements NuGet package caching

The workflow consists of two jobs:

  1. build-and-test: Validates the build across all three operating systems using a matrix strategy
  2. package: Creates NuGet packages (runs only on main branch pushes after successful tests)

2. Removed AppVeyor Configuration

  • Deleted appveyor.yml
  • Removed reference from solution file

3. Updated Documentation

  • Updated build status badges in README.md and README_EN.md to point to the new GitHub Actions workflow

4. Fixed Build Issue

Fixed a syntax error in Chsword.Excel2Object/Internal/ExcelConstants.cs where the CommonDateTimeFormats array was missing its opening bracket for the collection expression.

Why This Change?

The new GitHub Actions CI provides several advantages over AppVeyor:

  1. Better platform coverage: Tests on Linux, Windows, and macOS instead of just Windows
  2. Native integration: Built into GitHub with better visibility and no external dependencies
  3. Free for open source: No concerns about CI minutes or service availability
  4. Modern tooling: Latest action versions and better caching mechanisms
  5. Faster feedback: Parallel execution across platforms

Testing

✅ All 88 tests pass on the local environment
✅ Builds successfully for all 6 target frameworks
✅ Workflow YAML syntax validated with yamllint
✅ Clean build from scratch verified

The workflow will be automatically triggered on the next push/PR to validate multi-platform compatibility.

Related Issues

Fixes issue: 添加 github ci 方案 取代现有ci 并保证项目编译测试通过 (Add GitHub CI solution to replace existing CI and ensure project builds and tests pass)

Original prompt

添加 github ci 方案 取代现有ci 并保证项目编译测试通过


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

CopilotAIand others added 3 commits October 11, 2025 09:10
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
Co-authored-by: chsword <274085+chsword@users.noreply.github.com>
CopilotAI changed the title [WIP] Add GitHub CI solution to replace existing CIAdd GitHub Actions CI workflow to replace AppVeyorOct 11, 2025
CopilotAI requested a review from chswordOctober 11, 2025 09:15
@chsword
chsword marked this pull request as ready for review October 11, 2025 09:24
CopilotAI review requested due to automatic review settings October 11, 2025 09:24
@chsword
chsword merged commit d9d1cb1 into mainOct 11, 2025
9 of 10 checks passed

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull Request Overview

This PR modernizes the CI/CD pipeline by replacing the existing AppVeyor configuration with a comprehensive GitHub Actions workflow that provides multi-platform testing and automated NuGet package building.

  • Replaces AppVeyor CI with GitHub Actions for better platform coverage and native GitHub integration
  • Implements multi-platform testing across Ubuntu, Windows, and macOS with .NET 6.0, 8.0, and 9.0 support
  • Fixes a syntax error in the ExcelConstants.cs file for modern C# collection expressions

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
appveyor.ymlRemoves legacy AppVeyor CI configuration
.github/workflows/dotnet-core.ymlRemoves outdated .NET Core workflow
.github/workflows/dotnet-ci.ymlAdds comprehensive CI workflow with multi-platform testing and NuGet packaging
README.md, README_EN.mdUpdates build status badges to point to new GitHub Actions workflow
Chsword.Excel2Object.slnRemoves AppVeyor configuration reference from solution
Chsword.Excel2Object/Internal/ExcelConstants.csFixes collection expression syntax for C# 12 compatibility

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

name: Create NuGet Package
runs-on: ubuntu-latest
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

CopilotAIOct 11, 2025

Copy link

Choose a reason for hiding this comment

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

The condition only checks for 'main' branch but the workflow triggers on both 'main' and 'master' branches (line 5). Consider updating to check for both branches: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Suggested change
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

Copilot uses AI. Check for mistakes.
Sign up for freeto 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

@chsword