Skip to content

Conversation

Blind-Striker
Copy link
Contributor

No description provided.

…ster (AWS v4 updates) branch to sdkv3-lts branch
@Blind-Striker Blind-Striker requested a review from Copilot July 20, 2025 18:36
@Blind-Striker Blind-Striker self-assigned this Jul 20, 2025
@Blind-Striker Blind-Striker added the enhancement New feature or request label Jul 20, 2025
Copy link

github-actions bot commented Jul 20, 2025

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 9 package(s) with unknown licenses.
See the Details below.

License Issues

tests/LocalStack.Client.Integration.Tests/LocalStack.Client.Integration.Tests.csproj

PackageVersionLicenseIssue Type
AWSSDK.CloudControlApi>= 0NullUnknown License
AWSSDK.CodeBuild>= 0NullUnknown License
AWSSDK.CodeConnections>= 0NullUnknown License
AWSSDK.CodeDeploy>= 0NullUnknown License
AWSSDK.CodePipeline>= 0NullUnknown License
AWSSDK.ElasticTranscoder>= 0NullUnknown License
AWSSDK.MemoryDB>= 0NullUnknown License
AWSSDK.Shield>= 0NullUnknown License
AWSSDK.VerifiedPermissions>= 0NullUnknown License

OpenSSF Scorecard

Scorecard details
PackageVersionScoreDetails
actions/actions/cache 4.*.* 🟢 6.2
Details
CheckScoreReason
Binary-Artifacts🟢 10no binaries found in the repo
Maintained🟢 32 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 3
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Packaging⚠️ -1packaging workflow not detected
Fuzzing⚠️ 0project is not fuzzed
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ -1internal error: error during GetBranch(releases/v1): error during branchesHandler.query: internal error: githubv4.Query: Resource not accessible by integration
SAST🟢 10SAST tool is run on all commits
Vulnerabilities🟢 82 existing vulnerabilities detected
actions/actions/checkout 4.*.* 🟢 5.2
Details
CheckScoreReason
Maintained⚠️ 01 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Binary-Artifacts🟢 10no binaries found in the repo
Code-Review🟢 10all changesets reviewed
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Packaging⚠️ -1packaging workflow not detected
Signed-Releases⚠️ -1no releases found
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
Branch-Protection⚠️ -1internal error: error during GetBranch(releases/v2): error during branchesHandler.query: internal error: githubv4.Query: Resource not accessible by integration
Security-Policy🟢 9security policy file detected
SAST🟢 8SAST tool detected but not run on all commits
Vulnerabilities⚠️ 010 existing vulnerabilities detected
actions/actions/setup-dotnet 4.*.* 🟢 5.2
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Maintained🟢 34 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 3
Binary-Artifacts🟢 10no binaries found in the repo
Packaging⚠️ -1packaging workflow not detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST🟢 7SAST tool is not run on all commits -- score normalized to 7
Vulnerabilities🟢 55 existing vulnerabilities detected
actions/actions/upload-artifact 4.*.* 🟢 4.9
Details
CheckScoreReason
Maintained⚠️ 12 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 1
Code-Review🟢 10all changesets reviewed
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Packaging⚠️ -1packaging workflow not detected
Binary-Artifacts🟢 10no binaries found in the repo
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Pinned-Dependencies⚠️ 1dependency not pinned by hash detected -- score normalized to 1
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST🟢 9SAST tool detected but not run on all commits
Vulnerabilities⚠️ 28 existing vulnerabilities detected
actions/dorny/test-reporter 1.*.* 🟢 4.4
Details
CheckScoreReason
Code-Review🟢 5Found 6/11 approved changesets -- score normalized to 5
Maintained🟢 1030 commit(s) and 21 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Packaging⚠️ -1packaging workflow not detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Pinned-Dependencies⚠️ 2dependency not pinned by hash detected -- score normalized to 2
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
Vulnerabilities⚠️ 022 existing vulnerabilities detected
actions/actions/checkout 4.*.* 🟢 5.2
Details
CheckScoreReason
Maintained⚠️ 01 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Binary-Artifacts🟢 10no binaries found in the repo
Code-Review🟢 10all changesets reviewed
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Packaging⚠️ -1packaging workflow not detected
Signed-Releases⚠️ -1no releases found
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
Branch-Protection⚠️ -1internal error: error during GetBranch(releases/v2): error during branchesHandler.query: internal error: githubv4.Query: Resource not accessible by integration
Security-Policy🟢 9security policy file detected
SAST🟢 8SAST tool detected but not run on all commits
Vulnerabilities⚠️ 010 existing vulnerabilities detected
actions/actions/dependency-review-action 4.*.* 🟢 6.8
Details
CheckScoreReason
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 10all changesets reviewed
Security-Policy🟢 9security policy file detected
Packaging⚠️ -1packaging workflow not detected
Binary-Artifacts🟢 10no binaries found in the repo
Maintained🟢 1022 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Pinned-Dependencies⚠️ 2dependency not pinned by hash detected -- score normalized to 2
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection🟢 6branch protection is not maximal on development and all release branches
SAST🟢 9SAST tool detected but not run on all commits
Vulnerabilities🟢 73 existing vulnerabilities detected
nuget/AWSSDK.ACMPCA >= 0 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1030 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
Code-Review⚠️ 2Found 7/29 approved changesets -- score normalized to 2
Packaging⚠️ -1packaging workflow not detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration
Security-Policy🟢 10security policy file detected
Fuzzing⚠️ 0project is not fuzzed
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Vulnerabilities🟢 100 existing vulnerabilities detected
SAST🟢 8SAST tool is not run on all commits -- score normalized to 8
Binary-Artifacts🟢 6binaries present in source code
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
nuget/AWSSDK.Account >= 0 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1030 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
Code-Review⚠️ 2Found 7/29 approved changesets -- score normalized to 2
Packaging⚠️ -1packaging workflow not detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration
Security-Policy🟢 10security policy file detected
Fuzzing⚠️ 0project is not fuzzed
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Vulnerabilities🟢 100 existing vulnerabilities detected
SAST🟢 8SAST tool is not run on all commits -- score normalized to 8
Binary-Artifacts🟢 6binaries present in source code
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
nuget/AWSSDK.Bedrock >= 0 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1030 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10
Code-Review⚠️ 2Found 7/29 approved changesets -- score normalized to 2
Packaging⚠️ -1packaging workflow not detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration
Security-Policy🟢 10security policy file detected
Fuzzing⚠️ 0project is not fuzzed
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Vulnerabilities🟢 100 existing vulnerabilities detected
SAST🟢 8SAST tool is not run on all commits -- score normalized to 8
Binary-Artifacts🟢 6binaries present in source code
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
nuget/AWSSDK.CloudControlApi >= 0 UnknownUnknown
nuget/AWSSDK.CodeBuild >= 0 UnknownUnknown
nuget/AWSSDK.CodeConnections >= 0 UnknownUnknown
nuget/AWSSDK.CodeDeploy >= 0 UnknownUnknown
nuget/AWSSDK.CodePipeline >= 0 UnknownUnknown
nuget/AWSSDK.ElasticTranscoder >= 0 UnknownUnknown
nuget/AWSSDK.MemoryDB >= 0 UnknownUnknown
nuget/AWSSDK.Shield >= 0 UnknownUnknown
nuget/AWSSDK.VerifiedPermissions >= 0 UnknownUnknown

