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.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj b/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj index 86fc78b..c6dbf9e 100644 --- a/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj +++ b/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj @@ -6,9 +6,16 @@ enable en-US true + 0ee783ac-de1b-4ae2-96ce-773431a22f71 + Linux + + + + + diff --git a/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj.user b/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj.user index cf47803..96e7a74 100644 --- a/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj.user +++ b/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj.user @@ -4,6 +4,6 @@ ProjectDebugger - BPA.SAAS.Manage.Web.Entry + Docker \ No newline at end of file diff --git a/BPA.SAAS.Manage.Web.Entry/Properties/launchSettings.json b/BPA.SAAS.Manage.Web.Entry/Properties/launchSettings.json index 63fa388..7a77227 100644 --- a/BPA.SAAS.Manage.Web.Entry/Properties/launchSettings.json +++ b/BPA.SAAS.Manage.Web.Entry/Properties/launchSettings.json @@ -1,31 +1,36 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:53785", - "sslPort": 44342 - } - }, +{ "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, - "launchUrl": "", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "BPA.SAAS.Manage.Web.Entry": { "commandName": "Project", - "dotnetRunMessages": true, "launchBrowser": true, - "launchUrl": "", - "applicationUrl": "http://192.168.1.19:5006", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" - } + }, + "dotnetRunMessages": true, + "applicationUrl": "http://192.168.1.19:5006" + }, + "Docker": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}", + "publishAllPorts": true, + "useSSL": true + } + }, + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:53785", + "sslPort": 44342 } } } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8eca967 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +#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.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj", "BPA.SAAS.Manage.Web.Entry/"] +COPY ["BPA.SAAS.Manage.Web.Core/BPA.SAAS.Manage.Web.Core.csproj", "BPA.SAAS.Manage.Web.Core/"] +COPY ["BPA.SAAS.Manage.Application/BPA.SAAS.Manage.Application.csproj", "BPA.SAAS.Manage.Application/"] +COPY ["BPA.SAAS.Manage.Comm/BPA.SAAS.Manage.Comm.csproj", "BPA.SAAS.Manage.Comm/"] +COPY ["BPA.SAAS.Manage.Core/BPA.SAAS.Manage.Core.csproj", "BPA.SAAS.Manage.Core/"] +RUN dotnet restore "BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj" +COPY . . +WORKDIR "/src/BPA.SAAS.Manage.Web.Entry" +RUN dotnet build "BPA.SAAS.Manage.Web.Entry.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "BPA.SAAS.Manage.Web.Entry.csproj" -c Release -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "BPA.SAAS.Manage.Web.Entry.dll"] \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..ea2469a --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,126 @@ + +pipeline{ + agent any + parameters { + choice( + description: 'saasdev1:开发环境1 \n dev2:开发环境2 \n dev3:生产环境', + name: 'environment', + choices: ['saasdev1', 'dev2', '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/manage:${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/manage:${build_tag}" + + } + } + } + } + + + + + } + stage('Deploy') { + + steps { + script{ + echo "5. Deploy Stage" + // if(params.environment=='test') + // { + // input "确认要部署线上环境吗?" + // } + +sh "sed -i 's//${build_tag}/' k8s_manage.yaml" + sh "sed -i 's//${env.BRANCH_NAME}/' k8s_manage.yaml" + sh "sed -i 's//${params.environment}/' k8s_manage.yaml" + sh "kubectl apply -f k8s_manage.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_manage.yaml b/k8s_manage.yaml new file mode 100644 index 0000000..2ea99d2 --- /dev/null +++ b/k8s_manage.yaml @@ -0,0 +1,64 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: manage + namespace: kube- +spec: + + selector: + matchLabels: + app: manage + replicas: 1 + template: + metadata: + labels: + app: manage + spec: + containers: + - image: 10.2.1.24:10242/bpa/manage: + imagePullPolicy: IfNotPresent + name: manage + env: + - name: branch + value: + - name: TZ + value: Asia/Shanghai + ports: + - containerPort: 80 + protocol: TCP + volumeMounts: + - mountPath: "/app/appsettings.json" + name: manage-config + readOnly: true + subPath: appsetting + - mountPath: "/etc/localtime" + name: timezone + resources: + requests: + cpu: "100m" + memory: "112Mi" + limits: + cpu: "500m" + memory: "512Mi" + volumes: + - name: manage-config + configMap: + name: manage-config + - name: timezone + hostPath: + path: /usr/share/zoneinfo/Asia/Shanghai +--- +kind: Service +apiVersion: v1 +metadata: + labels: + app: manage + name: manage + namespace: kube- +spec: + type: ClusterIP + ports: + - port: 80 + name: http + selector: + app: manage