diff --git a/.github/workflows/user-management-test.yml b/.github/workflows/user-management.yml similarity index 64% rename from .github/workflows/user-management-test.yml rename to .github/workflows/user-management.yml index cb67d097..3859c556 100644 --- a/.github/workflows/user-management-test.yml +++ b/.github/workflows/user-management.yml @@ -1,4 +1,4 @@ -name: User Management Tests +name: User Management on: push: @@ -11,6 +11,11 @@ on: - "user-management/**" workflow_dispatch: +env: + REGISTRY: ghcr.io + IMAGE_NAME_USER_SERVICE: ${{ github.repository_owner }}/stickerlandia/user-management-service + REPOSITORY_URL: github.com/${{ github.repository }} + jobs: unit-test: runs-on: ubuntu-latest @@ -35,12 +40,6 @@ jobs: - AZURE fail-fast: false - services: - cosmosdb: - image: mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview - ports: - - 8081:8081 - steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 #4.3.1 @@ -114,4 +113,55 @@ jobs: DRIVING: ${{ matrix.DRIVING }} DRIVEN: AGNOSTIC run: | - cd user-management/tests/Stickerlandia.UserManagement.IntegrationTest && dotnet test --logger:"console;verbosity=detailed" \ No newline at end of file + cd user-management/tests/Stickerlandia.UserManagement.IntegrationTest && dotnet test --logger:"console;verbosity=detailed" + + push-image: + runs-on: ubuntu-latest + needs: [integration-test-azure, integration-test-agnostic] + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + permissions: + contents: read + packages: write + attestations: write + id-token: write + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Get Commit Info + id: get_sha + run: | + echo "COMMIT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 + + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME_USER_SERVICE }} + tags: | + latest + ${{ env.COMMIT_SHA }} + + - name: Build and push Docker image + id: push + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: ./user-management + file: ./user-management/src/Stickerlandia.UserManagement.Api/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + GIT_COMMIT_SHA=${{ env.COMMIT_SHA }} + GIT_REPOSITORY_URL=${{ env.REPOSITORY_URL }} + DD_GIT_REPOSITORY_URL=${{ env.REPOSITORY_URL }} + DD_GIT_COMMIT_SHA=${{ env.COMMIT_SHA }} diff --git a/user-management/src/Stickerlandia.UserManagement.Agnostic/Stickerlandia.UserManagement.Agnostic.csproj b/user-management/src/Stickerlandia.UserManagement.Agnostic/Stickerlandia.UserManagement.Agnostic.csproj index 72eb400c..78e9e029 100644 --- a/user-management/src/Stickerlandia.UserManagement.Agnostic/Stickerlandia.UserManagement.Agnostic.csproj +++ b/user-management/src/Stickerlandia.UserManagement.Agnostic/Stickerlandia.UserManagement.Agnostic.csproj @@ -1,34 +1,35 @@  - - net8.0 - enable - enable - + + net8.0 + enable + enable + - - - - - - + - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - + - + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + \ No newline at end of file diff --git a/user-management/src/Stickerlandia.UserManagement.Api/Dockerfile b/user-management/src/Stickerlandia.UserManagement.Api/Dockerfile index f4689224..dfc4bf98 100644 --- a/user-management/src/Stickerlandia.UserManagement.Api/Dockerfile +++ b/user-management/src/Stickerlandia.UserManagement.Api/Dockerfile @@ -12,8 +12,11 @@ COPY . ./ # Publish the application RUN dotnet publish src/Stickerlandia.UserManagement.Api/Stickerlandia.UserManagement.Api.csproj -o out -c Release -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime -RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* +FROM mcr.microsoft.com/dotnet/aspnet:8.0-noble-chiseled AS runtime +ARG DD_GIT_REPOSITORY_URL +ARG DD_GIT_COMMIT_SHA +ENV DD_GIT_REPOSITORY_URL=${DD_GIT_REPOSITORY_URL} +ENV DD_GIT_COMMIT_SHA=${DD_GIT_COMMIT_SHA} WORKDIR /App COPY --from=build /App/out . EXPOSE 80 diff --git a/user-management/src/Stickerlandia.UserManagement.Api/Dockerfile-x86 b/user-management/src/Stickerlandia.UserManagement.Api/Dockerfile-x86 index 03a3930a..0382dbc6 100644 --- a/user-management/src/Stickerlandia.UserManagement.Api/Dockerfile-x86 +++ b/user-management/src/Stickerlandia.UserManagement.Api/Dockerfile-x86 @@ -13,6 +13,10 @@ COPY . ./ RUN dotnet publish src/Stickerlandia.UserManagement.Api/Stickerlandia.UserManagement.Api.csproj -o out -c Release -r linux-x64 FROM mcr.microsoft.com/dotnet/aspnet:8.0-noble-chiseled AS runtime +ARG DD_GIT_REPOSITORY_URL +ARG DD_GIT_COMMIT_SHA +ENV DD_GIT_REPOSITORY_URL=${DD_GIT_REPOSITORY_URL} +ENV DD_GIT_COMMIT_SHA=${DD_GIT_COMMIT_SHA} WORKDIR /App COPY --from=build /App/out . EXPOSE 80