Scanned Files

  • .github/workflows/ci-cd.yml
  • .github/workflows/dependency-review.yml
  • tests/LocalStack.Client.Integration.Tests/LocalStack.Client.Integration.Tests.csproj

Copilot

This comment was marked as outdated.

Add LocalStack endpoint support for Account, ACMPCA, Bedrock, CloudControl, CodeBuild, CodeConnections, CodeDeploy, CodePipeline, ElasticTranscoder, MemoryDB, Shield, and VerifiedPermissions.

- Add AWS service enums and endpoint metadata for 13 new services:
  - Account Management
  - AWS Certificate Manager Private Certificate Authority (ACMPCA)
  - Amazon Bedrock
  - AWS Cloud Control API
  - AWS CodeBuild
  - AWS CodeConnections
  - AWS CodeDeploy
  - AWS CodePipeline
  - Amazon Elastic Transcoder
  - Amazon MemoryDB for Redis
  - AWS Shield
  - Amazon Verified Permissions
- Update package dependencies to include corresponding AWS SDK packages
- Update functional test fixtures to use LocalStack v4.6.0 instead of v4.3.0
- Update Testcontainers packages to v4.6.0
- Increment package version to v1.6.1/v1.4.1
- Fix code analysis warnings and improve logging format strings
- Update badge URLs for test result tracking
@Blind-Striker Blind-Striker requested a review from Copilot July 21, 2025 06:59
Copy link

@Copilot Copilot AI left a comment

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 implements a comprehensive refactor of the CI/CD build system and adds support for additional AWS services, moving the codebase from the master branch (AWS SDK v4) to the sdkv3-lts branch for AWS SDK v3 maintenance. Key changes include:

  • Refactoring the Cake build system with new task structure and enhanced console output
  • Adding support for 12 new AWS services (Account, ACMPCA, Bedrock, etc.)
  • Implementing comprehensive CI/CD pipeline with cross-platform testing and automated package publishing
  • Updating LocalStack version from 4.3.0 to 4.6.0 for functional tests

Reviewed Changes

Copilot reviewed 44 out of 44 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tests/LocalStack.Client.Integration.Tests/LocalStack.Client.Integration.Tests.csproj Added package references for 12 new AWS services
tests/LocalStack.Client.Integration.Tests/GlobalUsings.cs Reorganized and added global using statements for new AWS services
tests/LocalStack.Client.Integration.Tests/CreateClientByInterfaceTests.cs Added test methods for 10 new AWS service client interfaces
tests/LocalStack.Client.Integration.Tests/CreateClientByImplementationTests.cs Added test methods for 11 new AWS service client implementations
tests/LocalStack.Client.Functional.Tests/TestConstants.cs Updated LocalStack version constant from 4.3.0 to 4.6.0
Multiple test scenario files Renamed classes and fixtures from V43 to V46 for LocalStack version update
tests/LocalStack.Client.Functional.Tests/CloudFormation/CloudFormationStackExecutor.cs Added pragma warning disable and improved logging with structured parameters
README files Complete overhaul of documentation with new badge system and platform compatibility matrix
src/LocalStack.Client/Enums/ Added enum values and metadata for 12 new AWS services
build/LocalStack.Build/ Complete refactor with new task structure, services, console helpers, and enhanced functionality
.github/workflows/ New comprehensive CI/CD pipeline with cross-platform testing and automated publishing
Directory.*.props Updated package versions and project metadata

@@ -5,7 +5,7 @@ public static class TestConstants
public const string LocalStackConfig = "appsettings.LocalStack.json";

public const string LocalStackV37 = "3.7.1";
public const string LocalStackV43 = "4.3.0";
public const string LocalStackV46 = "4.6.0";

public const string MovieTableMovieIdGsi = "MoiveTableMovie-Index";
Copy link
Preview

Copilot AI Jul 21, 2025

Choose a reason for hiding this comment

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

There is a typo in the GSI name. 'MoiveTableMovie-Index' should be 'MovieTableMovie-Index' (missing 'v' in 'Movie').

Suggested change
public const string MovieTableMovieIdGsi = "MoiveTableMovie-Index";
public const string MovieTableMovieIdGsi = "MovieTableMovie-Index";

Copilot uses AI. Check for mistakes.

{
context.Warning(psOutput);

string[] containers = psOutput.Split([Environment.NewLine], StringSplitOptions.None);
Copy link
Preview

Copilot AI Jul 21, 2025

Choose a reason for hiding this comment

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

Using StringSplitOptions.None may include empty entries in the array which could cause issues when passing to DockerRm. Consider using StringSplitOptions.RemoveEmptyEntries to filter out empty strings.

Suggested change
string[] containers = psOutput.Split([Environment.NewLine], StringSplitOptions.None);
string[] containers = psOutput.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

Copilot uses AI. Check for mistakes.

/// <param name="version">The package version</param>
/// <param name="packageSource">The package source</param>
/// <param name="downloadUrl">The download URL</param>
#pragma warning disable MA0006 // Use String.Create instead of string concatenation
Copy link
Preview

Copilot AI Jul 21, 2025

Choose a reason for hiding this comment

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

[nitpick] The pragma warning is disabled but the method uses string interpolation in a Markup constructor, not direct concatenation. The warning disable may be unnecessary or incorrectly applied.

Suggested change
#pragma warning disable MA0006 // Use String.Create instead of string concatenation

Copilot uses AI. Check for mistakes.


return version;
// Fallback to timestamp-based identifier
return DateTime.UtcNow.ToString("HHmmss", System.Globalization.CultureInfo.InvariantCulture);
Copy link
Preview

Copilot AI Jul 21, 2025

Choose a reason for hiding this comment

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

The fallback timestamp format 'HHmmss' could produce duplicate values if multiple operations occur within the same second. Consider using a more unique format like 'HHmmssfff' to include milliseconds.

Suggested change
return DateTime.UtcNow.ToString("HHmmss", System.Globalization.CultureInfo.InvariantCulture);
return DateTime.UtcNow.ToString("HHmmssfff", System.Globalization.CultureInfo.InvariantCulture);

Copilot uses AI. Check for mistakes.

- Add shebang to build.sh for proper shell execution
- Remove Windows-style line endings from build.sh
- Skip net462 tests on non-Windows platforms in TestTask.cs

These changes ensure the build system works correctly across different
operating systems by providing proper shell script execution headers
and preventing framework-specific tests from running on incompatible
platforms.
…efined platform checks

- Replace basic context.Warning calls with rich Spectre.Console output via ConsoleHelper
- Use ConsoleHelper.WriteRule() for elegant test section headers
- Use ConsoleHelper.WriteInfo/Warning/Processing/Success for better visual feedback
- Refine net462 platform check to only skip tests on Linux (not macOS)
- Improve messaging for docker container cleanup operations

The changes provide better visual feedback during test execution and allow net462
tests to run on macOS while still preventing issues on Linux where external Mono
installation would be required.
@Blind-Striker Blind-Striker merged commit d8a3d65 into sdkv3-lts Jul 21, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant