pipeline { agent any environment { REGISTRY = 'git.jerryyan.net' IMAGE = "${REGISTRY}/q792602257/agent-coding-workflow" TAG = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() } stages { stage('Build & Push') { steps { withCredentials([usernamePassword( credentialsId: 'gitea-registry', usernameVariable: 'REGISTRY_USER', passwordVariable: 'REGISTRY_PASS' )]) { sh """ docker build -t ${IMAGE}:${TAG} -t ${IMAGE}:latest . echo "\$REGISTRY_PASS" | docker login ${REGISTRY} -u "\$REGISTRY_USER" --password-stdin docker push ${IMAGE}:${TAG} docker push ${IMAGE}:latest """ } } post { always { sh 'docker logout ${REGISTRY} || true' } } } } post { failure { echo "Build failed for commit ${env.TAG}" } } }