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 @@ - + - + + + + +