diff --git a/.gitea/workflows/gitea-push-docker.yml b/.gitea/workflows/gitea-push-docker.yml new file mode 100644 index 0000000..6b67b59 --- /dev/null +++ b/.gitea/workflows/gitea-push-docker.yml @@ -0,0 +1,57 @@ +name: Create and publish a Docker image + +on: + push: + branches: ['main', 'staging'] + +env: + CONTEXT: SfeduSchedule + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + name: Publish image + container: catthehacker/ubuntu:act-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: https://github.com/docker/metadata-action@v4 + with: + images: ${{ vars.SERVER_DOMAIN }}/${{ gitea.repository }} + - name: Build an image from Dockerfile + run: | + cd ${{ env.CONTEXT }} && + docker build -t ${{ steps.meta.outputs.tags }} . + # - name: Run Trivy vulnerability scanner + # uses: aquasecurity/trivy-action@0.28.0 + # with: + # image-ref: '${{ steps.meta.outputs.tags }}' + # format: 'table' + # exit-code: '1' + # ignore-unfixed: true + # vuln-type: 'os,library' + # severity: 'CRITICAL,HIGH' + # - name: Run dockle + # uses: goodwithtech/dockle-action@main + # with: + # image: '${{ steps.meta.outputs.tags }}' + # format: 'list' + # exit-code: '1' + # exit-level: 'warn' + # ignore: 'CIS-DI-0001,CIS-DI-0010,DKL-DI-0006' + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ vars.SERVER_DOMAIN }} + username: ${{ gitea.actor }} + password: ${{ secrets.TOKEN }} + - name: Push + run: | + docker push '${{ steps.meta.outputs.tags }}' diff --git a/SfeduSchedule/Dockerfile b/SfeduSchedule/Dockerfile new file mode 100644 index 0000000..5bd42c1 --- /dev/null +++ b/SfeduSchedule/Dockerfile @@ -0,0 +1,22 @@ +FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine3.22 AS base +USER $APP_UID +WORKDIR /app +EXPOSE 8080 + +FROM mcr.microsoft.com/dotnet/sdk:9.0-alpine3.22 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["SfeduSchedule.csproj", "SfeduSchedule.csproj"] +RUN dotnet restore "SfeduSchedule.csproj" +COPY . . +WORKDIR "/src" +RUN dotnet build "SfeduSchedule.csproj" -c $BUILD_CONFIGURATION -o /app/build + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "SfeduSchedule.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "SfeduSchedule.dll"] \ No newline at end of file