기본적으로 활성화되어 있는 Jenkins에서 CSRF 보호를 비활성화해야 합니다. 문제는 컨테이너화 후에 jenkins가 포함된 새 컨테이너를 시작할 때 "유효한 이동 경로 없음" 오류가 발생한다는 것입니다.
현재 이 cmd를 사용하여 젠킨스 애플리케이션을 열고 있습니다.
/usr/bin/java -server -Djava.net.preferIPv4Stack=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration=false -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=9090 --ajp13Port=-1
답변1
CSRF를 비활성화하려면 Groovy를 사용하여 "Jenkins 관리"/"스크립트 콘솔"을 엽니다.
import jenkins.model.Jenkins
def instance = Jenkins.instance
instance.setCrumbIssuer(null)
답변2
난 그냥 추가
-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
따라서 완전한 명령은 다음과 같습니다.
docker run --restart=always --name jenkins --add-host="xxxx:xx" --add-host="updates.jenkins-ci.org:7.223.199.227" --add-host="updates.jenkins.org:7.223.199.227" -u root -d -p 8080:8080 -p 50000:50000 -v /root/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Dhudson.model.DownloadService.noSignatureCheck=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true" docker.io/jenkins/jenkins:lts
답변3
"교차 사이트 요청 위조 방지" 매개변수를 선택 취소한 후 @hoefling에 추가되었습니다. 구하다.
"Jenkins 관리"로 이동하여 "디스크에서 구성 다시 로드"를 클릭합니다.
답변4
사용 사례에 대해 100% 확신할 수는 없지만 항상 Docker를 사용하여 새 Docker 이미지를 만들고 Dockerfile
해당 이미지를 실행할 수 있는 옵션이 있습니다. 에서는 Dockerfile
환경 변수를 사용하여 시스템 속성을 설정할 수 있습니다 JAVA_OPTS
.
FROM jenkins/jenkins:latest
ENV JAVA_OPTS -Djava.net.preferIPv4Stack=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration=false