{
  "_class" : "org.jenkinsci.plugins.workflow.job.WorkflowRun",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "com.cloudbees.jenkins.GitHubPushCause",
          "shortDescription" : "Started by GitHub push by younex1"
        },
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        },
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.libs.LibrariesAction"
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/main" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 3,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "3365492e0eebdab580a2e8c2b0c0eea00e89d606",
            "branch" : [
              {
                "SHA1" : "3365492e0eebdab580a2e8c2b0c0eea00e89d606",
                "name" : "refs/remotes/origin/main"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3365492e0eebdab580a2e8c2b0c0eea00e89d606",
            "branch" : [
              {
                "SHA1" : "3365492e0eebdab580a2e8c2b0c0eea00e89d606",
                "name" : "refs/remotes/origin/main"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "3365492e0eebdab580a2e8c2b0c0eea00e89d606",
        "branch" : [
          {
            "SHA1" : "3365492e0eebdab580a2e8c2b0c0eea00e89d606",
            "name" : "refs/remotes/origin/main"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/younex1/blut24-landing.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.cps.EnvActionImpl"
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    },
    {
      "_class" : "org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction"
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.workflow.job.views.FlowGraphAction"
    },
    {
      
    },
    {
      
    },
    {
      
    }
  ],
  "artifacts" : [
    
  ],
  "building" : false,
  "description" : null,
  "displayName" : "#3 3365492",
  "duration" : 32350,
  "estimatedDuration" : 28038,
  "executor" : null,
  "fullDisplayName" : "blut24-landing #3 3365492",
  "id" : "3",
  "keepLog" : false,
  "number" : 3,
  "queueId" : 5444,
  "result" : "SUCCESS",
  "timestamp" : 1785220314292,
  "url" : "https://jenkins.younex.de/job/blut24-landing/3/",
  "changeSets" : [
    {
      "_class" : "hudson.plugins.git.GitChangeSetList",
      "items" : [
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            ".env.example",
            "server/utils/registrationValidation.ts",
            "server/api/registration/submit.post.ts"
          ],
          "commitId" : "d91c3a46ec2b1420a63ba8ecab63a9cb21593616",
          "timestamp" : 1785219798000,
          "author" : {
            "absoluteUrl" : "https://jenkins.younex.de/user/info",
            "fullName" : "info"
          },
          "authorEmail" : "info@logyou.de",
          "comment" : "registration: operator test domains may register for any clinic\u000a\u000aAdds REGISTRATION_TEST_DOMAINS (comma-separated). Addresses on those domains skip\u000athe \"e-mail domain belongs to the chosen Standort\" check, so the flow can be\u000aexercised end-to-end against arbitrary clinics.\u000a\u000aThat check is the only thing preventing a stranger from registering someone else's\u000ahospital, so it is never relaxed for real users. The bypass therefore:\u000a  - does not exist at all when the variable is empty or unset (the default)\u000a  - never counts as domain-verified (domain_verified stays 0)\u000a  - forces needs_manual_approval and prefixes the note with [TESTREGISTRIERUNG via <domain>]\u000a  - leaves the freemail blocklist and the per-Standort duplicate guard intact\u000a\u000aVerified: younex.de/it-beratung.it accepted for a non-matching Charité Standort;\u000aa non-whitelisted business domain and a freemail address both still rejected; and\u000awith the variable unset younex.de is rejected again.\u000a\u000aCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\u000a",
          "date" : "2026-07-28 08:23:18 +0200",
          "id" : "d91c3a46ec2b1420a63ba8ecab63a9cb21593616",
          "msg" : "registration: operator test domains may register for any clinic",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "server/utils/registrationValidation.ts"
            },
            {
              "editType" : "edit",
              "file" : "server/api/registration/submit.post.ts"
            },
            {
              "editType" : "edit",
              "file" : ".env.example"
            }
          ]
        },
        {
          "_class" : "hudson.plugins.git.GitChangeSet",
          "affectedPaths" : [
            "Jenkinsfile",
            "deploy/deploy.sh"
          ],
          "commitId" : "3365492e0eebdab580a2e8c2b0c0eea00e89d606",
          "timestamp" : 1785220306000,
          "author" : {
            "absoluteUrl" : "https://jenkins.younex.de/user/info",
            "fullName" : "info"
          },
          "authorEmail" : "info@logyou.de",
          "comment" : "ci: move the deploy concurrency guard from Jenkins to the target\u000a\u000aEvery build after the first sat in the queue as a BlockedItem and never started\u000auntil Jenkins was restarted - observed three times on this controller. The only\u000aplausible cause was disableConcurrentBuilds(), so it is removed.\u000a\u000aThe race it guarded against is two deploys swapping the `current` symlink at the\u000asame time. That resource lives on the TARGET, not on Jenkins, so deploy.sh now\u000atakes an flock on /var/lock/blut24-landing-deploy.lock for the whole run. That is\u000astrictly better: it also covers deploys started by hand or from another controller,\u000awhich the Jenkins-side option never did.\u000a\u000aCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\u000a",
          "date" : "2026-07-28 08:31:46 +0200",
          "id" : "3365492e0eebdab580a2e8c2b0c0eea00e89d606",
          "msg" : "ci: move the deploy concurrency guard from Jenkins to the target",
          "paths" : [
            {
              "editType" : "edit",
              "file" : "Jenkinsfile"
            },
            {
              "editType" : "edit",
              "file" : "deploy/deploy.sh"
            }
          ]
        }
      ],
      "kind" : "git"
    }
  ],
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.younex.de/user/info",
      "fullName" : "info"
    }
  ],
  "inProgress" : false,
  "nextBuild" : {
    "number" : 4,
    "url" : "https://jenkins.younex.de/job/blut24-landing/4/"
  },
  "previousBuild" : {
    "number" : 2,
    "url" : "https://jenkins.younex.de/job/blut24-landing/2/"
  }
}