diff --git a/.github/workflows/oats.yml b/.github/workflows/oats.yml
index 529f10c3..f53b71ff 100644
--- a/.github/workflows/oats.yml
+++ b/.github/workflows/oats.yml
@@ -14,8 +14,36 @@ on:
permissions: {}
jobs:
+
+ package:
+ runs-on: ubuntu-latest
+
+ steps:
+
+ - name: Checkout code
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ fetch-depth: 0
+ filter: 'tree:0'
+ persist-credentials: false
+ show-progress: false
+
+ - name: Setup .NET SDK
+ uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
+
+ - name: Build NuGet packages
+ run: dotnet build --configuration Release
+
+ - name: Publish NuGet packages
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ with:
+ name: oats-packages
+ path: ./artifacts/package/release
+ if-no-files-found: error
+
acceptance-tests:
runs-on: ubuntu-latest
+ needs: package
timeout-minutes: 20
steps:
@@ -27,9 +55,16 @@ jobs:
persist-credentials: false
show-progress: false
+ - name: Download packages
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
+ with:
+ name: oats-packages
+ path: ./.packages
+
- name: Set up Go
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
+ cache: false
go-version: '1.24'
- name: Install OATS
@@ -39,6 +74,8 @@ jobs:
run: go install "github.com/grafana/oats@${OATS_VERSION}"
- name: Run acceptance tests
+ env:
+ BUILD_DISTRO_FROM_SOURCE: false
run: oats --timeout=5m ./docker/docker-compose-aspnetcore
- name: Upload log file
diff --git a/.gitignore b/.gitignore
index 8835b187..f33a41e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -472,3 +472,6 @@ $RECYCLE.BIN/
# Windows shortcuts
*.lnk
+
+# Local NuGet package source
+!.packages/*.s?nupkg
diff --git a/NuGet.config b/NuGet.config
new file mode 100644
index 00000000..7fbd4cd7
--- /dev/null
+++ b/NuGet.config
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docker/docker-compose-aspnetcore/.dockerignore b/docker/docker-compose-aspnetcore/.dockerignore
index 3729ff0c..ad1cf87d 100644
--- a/docker/docker-compose-aspnetcore/.dockerignore
+++ b/docker/docker-compose-aspnetcore/.dockerignore
@@ -22,4 +22,5 @@
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
-README.md
\ No newline at end of file
+README.md
+!.packages/
diff --git a/docker/docker-compose-aspnetcore/docker-compose.oats.yml b/docker/docker-compose-aspnetcore/docker-compose.oats.yml
index facb151e..5bd655ed 100644
--- a/docker/docker-compose-aspnetcore/docker-compose.oats.yml
+++ b/docker/docker-compose-aspnetcore/docker-compose.oats.yml
@@ -4,6 +4,8 @@ services:
build:
context: ../..
dockerfile: examples/net8.0/aspnetcore/Dockerfile
+ args:
+ DOTNET_PUBLISH_ARGS: "/p:BuildDistroFromSource=${BUILD_DISTRO_FROM_SOURCE:-true}"
environment:
- AWS_ACCESS_KEY_ID=localstack
- AWS_SECRET_ACCESS_KEY=localstack
diff --git a/docker/docker-compose-aspnetcore/docker-compose.self-contained.oats.yml b/docker/docker-compose-aspnetcore/docker-compose.self-contained.oats.yml
index 2d804495..dd190170 100644
--- a/docker/docker-compose-aspnetcore/docker-compose.self-contained.oats.yml
+++ b/docker/docker-compose-aspnetcore/docker-compose.self-contained.oats.yml
@@ -5,7 +5,7 @@ services:
context: ../..
dockerfile: examples/net8.0/aspnetcore/Dockerfile
args:
- DOTNET_PUBLISH_ARGS: "--self-contained true /p:PublishSingleFile=true"
+ DOTNET_PUBLISH_ARGS: "--self-contained true /p:PublishSingleFile=true /p:BuildDistroFromSource=${BUILD_DISTRO_FROM_SOURCE:-true}"
entrypoint: ./aspnetcore
environment:
- AWS_ACCESS_KEY_ID=localstack
diff --git a/docker/docker-compose-aspnetcore/docker-compose.yml b/docker/docker-compose-aspnetcore/docker-compose.yml
index 63e04f82..f01cb182 100644
--- a/docker/docker-compose-aspnetcore/docker-compose.yml
+++ b/docker/docker-compose-aspnetcore/docker-compose.yml
@@ -4,6 +4,8 @@ services:
build:
context: ../..
dockerfile: examples/net8.0/aspnetcore/Dockerfile
+ args:
+ DOTNET_PUBLISH_ARGS: "/p:BuildDistroFromSource=${BUILD_DISTRO_FROM_SOURCE:-true}"
depends_on:
- redis
- mssql
diff --git a/examples/net8.0/aspnetcore/Controllers/AwsController.cs b/examples/net8.0/aspnetcore/Controllers/AwsController.cs
index abbeb223..7f846410 100644
--- a/examples/net8.0/aspnetcore/Controllers/AwsController.cs
+++ b/examples/net8.0/aspnetcore/Controllers/AwsController.cs
@@ -17,7 +17,7 @@ public async Task> ListBuckets()
{
var response = await client.ListBucketsAsync();
- var buckets = response.Buckets.Select(o => o.BucketName).ToArray();
+ var buckets = response.Buckets?.Select(o => o.BucketName).ToArray() ?? [];
logger.LogInformation("Found {Count} buckets.", buckets.Length);
diff --git a/examples/net8.0/aspnetcore/aspnetcore.csproj b/examples/net8.0/aspnetcore/aspnetcore.csproj
index cd402af0..0d2ad675 100644
--- a/examples/net8.0/aspnetcore/aspnetcore.csproj
+++ b/examples/net8.0/aspnetcore/aspnetcore.csproj
@@ -16,11 +16,15 @@
-
+
-
+
+
+
+
+