Skip to content

Commit d5c9375

Browse files
kenrickyap14yapkc1yanw-bq
authored
build: Build + Sign + Publish GitHub action (#89)
* added build-and-sign action * dummy run * file path fix * added account id * typo * role name change * use default creds * redid job id retrival * fix project name * adding version input * changed to on push to tags, and store s3 bucket key as github secrets * remove vscode files * fix version * test version * test version * test version * test version * fix version * sign only bin\release dlls * include readme * include auth projects * rename package id and bump versions * add tags * pack readme to extension projects * include nhibernate and bump versions * pack IAM readme and turn on publishing to nuget --------- Co-authored-by: 14yapkc1 <14yapkc1@gmail.com> Co-authored-by: Yan Wang <68562925+yanw-bq@users.noreply.github.com> Co-authored-by: Yan Wang <yan.wang@improving.com>
1 parent fd13a23 commit d5c9375

20 files changed

Lines changed: 458 additions & 42 deletions

File tree

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
name: Build, Sign and Publish .NET Wrapper
2+
3+
on:
4+
push:
5+
tags:
6+
- '[0-9]+.[0-9]+.[0-9]+'
7+
8+
permissions:
9+
id-token: write # This is required for requesting the JWT
10+
contents: read # This is required for actions/checkout
11+
12+
jobs:
13+
build-sign-publish:
14+
name: Build, Sign and Publish
15+
runs-on: windows-latest
16+
steps:
17+
- name: Checkout repository
18+
uses: actions/checkout@v4
19+
20+
- name: Setup .NET
21+
uses: actions/setup-dotnet@v4
22+
with:
23+
dotnet-version: '8.0.x'
24+
25+
- name: Restore dependencies
26+
run: |
27+
dotnet restore AwsWrapperDataProvider\AwsWrapperDataProvider.csproj /p:_IsPacking=true
28+
dotnet restore AwsWrapperDataProvider.Plugin.FederatedAuth\AwsWrapperDataProvider.Plugin.FederatedAuth.csproj /p:_IsPacking=true
29+
dotnet restore AwsWrapperDataProvider.Plugin.Iam\AwsWrapperDataProvider.Plugin.Iam.csproj /p:_IsPacking=true
30+
dotnet restore AwsWrapperDataProvider.Plugin.SecretsManager\AwsWrapperDataProvider.Plugin.SecretsManager.csproj /p:_IsPacking=true
31+
dotnet restore AwsWrapperDataProvider.Dialect.MySqlClient\AwsWrapperDataProvider.Dialect.MySqlClient.csproj /p:_IsPacking=true
32+
dotnet restore AwsWrapperDataProvider.Dialect.MySqlConnector\AwsWrapperDataProvider.Dialect.MySqlConnector.csproj /p:_IsPacking=true
33+
dotnet restore AwsWrapperDataProvider.Dialect.Npgsql\AwsWrapperDataProvider.Dialect.Npgsql.csproj /p:_IsPacking=true
34+
dotnet restore AwsWrapperDataProvider.EntityFrameworkCore.MySQLConnector\AwsWrapperDataProvider.EntityFrameworkCore.MySQLConnector.csproj /p:_IsPacking=true
35+
dotnet restore AwsWrapperDataProvider.NHibernate\AwsWrapperDataProvider.NHibernate.csproj /p:_IsPacking=true
36+
37+
- name: Build projects
38+
run: |
39+
dotnet build AwsWrapperDataProvider\AwsWrapperDataProvider.csproj --configuration Release --no-restore
40+
dotnet build AwsWrapperDataProvider.Plugin.FederatedAuth\AwsWrapperDataProvider.Plugin.FederatedAuth.csproj --configuration Release --no-restore
41+
dotnet build AwsWrapperDataProvider.Plugin.Iam\AwsWrapperDataProvider.Plugin.Iam.csproj --configuration Release --no-restore
42+
dotnet build AwsWrapperDataProvider.Plugin.SecretsManager\AwsWrapperDataProvider.Plugin.SecretsManager.csproj --configuration Release --no-restore
43+
dotnet build AwsWrapperDataProvider.Dialect.MySqlClient\AwsWrapperDataProvider.Dialect.MySqlClient.csproj --configuration Release --no-restore
44+
dotnet build AwsWrapperDataProvider.Dialect.MySqlConnector\AwsWrapperDataProvider.Dialect.MySqlConnector.csproj --configuration Release --no-restore
45+
dotnet build AwsWrapperDataProvider.Dialect.Npgsql\AwsWrapperDataProvider.Dialect.Npgsql.csproj --configuration Release --no-restore
46+
dotnet build AwsWrapperDataProvider.EntityFrameworkCore.MySQLConnector\AwsWrapperDataProvider.EntityFrameworkCore.MySQLConnector.csproj --configuration Release --no-restore
47+
dotnet build AwsWrapperDataProvider.NHibernate\AwsWrapperDataProvider.NHibernate.csproj --configuration Release --no-restore
48+
49+
- name: Configure A AWS credentials
50+
uses: aws-actions/configure-aws-credentials@v4
51+
with:
52+
role-skip-session-tagging: true
53+
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
54+
role-duration-seconds: 21600
55+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_DEPLOY_ROLE }}
56+
role-session-name: aws-dotnet-win-signer
57+
58+
- name: Configure Signer AWS credentials
59+
uses: aws-actions/configure-aws-credentials@v5.1.0
60+
with:
61+
role-skip-session-tagging: true
62+
role-chaining: true
63+
aws-region: ${{ secrets.AWS_SIGNER_REGION }}
64+
role-to-assume: ${{ secrets.AWS_SIGNER_ROLE }}
65+
role-external-id: ${{ secrets.AWS_SIGNER_ROLE_ID }}
66+
67+
- name: Sign DLL files
68+
shell: pwsh
69+
working-directory: ./scripts
70+
run: |
71+
. ".\sign_artifacts_win.ps1"
72+
Invoke-SignDlls `
73+
-BuildPath ".." `
74+
-AwsUnsignedBucket "${{ secrets.AWS_UNSIGNED_BUCKET }}" `
75+
-AwsSignedBucket "${{ secrets.AWS_SIGNED_BUCKET }}" `
76+
-AwsBucketKeyPrefix "${{ secrets.AWS_S3_BUCKET_KEY_PREFIX }}"
77+
78+
- name: 'Set Version Env Variable'
79+
shell: pwsh
80+
run: |
81+
$version = $env:GITHUB_REF -replace '^refs/.*/', ''
82+
echo "RELEASE_VERSION=$version" >> $env:GITHUB_ENV
83+
84+
- name: Pack NuGet packages
85+
run: |
86+
dotnet pack AwsWrapperDataProvider\AwsWrapperDataProvider.csproj --configuration Release --no-build /p:PackageVersion=${{ env.RELEASE_VERSION }} --output ./packages
87+
dotnet pack AwsWrapperDataProvider.Plugin.FederatedAuth\AwsWrapperDataProvider.Plugin.FederatedAuth.csproj --configuration Release --no-build /p:PackageVersion=${{ env.RELEASE_VERSION }} --output ./packages
88+
dotnet pack AwsWrapperDataProvider.Plugin.Iam\AwsWrapperDataProvider.Plugin.Iam.csproj --configuration Release --no-build /p:PackageVersion=${{ env.RELEASE_VERSION }} --output ./packages
89+
dotnet pack AwsWrapperDataProvider.Plugin.SecretsManager\AwsWrapperDataProvider.Plugin.SecretsManager.csproj --configuration Release --no-build /p:PackageVersion=${{ env.RELEASE_VERSION }} --output ./packages
90+
dotnet pack AwsWrapperDataProvider.Dialect.MySqlClient\AwsWrapperDataProvider.Dialect.MySqlClient.csproj --configuration Release --no-build /p:PackageVersion=${{ env.RELEASE_VERSION }} --output ./packages
91+
dotnet pack AwsWrapperDataProvider.Dialect.MySqlConnector\AwsWrapperDataProvider.Dialect.MySqlConnector.csproj --configuration Release --no-build /p:PackageVersion=${{ env.RELEASE_VERSION }} --output ./packages
92+
dotnet pack AwsWrapperDataProvider.Dialect.Npgsql\AwsWrapperDataProvider.Dialect.Npgsql.csproj --configuration Release --no-build /p:PackageVersion=${{ env.RELEASE_VERSION }} --output ./packages
93+
dotnet pack AwsWrapperDataProvider.EntityFrameworkCore.MySQLConnector\AwsWrapperDataProvider.EntityFrameworkCore.MySQLConnector.csproj --configuration Release --no-build /p:PackageVersion=${{ env.RELEASE_VERSION }} --output ./packages
94+
dotnet pack AwsWrapperDataProvider.NHibernate\AwsWrapperDataProvider.NHibernate.csproj --configuration Release --no-build /p:PackageVersion=${{ env.RELEASE_VERSION }} --output ./packages
95+
96+
- name: Upload packages as artifacts
97+
uses: actions/upload-artifact@v4
98+
with:
99+
name: nuget-packages
100+
path: .\packages\*.nupkg
101+
102+
- name: Configure NuGet credential
103+
uses: aws-actions/configure-aws-credentials@v5.1.0
104+
with:
105+
role-to-assume: ${{ secrets.NUGET_ACCESS_ROLE_ARN }}
106+
aws-region: ${{ secrets.AWS_SIGNER_REGION }}
107+
108+
- name: Publish to NuGet
109+
shell: pwsh
110+
run: |
111+
$nugetKey = aws secretsmanager get-secret-value --secret-id ${{ secrets.NUGET_SECRETS_ID }} --region ${{ secrets.AWS_SIGNER_REGION }} --output text --query SecretString | ConvertFrom-Json
112+
dotnet nuget push .\packages\*.nupkg --source https://api.nuget.org/v3/index.json --api-key $nugetKey.Key

.github/workflows/nhibernate-test.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ jobs:
1515
fail-fast: false
1616
matrix:
1717
dbEngine: ["mysql", "pg"]
18-
deployment: ["aurora", "multi-az-cluster", "multi-az-instance"]
19-
# deployment: ["aurora"]
18+
deployment: ["aurora", "multi-az-cluster", "multi-az-instance"]
2019
steps:
2120
- name: 'Clone repository'
2221
uses: actions/checkout@v4

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ bld/
3535

3636
# Visual Studio 2015/2017 cache/options directory
3737
.vs/
38+
# VS Code
39+
.vscode/
3840
# Uncomment if you have tasks that create the project's static files in wwwroot
3941
#wwwroot/
4042

AwsWrapperDataProvider.Benchmarks/AwsWrapperDataProvider.Benchmarks.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
<TargetFramework>net8.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
8+
<IsPackable>false</IsPackable>
9+
<IsTestProject>true</IsTestProject>
810
</PropertyGroup>
911

1012
<ItemGroup>

AwsWrapperDataProvider.Dialect.MySqlClient/AwsWrapperDataProvider.Dialect.MySqlClient.csproj

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="MySql.Data" Version="9.4.0" />
11+
<PackageReference Include="MySql.Data" Version="9.5.0" />
1212
</ItemGroup>
1313

1414
<ItemGroup>
@@ -29,4 +29,22 @@
2929
<ProjectReference Include="..\AwsWrapperDataProvider\AwsWrapperDataProvider.csproj" />
3030
</ItemGroup>
3131

32+
<PropertyGroup Condition=" '$(_IsPacking)' == 'true' ">
33+
<!-- NuGet packages -->
34+
<IsPackable>true</IsPackable>
35+
<PackageId>AWS.AdvancedDotnetDataProviderWrapper.Dialect.MySqlClient</PackageId>
36+
<PackageProjectUrl>https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper/</PackageProjectUrl>
37+
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
38+
<PackageReadmeFile>README.md</PackageReadmeFile>
39+
<PackageReleaseNotes>See release notes at https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper/releases</PackageReleaseNotes>
40+
<PackageTags>AWS;ADO.NET;database;MySql</PackageTags>
41+
<RepositoryType>git</RepositoryType>
42+
<RepositoryUrl>https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper.git</RepositoryUrl>
43+
</PropertyGroup>
44+
45+
<!-- Items that are only added when building the NuGet package -->
46+
<ItemGroup Condition=" '$(_IsPacking)' == 'true' ">
47+
<None Include=".\README.md" Pack="true" PackagePath="README.md" />
48+
</ItemGroup>
49+
3250
</Project>

AwsWrapperDataProvider.Dialect.MySqlConnector/AwsWrapperDataProvider.Dialect.MySqlConnector.csproj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,22 @@
2828
<ProjectReference Include="..\AwsWrapperDataProvider\AwsWrapperDataProvider.csproj" />
2929
</ItemGroup>
3030

31+
<PropertyGroup Condition=" '$(_IsPacking)' == 'true' ">
32+
<!-- NuGet packages -->
33+
<IsPackable>true</IsPackable>
34+
<PackageId>AWS.AdvancedDotnetDataProviderWrapper.Dialect.MySqlConnector</PackageId>
35+
<PackageProjectUrl>https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper/</PackageProjectUrl>
36+
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
37+
<PackageReadmeFile>README.md</PackageReadmeFile>
38+
<PackageReleaseNotes>See release notes at https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper/releases</PackageReleaseNotes>
39+
<PackageTags>AWS;ADO.NET;database;MySql;mysqlconnector</PackageTags>
40+
<RepositoryType>git</RepositoryType>
41+
<RepositoryUrl>https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper.git</RepositoryUrl>
42+
</PropertyGroup>
43+
44+
<!-- Items that are only added when building the NuGet package -->
45+
<ItemGroup Condition=" '$(_IsPacking)' == 'true' ">
46+
<None Include=".\README.md" Pack="true" PackagePath="README.md" />
47+
</ItemGroup>
48+
3149
</Project>

AwsWrapperDataProvider.Dialect.Npgsql/AwsWrapperDataProvider.Dialect.Npgsql.csproj

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,29 @@
2121
</ItemGroup>
2222

2323
<ItemGroup>
24-
<PackageReference Include="Npgsql" Version="9.0.3" />
24+
<PackageReference Include="Npgsql" Version="9.0.4" />
2525
</ItemGroup>
2626

2727
<ItemGroup>
2828
<ProjectReference Include="..\AwsWrapperDataProvider\AwsWrapperDataProvider.csproj" />
2929
</ItemGroup>
3030

31+
<PropertyGroup Condition=" '$(_IsPacking)' == 'true' ">
32+
<!-- NuGet packages -->
33+
<IsPackable>true</IsPackable>
34+
<PackageId>AWS.AdvancedDotnetDataProviderWrapper.Dialect.Npgsql</PackageId>
35+
<PackageProjectUrl>https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper/</PackageProjectUrl>
36+
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
37+
<PackageReadmeFile>README.md</PackageReadmeFile>
38+
<PackageReleaseNotes>See release notes at https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper/releases</PackageReleaseNotes>
39+
<PackageTags>AWS;ADO.NET;database;npgsql;postgresql;postgres</PackageTags>
40+
<RepositoryType>git</RepositoryType>
41+
<RepositoryUrl>https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper.git</RepositoryUrl>
42+
</PropertyGroup>
43+
44+
<!-- Items that are only added when building the NuGet package -->
45+
<ItemGroup Condition=" '$(_IsPacking)' == 'true' ">
46+
<None Include=".\README.md" Pack="true" PackagePath="README.md" />
47+
</ItemGroup>
48+
3149
</Project>

AwsWrapperDataProvider.EntityFrameworkCore.MySqlConnector.Tests/AwsWrapperDataProvider.EntityFrameworkCore.MySqlConnector.Tests.csproj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
<IsPackable>false</IsPackable>
88
<IsTestProject>true</IsTestProject>
99
<OutputType>Exe</OutputType>
10-
<RootNamespace>AwsWrapperDataProvider.EntityFrameworkCore.MySQL.Tests</RootNamespace>
1110
</PropertyGroup>
1211

1312
<ItemGroup>
@@ -18,9 +17,9 @@
1817
<PrivateAssets>all</PrivateAssets>
1918
</PackageReference>
2019
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.10" />
21-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
22-
<PackageReference Include="xunit.v3" Version="3.0.1" />
23-
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4" />
20+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
21+
<PackageReference Include="xunit.v3" Version="3.2.0" />
22+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
2423
</ItemGroup>
2524

2625
<ItemGroup>

AwsWrapperDataProvider.EntityFrameworkCore.MySqlConnector/AwsWrapperDataProvider.EntityFrameworkCore.MySqlConnector.csproj

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,34 @@
44
<TargetFramework>net8.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
7-
<RootNamespace>AwsWrapperDataProvider.EntityFrameworkCore.MySQL</RootNamespace>
87
</PropertyGroup>
98

109
<ItemGroup>
1110
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.10" />
12-
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.9" />
11+
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.10" />
1312
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" />
1413
</ItemGroup>
1514

1615
<ItemGroup>
1716
<ProjectReference Include="..\AwsWrapperDataProvider\AwsWrapperDataProvider.csproj" />
1817
</ItemGroup>
1918

19+
<PropertyGroup Condition=" '$(_IsPacking)' == 'true' ">
20+
<!-- NuGet packages -->
21+
<IsPackable>true</IsPackable>
22+
<PackageId>AWS.AdvancedDotnetDataProviderWrapper.EntityFrameworkCore.MySqlConnector</PackageId>
23+
<PackageProjectUrl>https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper/</PackageProjectUrl>
24+
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
25+
<PackageReadmeFile>README.md</PackageReadmeFile>
26+
<PackageReleaseNotes>See release notes at https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper/releases</PackageReleaseNotes>
27+
<PackageTags>AWS;ADO.NET;database;MySql;orm;efcore;Entity;Framework</PackageTags>
28+
<RepositoryType>git</RepositoryType>
29+
<RepositoryUrl>https://github.com/aws/aws-advanced-dotnet-data-provider-wrapper.git</RepositoryUrl>
30+
</PropertyGroup>
31+
32+
<!-- Items that are only added when building the NuGet package -->
33+
<ItemGroup Condition=" '$(_IsPacking)' == 'true' ">
34+
<None Include=".\README.md" Pack="true" PackagePath="README.md" />
35+
</ItemGroup>
36+
2037
</Project>

AwsWrapperDataProvider.EntityFrameworkCore.MySQL/README.md renamed to AwsWrapperDataProvider.EntityFrameworkCore.MySqlConnector/README.md

File renamed without changes.

0 commit comments

Comments
 (0)