Jenkins 未部署最新的 github 提交代码

eia*_*a92 6 .net c# deployment jenkins cicd

我试图让 Jenkins 将最新代码从 github 分支部署到我的应用程序服务器。然而,当我推送到我的发布分支时,最新的提交代码不会被部署。詹金斯似乎部署了我的一些旧提交。当我打印时,Branch_NameGit_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)

eia*_*a92 3

问题是该线路bat 'git checkout .'在推送到应用程序服务器之前撤消了最新的更改。我删除了该行代码,现在最新的提交代码已成功推送。