jenkins釋出dotnet core專案
阿新 • • 發佈:2020-11-20
使用上傳壓縮包的方式,將dotnet core專案上傳到jenkins,並自動建立linux系統服務,開機自啟
效果如下:
使用引數化構建
構建使用的shell指令碼如下
#!/bin/bash # 專案部署根目錄 rootpath="/Code/HNSZ/Server" # 專案執行目錄 path="${rootpath}/${Module}/" # 所要執行專案的啟動檔名稱 file="${path}RG.${Module}.Web.dll" # 生成的linux服務檔名稱 servicename="rg_${Module,,}.service" # linux服務所儲存的路徑 servicepath="/etc/systemd/system/$servicename" # 生成linux 服務檔案 echo "[Unit]" > $servicepath echo "Description=dotnet core 微服務" >> $servicepath echo "" >> $servicepath echo "[Service]" >> $servicepath echo "WorkingDirectory=$path" >> $servicepath echo "ExecStart=/usr/bin/dotnet $file" >> $servicepath echo "Restart=always" >> $servicepath echo "# Restart service after 10 seconds if the dotnet service crashes:" >> $servicepath echo "RestartSec=10" >> $servicepath echo "KillSignal=SIGINT" >> $servicepath echo "SyslogIdentifier=RG_${Module}_Web" >> $servicepath echo "User=root" >> $servicepath echo "Environment=ASPNETCORE_ENVIRONMENT=Production" >> $servicepath echo "Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false" >> $servicepath echo "" >> $servicepath echo "[Install]" >> $servicepath echo "WantedBy=multi-user.target" >> $servicepath # 生成服務結束 # 啟用服務 systemctl enable $servicename # 停止服務(防止第二次釋出時,服務為啟動狀態) systemctl stop $servicename cd $rootpath # 備份原目錄(第一次無備份,再次釋出,先備份原目錄) # 判斷指定目錄中是否有檔案(目錄不存在時也不影響) if [ "$(ls -A $path)" ]; then zip -q -r ${Module}_${BUILD_NUMBER}.zip $path else echo "首次部署,Directory : $path is Empty!!!" fi # 刪除原目錄 rm -rf $path # 解壓縮 unzip ${WORKSPACE}/data.zip -d $path # 啟動服務 systemctl start $servicename