eia*_*a92 6 .net c# deployment jenkins cicd
我试图让 Jenkins 将最新代码从 github 分支部署到我的应用程序服务器。然而,当我推送到我的发布分支时,最新的提交代码不会被部署。詹金斯似乎部署了我的一些旧提交。当我打印时,Branch_Name我Git_Commit得到了正确的分支和提交 ID,所以我不确定哪里出了问题。目前使用 Jenkins 2.319.2 服务器。
最新的 GitHub 提交代码被推送到 Jenkins Server WORKSPACE 目录,该目录如下所示:C:\Program Files (x86)\Jenkins\workspace\PROJ_release。在工作区目录中,我确认那里有最新的提交更改。Jenkins 服务器和部署到应用程序服务器之间的某个位置似乎没有获得最新的提交更改。
以下是我的詹金斯文件:
def url = ""
def branch = env.BRANCH_NAME
def msdeploy = 'C:\\Program Files (x86)\\IIS\\Microsoft Web Deploy V3'
if (branch == "master"|| branch == "release") {
node {
// get dontnet.exe reference
environment {
dotnet = 'C:\\Program Files\\dotnet\\sdk\\2.1.803\\dotnet.exe'
version = "${env.BUILD_NUMBER}"
}
// use nodejs 10.0.0 configured in global tools
env.NODEJS_HOME = "${tool 'NodeJS10.0.0'}"
env.PATH="${env.NODEJS_HOME};${env.PATH};"
stage("Clean Workspace"){
cleanWs()
}
stage('Pre Check'){
env.GIT_COMMIT = checkout(scm).GIT_COMMIT
env.type = ""
// Only allow push to dev(master) and test(release)
if (branch == "master") {
url = 'mymasterurl'
echo("Preceding with CI options for dev")
env.type = "Dev"
} else if (branch == "release"){
url = 'myreleaseurl'
echo("Preceding with CI options for highside prod")
env.type = "Release"
}
}
stage('Checkout/Clone Repository') {
checkout scm
}
stage('Restore'){
bat '%dotnet% dotnet restore PROJ.csproj'
}
stage('Build/Deploy'){
withCredentials([usernamePassword(credentialsId: 'WEBDEPLOY_SRV_ACCOUNT', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD'),
string(credentialsId:'PROJ_AD_PASSWORD',variable: 'AD_PASSWORD')]) {
def randomKey = UUID.randomUUID()
.toString()
.toUpperCase()
def input = readJSON file: 'appsettings.json'
//add Secrets
input['TOKEN']['SECURITYKEY'] = randomKey
input['AD_SERVICE_ACCOUNT']['USERNAME'] = env.USERNAME
input['AD_SERVICE_ACCOUNT']['PASSWORD'] = env.PASSWORD
echo "app settings: ${input}"
// add build info to environment ts file for front end
powershell ("""
(Get-Content .\\ClientApp\\environments\\environment.prod.ts).replace('%BUILD%', "${env.BUILD_NUMBER}") | Set-Content .\\ClientApp\\environments\\environment.prod.ts
(Get-Content .\\ClientApp\\environments\\environment.prod.ts).replace('%COMMIT%', "${env.GIT_COMMIT}") | Set-Content .\\ClientApp\\environments\\environment.prod.ts
(Get-Content .\\ClientApp\\environments\\environment.prod.ts).replace('%DATE%', "${BUILD_TIMESTAMP}") | Set-Content .\\ClientApp\\environments\\environment.prod.ts
""")
echo "CURRENT WORKSPACE : ${WORKSPACE}"
// write json pretty print it, indented with a configurable number of spaces
writeJSON file: 'appsettings.json', json: input, pretty: 4
def input2 = readJSON file: 'appsettings.json'
echo "app settings after: ${input2}"
// build the package to deploy to server
bat '%dotnet% dotnet msbuild PROJ.csproj /verbosity:diag /P:CreatePackageOnPublish=True /P:Configuration=Release /P:VersionAssembly=%BUILD_NUMBER% /P:DeployOnBuild=true /P:PublishProfile="WebPackage" /P:AllowUntrustedCertificate=true /p:Username=%USERNAME% /p:Password=%PASSWORD%'
// remove all the changes to avoujd git conflicts
bat 'git status'
bat 'git checkout .'
echo "Removed the pending changes"
bat 'git status'
// now deploy to server
bat ("""
cd \"${msdeploy}\"
msdeploy.exe -verb:sync -source:package="%WORKSPACE%\\PROJ.zip" -dest:auto,ComputerName=${url}:8172/msdeploy.axd,authtype='Basic',username=%USERNAME%,password=%PASSWORD% -allowUntrusted -enableRule:DoNotDeleteRule -enableRule:AppOffline
""")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |