@@ -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 |
@@ -6,9 +6,16 @@ | |||
<ImplicitUsings>enable</ImplicitUsings> | |||
<SatelliteResourceLanguages>en-US</SatelliteResourceLanguages> | |||
<PublishReadyToRunComposite>true</PublishReadyToRunComposite> | |||
<UserSecretsId>0ee783ac-de1b-4ae2-96ce-773431a22f71</UserSecretsId> | |||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<ProjectReference Include="..\BPA.SAAS.Manage.Web.Core\BPA.SAAS.Manage.Web.Core.csproj" /> | |||
@@ -4,6 +4,6 @@ | |||
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor> | |||
</PropertyGroup> | |||
<PropertyGroup> | |||
<ActiveDebugProfile>BPA.SAAS.Manage.Web.Entry</ActiveDebugProfile> | |||
<ActiveDebugProfile>Docker</ActiveDebugProfile> | |||
</PropertyGroup> | |||
</Project> |
@@ -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 | |||
} | |||
} | |||
} |
@@ -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"] |
@@ -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>/${build_tag}/' k8s_manage.yaml" | |||
sh "sed -i 's/<BRANCH_NAME>/${env.BRANCH_NAME}/' k8s_manage.yaml" | |||
sh "sed -i 's/<NAMESPACES>/${params.environment}/' k8s_manage.yaml" | |||
sh "kubectl apply -f k8s_manage.yaml --record" | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,7 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<configuration> | |||
<packageSources> | |||
<add key="nuget.org" value="https://api.nuget.org/v3/index.json"/> | |||
<add key="bpa" value="http://10.2.1.25:10243/repository/bpa/index.json"/> | |||
</packageSources> | |||
</configuration> |
@@ -0,0 +1,64 @@ | |||
apiVersion: apps/v1 | |||
kind: Deployment | |||
metadata: | |||
name: manage | |||
namespace: kube-<NAMESPACES> | |||
spec: | |||
selector: | |||
matchLabels: | |||
app: manage | |||
replicas: 1 | |||
template: | |||
metadata: | |||
labels: | |||
app: manage | |||
spec: | |||
containers: | |||
- image: 10.2.1.24:10242/bpa/manage:<BUILD_TAG> | |||
imagePullPolicy: IfNotPresent | |||
name: manage | |||
env: | |||
- name: branch | |||
value: <BRANCH_NAME> | |||
- 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-<NAMESPACES> | |||
spec: | |||
type: ClusterIP | |||
ports: | |||
- port: 80 | |||
name: http | |||
selector: | |||
app: manage |