This commit is contained in:
2025-05-09 23:49:09 +08:00
parent 765dd0ee5c
commit d7672fbb48

View File

@@ -7,11 +7,12 @@ variables:
Namespace: "yescent" Namespace: "yescent"
ProjectName: "Yes.Blog" ProjectName: "Yes.Blog"
PackageName: "yes.blog" PackageName: "yes.blog"
MasterPackageName: "hyrule"
AppPort: "9009" AppPort: "9009"
DockerfilePath: "./${ProjectName}/Dockerfile" DockerfilePath: "./${ProjectName}/Dockerfile"
DockerImage: "${Ali_Docker_Registry}/${Namespace}/${PackageName}" DockerImage: "${Ali_Docker_Registry}/${Namespace}/${PackageName}"
MasterDockerImage: "${Ali_Docker_Registry}/${Namespace}/${MasterPackageName}"
check-merge-target: check-merge-target:
@@ -38,7 +39,8 @@ build_develop:
stage: build stage: build
script: script:
- Version=$(sed -n 's/.*<Version>\([^<]*\)<\/Version>.*/\1/p' ./${ProjectName}/${ProjectName}.csproj) - Version=$(sed -n 's/.*<Version>\([^<]*\)<\/Version>.*/\1/p' ./${ProjectName}/${ProjectName}.csproj)
- docker build -f ${DockerfilePath} -t ${DockerImage}:v${Version}-develop${CI_PIPELINE_ID} . - DevelopVersion=v${Version}-develop${CI_PIPELINE_ID}
- docker build -f ${DockerfilePath} -t ${DockerImage}:${DevelopVersion} .
only: only:
- develop - develop
@@ -48,9 +50,10 @@ build_release:
stage: build stage: build
script: script:
- Version=$(sed -n 's/.*<Version>\([^<]*\)<\/Version>.*/\1/p' ./${ProjectName}/${ProjectName}.csproj) - Version=$(sed -n 's/.*<Version>\([^<]*\)<\/Version>.*/\1/p' ./${ProjectName}/${ProjectName}.csproj)
- docker build -f ${DockerfilePath} -t ${DockerImage}:v${Version}-release${CI_PIPELINE_ID} . - ReleaseVersion=v${Version}-release${CI_PIPELINE_ID}
- docker build -f ${DockerfilePath} -t ${DockerImage}:${ReleaseVersion} .
- docker login -u ${Ali_Docker_UserName} -p ${Ali_Docker_Password} ${Ali_Docker_Registry} - docker login -u ${Ali_Docker_UserName} -p ${Ali_Docker_Password} ${Ali_Docker_Registry}
- docker push ${DockerImage}:v${Version}-release${CI_PIPELINE_ID} - docker push ${DockerImage}:${ReleaseVersion}
only: only:
- release - release
@@ -59,11 +62,12 @@ build_master:
stage: build stage: build
script: script:
- Version=$(sed -n 's/.*<Version>\([^<]*\)<\/Version>.*/\1/p' ./${ProjectName}/${ProjectName}.csproj) - Version=$(sed -n 's/.*<Version>\([^<]*\)<\/Version>.*/\1/p' ./${ProjectName}/${ProjectName}.csproj)
- docker build -f ${DockerfilePath} -t ${DockerImage}:v${Version}.${CI_PIPELINE_ID} . - MasterVersion=v${Version}.${CI_PIPELINE_ID}
- docker tag ${DockerImage}:v${Version}.${CI_PIPELINE_ID} ${DockerImage}:latest - docker build -f ${DockerfilePath} -t ${MasterDockerImage}:${MasterVersion} .
- docker tag ${MasterDockerImage}:${MasterVersion} ${MasterDockerImage}:latest
- docker login -u ${Ali_Docker_UserName} -p ${Ali_Docker_Password} ${Ali_Docker_Registry} - docker login -u ${Ali_Docker_UserName} -p ${Ali_Docker_Password} ${Ali_Docker_Registry}
- docker push ${DockerImage}:v${Version}.${CI_PIPELINE_ID} - docker push ${MasterDockerImage}:${MasterVersion}
- docker rm -f ${DockerImage}:latest && docker push ${DockerImage}:latest - docker push ${MasterDockerImage}:latest && docker rm -f ${MasterDockerImage}:latest
only: only:
- master - master
@@ -73,6 +77,7 @@ deploy_production:
stage: deploy stage: deploy
before_script: before_script:
- Version=$(sed -n 's/.*<Version>\([^<]*\)<\/Version>.*/\1/p' ./${ProjectName}/${ProjectName}.csproj) - Version=$(sed -n 's/.*<Version>\([^<]*\)<\/Version>.*/\1/p' ./${ProjectName}/${ProjectName}.csproj)
- ReleaseVersion=v${Version}-release${CI_PIPELINE_ID}
## 安装ssh-agent ## 安装ssh-agent
- 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )' - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s) - eval $(ssh-agent -s)
@@ -89,6 +94,7 @@ deploy_production:
- cp "$SSH_KNOWN_HOSTS" ~/.ssh/known_hosts - cp "$SSH_KNOWN_HOSTS" ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts
script: script:
- ssh -t ${Server_Ip} "(docker stop ${PackageName} && docker rm ${PackageName} || echo 'Container ${PackageName} not found, skipping removal.') && docker login -u ${Ali_Docker_UserName} -p ${Ali_Docker_Password} ${Ali_Docker_Registry} && docker run -e TZ=Asia/Shanghai -d --restart=always -v /data/yesblog:/app/files --name ${PackageName} -p ${AppPort}:8080 ${DockerImage}:v${Version}-release${CI_PIPELINE_ID}" - ssh -t ${Server_Ip} "(docker stop ${PackageName} && docker rm ${PackageName} || echo 'Container ${PackageName} not found, skipping removal.') && docker login -u ${Ali_Docker_UserName} -p ${Ali_Docker_Password} ${Ali_Docker_Registry} && docker run -e TZ=Asia/Shanghai -d --restart=always -v /data/yesblog:/app/files --name ${PackageName} -p ${AppPort}:8080 ${DockerImage}:${ReleaseVersion}"
only: only:
- release - release