@@ -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 |
@@ -4,8 +4,14 @@ | |||||
<TargetFramework>net6.0</TargetFramework> | <TargetFramework>net6.0</TargetFramework> | ||||
<Nullable>enable</Nullable> | <Nullable>enable</Nullable> | ||||
<ImplicitUsings>enable</ImplicitUsings> | <ImplicitUsings>enable</ImplicitUsings> | ||||
<UserSecretsId>919325b9-4db8-4985-809f-a3d306ddc5fc</UserSecretsId> | |||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | |||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\BPA.KitChen.GroupMealOrder.Application\BPA.KitChen.GroupMealOrder.Application.csproj" /> | <ProjectReference Include="..\BPA.KitChen.GroupMealOrder.Application\BPA.KitChen.GroupMealOrder.Application.csproj" /> | ||||
<ProjectReference Include="..\BPA.KitChen.GroupMealOrder.Core\BPA.KitChen.GroupMealOrder.Core.csproj" /> | <ProjectReference Include="..\BPA.KitChen.GroupMealOrder.Core\BPA.KitChen.GroupMealOrder.Core.csproj" /> | ||||
@@ -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.GroupMealOrder/BPA.KitChen.GroupMealOrder.csproj", "BPA.KitChen.GroupMealOrder/"] | |||||
COPY ["BPA.KitChen.GroupMealOrder.Application/BPA.KitChen.GroupMealOrder.Application.csproj", "BPA.KitChen.GroupMealOrder.Application/"] | |||||
COPY ["BPA.KitChen.GroupMealOrder.Core/BPA.KitChen.GroupMealOrder.Core.csproj", "BPA.KitChen.GroupMealOrder.Core/"] | |||||
COPY ["BPA.KitChen.GroupMealOrder.SqlSugar/BPA.KitChen.GroupMealOrder.SqlSugar.csproj", "BPA.KitChen.GroupMealOrder.SqlSugar/"] | |||||
RUN dotnet restore "BPA.KitChen.GroupMealOrder/BPA.KitChen.GroupMealOrder.csproj" | |||||
COPY . . | |||||
WORKDIR "/src/BPA.KitChen.GroupMealOrder" | |||||
RUN dotnet build "BPA.KitChen.GroupMealOrder.csproj" -c Release -o /app/build | |||||
FROM build AS publish | |||||
RUN dotnet publish "BPA.KitChen.GroupMealOrder.csproj" -c Release -o /app/publish /p:UseAppHost=false | |||||
FROM base AS final | |||||
WORKDIR /app | |||||
COPY --from=publish /app/publish . | |||||
ENTRYPOINT ["dotnet", "BPA.KitChen.GroupMealOrder.dll"] |
@@ -1,23 +1,14 @@ | |||||
{ | |||||
"$schema": "https://json.schemastore.org/launchsettings.json", | |||||
"iisSettings": { | |||||
"windowsAuthentication": false, | |||||
"anonymousAuthentication": true, | |||||
"iisExpress": { | |||||
"applicationUrl": "http://localhost:41386", | |||||
"sslPort": 44336 | |||||
} | |||||
}, | |||||
{ | |||||
"profiles": { | "profiles": { | ||||
"BPA.KitChen.GroupMealOrder": { | "BPA.KitChen.GroupMealOrder": { | ||||
"commandName": "Project", | "commandName": "Project", | ||||
"dotnetRunMessages": true, | |||||
"launchBrowser": true, | "launchBrowser": true, | ||||
"launchUrl": "api/index.html", | "launchUrl": "api/index.html", | ||||
"applicationUrl": "http://localhost:5248", | |||||
"environmentVariables": { | "environmentVariables": { | ||||
"ASPNETCORE_ENVIRONMENT": "Development" | "ASPNETCORE_ENVIRONMENT": "Development" | ||||
} | |||||
}, | |||||
"dotnetRunMessages": true, | |||||
"applicationUrl": "http://localhost:5248" | |||||
}, | }, | ||||
"IIS Express": { | "IIS Express": { | ||||
"commandName": "IISExpress", | "commandName": "IISExpress", | ||||
@@ -26,6 +17,22 @@ | |||||
"environmentVariables": { | "environmentVariables": { | ||||
"ASPNETCORE_ENVIRONMENT": "Development" | "ASPNETCORE_ENVIRONMENT": "Development" | ||||
} | } | ||||
}, | |||||
"Docker": { | |||||
"commandName": "Docker", | |||||
"launchBrowser": true, | |||||
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/weatherforecast", | |||||
"publishAllPorts": true, | |||||
"useSSL": true | |||||
} | |||||
}, | |||||
"$schema": "https://json.schemastore.org/launchsettings.json", | |||||
"iisSettings": { | |||||
"windowsAuthentication": false, | |||||
"anonymousAuthentication": true, | |||||
"iisExpress": { | |||||
"applicationUrl": "http://localhost:41386", | |||||
"sslPort": 44336 | |||||
} | } | ||||
} | } | ||||
} | |||||
} |
@@ -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.GroupMealOrder/BPA.KitChen.GroupMealOrder.csproj", "BPA.KitChen.GroupMealOrder/"] | |||||
COPY ["BPA.KitChen.GroupMealOrder.Application/BPA.KitChen.GroupMealOrder.Application.csproj", "BPA.KitChen.GroupMealOrder.Application/"] | |||||
COPY ["BPA.KitChen.GroupMealOrder.Core/BPA.KitChen.GroupMealOrder.Core.csproj", "BPA.KitChen.GroupMealOrder.Core/"] | |||||
COPY ["BPA.KitChen.GroupMealOrder.SqlSugar/BPA.KitChen.GroupMealOrder.SqlSugar.csproj", "BPA.KitChen.GroupMealOrder.SqlSugar/"] | |||||
RUN dotnet restore "BPA.KitChen.GroupMealOrder/BPA.KitChen.GroupMealOrder.csproj" | |||||
COPY . . | |||||
WORKDIR "/src/BPA.KitChen.GroupMealOrder" | |||||
RUN dotnet build "BPA.KitChen.GroupMealOrder.csproj" -c Release -o /app/build | |||||
FROM build AS publish | |||||
RUN dotnet publish "BPA.KitChen.GroupMealOrder.csproj" -c Release -o /app/publish /p:UseAppHost=false | |||||
FROM base AS final | |||||
WORKDIR /app | |||||
COPY --from=publish /app/publish . | |||||
ENTRYPOINT ["dotnet", "BPA.KitChen.GroupMealOrder.dll"] |
@@ -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/groupmeal:${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/groupmeal:${build_tag}" | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
stage('Deploy') { | |||||
steps { | |||||
script{ | |||||
echo "5. Deploy Stage" | |||||
// if(params.environment=='test') | |||||
// { | |||||
// input "确认要部署线上环境吗?" | |||||
// } | |||||
sh "sed -i 's/<BUILD_TAG>/${build_tag}/' k8s_groupmeal.yaml" | |||||
sh "sed -i 's/<BRANCH_NAME>/${env.BRANCH_NAME}/' k8s_groupmeal.yaml" | |||||
sh "sed -i 's/<NAMESPACES>/${params.environment}/' k8s_groupmeal.yaml" | |||||
sh "kubectl apply -f k8s_groupmeal.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: groupmealorder | |||||
namespace: kube-<NAMESPACES> | |||||
spec: | |||||
selector: | |||||
matchLabels: | |||||
app: groupmealorder | |||||
replicas: 1 | |||||
template: | |||||
metadata: | |||||
labels: | |||||
app: groupmealorder | |||||
spec: | |||||
containers: | |||||
- image: 10.2.1.24:10242/bpa/groupmealorder:<BUILD_TAG> | |||||
imagePullPolicy: IfNotPresent | |||||
name: groupmealorder | |||||
env: | |||||
- name: branch | |||||
value: <BRANCH_NAME> | |||||
- name: TZ | |||||
value: Asia/Shanghai | |||||
ports: | |||||
- containerPort: 80 | |||||
protocol: TCP | |||||
volumeMounts: | |||||
- mountPath: "/app/appsettings.json" | |||||
name: groupmealorder-config | |||||
readOnly: true | |||||
subPath: appsetting | |||||
- mountPath: "/etc/localtime" | |||||
name: timezone | |||||
resources: | |||||
requests: | |||||
cpu: "100m" | |||||
memory: "112Mi" | |||||
limits: | |||||
cpu: "500m" | |||||
memory: "512Mi" | |||||
volumes: | |||||
- name: groupmealorder-config | |||||
configMap: | |||||
name: groupmealorder-config | |||||
- name: timezone | |||||
hostPath: | |||||
path: /usr/share/zoneinfo/Asia/Shanghai | |||||
--- | |||||
kind: Service | |||||
apiVersion: v1 | |||||
metadata: | |||||
labels: | |||||
app: groupmealorder | |||||
name: groupmealorder | |||||
namespace: kube-<NAMESPACES> | |||||
spec: | |||||
type: ClusterIP | |||||
ports: | |||||
- port: 80 | |||||
name: http | |||||
selector: | |||||
app: groupmealorder |