diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..3729ff0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md \ No newline at end of file diff --git a/BPA.KitChen.StoreManagement/BPA.KitChen.StoreManagement.csproj b/BPA.KitChen.StoreManagement/BPA.KitChen.StoreManagement.csproj index 67e7bc2..aa18b32 100644 --- a/BPA.KitChen.StoreManagement/BPA.KitChen.StoreManagement.csproj +++ b/BPA.KitChen.StoreManagement/BPA.KitChen.StoreManagement.csproj @@ -4,8 +4,14 @@ net6.0 enable enable + 3c44db5d-c932-45cf-ba80-5ab431bd9afb + Linux + + + + diff --git a/BPA.KitChen.StoreManagement/Dockerfile b/BPA.KitChen.StoreManagement/Dockerfile new file mode 100644 index 0000000..1d492d3 --- /dev/null +++ b/BPA.KitChen.StoreManagement/Dockerfile @@ -0,0 +1,25 @@ +#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src +COPY ["BPA.KitChen.StoreManagement/BPA.KitChen.StoreManagement.csproj", "BPA.KitChen.StoreManagement/"] +COPY ["BPA.KitChen.StoreManagement.Application/BPA.KitChen.StoreManagement.Application.csproj", "BPA.KitChen.StoreManagement.Application/"] +COPY ["BPA.KitChen.StoreManagement.Core/BPA.KitChen.StoreManagement.Core.csproj", "BPA.KitChen.StoreManagement.Core/"] +COPY ["BPA.KitChen.StoreManagement.SqlSugar/BPA.KitChen.StoreManagement.SqlSugar.csproj", "BPA.KitChen.StoreManagement.SqlSugar/"] +RUN dotnet restore "BPA.KitChen.StoreManagement/BPA.KitChen.StoreManagement.csproj" +COPY . . +WORKDIR "/src/BPA.KitChen.StoreManagement" +RUN dotnet build "BPA.KitChen.StoreManagement.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "BPA.KitChen.StoreManagement.csproj" -c Release -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "BPA.KitChen.StoreManagement.dll"] \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1d492d3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src +COPY ["BPA.KitChen.StoreManagement/BPA.KitChen.StoreManagement.csproj", "BPA.KitChen.StoreManagement/"] +COPY ["BPA.KitChen.StoreManagement.Application/BPA.KitChen.StoreManagement.Application.csproj", "BPA.KitChen.StoreManagement.Application/"] +COPY ["BPA.KitChen.StoreManagement.Core/BPA.KitChen.StoreManagement.Core.csproj", "BPA.KitChen.StoreManagement.Core/"] +COPY ["BPA.KitChen.StoreManagement.SqlSugar/BPA.KitChen.StoreManagement.SqlSugar.csproj", "BPA.KitChen.StoreManagement.SqlSugar/"] +RUN dotnet restore "BPA.KitChen.StoreManagement/BPA.KitChen.StoreManagement.csproj" +COPY . . +WORKDIR "/src/BPA.KitChen.StoreManagement" +RUN dotnet build "BPA.KitChen.StoreManagement.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "BPA.KitChen.StoreManagement.csproj" -c Release -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "BPA.KitChen.StoreManagement.dll"] \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..dcc2a85 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,126 @@ + +pipeline{ + agent any + parameters { + choice( + description: 'saasdev1:开发环境1 \n saastest1:测试环境2 \n dev3:生产环境', + name: 'environment', + choices: ['saasdev1', 'saastest1', 'dev3'] + ) + + choice( + description: '执行操作(发布|回滚)', + name: 'operation', + choices: ['develop', 'rollback'] + ) + + choice( + description: '分支名', + name: 'branchName', + choices: ['master'] + ) + + string( + name: 'tag', + defaultValue: '', + description: '版本tag' + ) + + } + + stages + { + stage('Prepare') { + steps { + script{ + echo "1.Prepare Stage" + echo "当前环境${params.environment}" + if(params.operation=='develop') + { + checkout scm + script { + build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim() + if (env.BRANCH_NAME != 'master') { + build_tag = "${env.BRANCH_NAME}-${build_tag}" + } + } + } + else{ + script { + if(params.branchName!= 'master') + { + build_tag = "${params.branchName}-${params.tag}" + } + else + { + build_tag="${params.tag}" + } + } + } + } + } + } + stage('Test') { + steps { + script{ + echo "2.Test Stage" + } + } + + } + stage('Build') { + steps { + script{ + echo "3.Build Docker Image Stage" + if(params.operation=='develop') + { + + sh "docker build -t 10.2.1.24:10242/bpa/storemanagement:${build_tag} ." + + } + } + } + } + + + stage('Push') { + steps { + script{ + echo "4.Push Docker Image Stage" + withCredentials([usernamePassword(credentialsId: 'harbor', passwordVariable: 'harborPassword', usernameVariable: 'harborUser')]) { + sh "docker login -u ${harborUser} -p ${harborPassword} 10.2.1.24:10242" + if(params.operation=='develop') + { + sh "docker push 10.2.1.24:10242/bpa/storemanagement:${build_tag}" + + } + } + } + } + + + + + } + stage('Deploy') { + + steps { + script{ + echo "5. Deploy Stage" + // if(params.environment=='test') + // { + // input "确认要部署线上环境吗?" + // } + +sh "sed -i 's//${build_tag}/' k8s_storemanagement.yaml" + sh "sed -i 's//${env.BRANCH_NAME}/' k8s_storemanagement.yaml" + sh "sed -i 's//${params.environment}/' k8s_storemanagement.yaml" + sh "kubectl apply -f k8s_storemanagement.yaml --record" + + + + } + } + } + } +} diff --git a/NuGet.config b/NuGet.config new file mode 100644 index 0000000..b149801 --- /dev/null +++ b/NuGet.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/k8s_storemanagement.yaml b/k8s_storemanagement.yaml new file mode 100644 index 0000000..c0e3796 --- /dev/null +++ b/k8s_storemanagement.yaml @@ -0,0 +1,64 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: storemanagement + namespace: kube- +spec: + + selector: + matchLabels: + app: storemanagement + replicas: 1 + template: + metadata: + labels: + app: storemanagement + spec: + containers: + - image: 10.2.1.24:10242/bpa/storemanagement: + imagePullPolicy: IfNotPresent + name: storemanagement + env: + - name: branch + value: + - name: TZ + value: Asia/Shanghai + ports: + - containerPort: 80 + protocol: TCP + volumeMounts: + - mountPath: "/app/appsettings.json" + name: storemanagement-config + readOnly: true + subPath: appsetting + - mountPath: "/etc/localtime" + name: timezone + resources: + requests: + cpu: "100m" + memory: "112Mi" + limits: + cpu: "500m" + memory: "512Mi" + volumes: + - name: storemanagement-config + configMap: + name: storemanagement-config + - name: timezone + hostPath: + path: /usr/share/zoneinfo/Asia/Shanghai +--- +kind: Service +apiVersion: v1 +metadata: + labels: + app: storemanagement + name: storemanagement + namespace: kube- +spec: + type: ClusterIP + ports: + - port: 80 + name: http + selector: + app: storemanagement