Jenkins HTML Publisher 플러그인에 이상한 문제가 있는데, Jenkins에서 볼 때 보고서에 추가 한 모든 멋진 CSS가 제거됩니다. 보고서를 로컬로 다운로드하면 CSS 형식을 볼 수 있습니다. Jenkins에 CSS를 볼 수있는 설정이 있습니까?
Jenkins의 내 HTML 게시자 설정 :
Jenkins에 표시 될 때 내 보고서 페이지 :
로컬에 표시 될 때 내 보고서 페이지 :
답변:
문제를 파악했습니다. 다른 사용자를 위해 여기에서 공유합니다.
Jenkins의 콘텐츠 보안 정책으로 인해 CSS가 제거되었습니다. ( https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy )
기본 규칙은 다음과 같이 설정됩니다.
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
이 규칙 세트의 결과는 다음과 같습니다.
이 규칙을 완화하려면 다음으로 이동하십시오.
왼쪽의 스크립트 콘솔을 클릭하고 다음 명령을 입력하십시오.
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
그리고 실행을 누릅니다. 출력이 "결과"헤더 아래에 '결과 :'로 표시되면 보호가 비활성화 된 것입니다. 빌드를 다시 실행하면 보관 된 새 HTML 파일에 CSS가 활성화되어 있음을 알 수 있습니다.
에서 가상 코어 , HTML 보고서에 이미지를 사용하려면
sudo vi /etc/sysconfig/jenkins
JENKINS_JAVA_OPTION
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;\""
젠킨스 서버를 다시 시작한 후에도 작동합니다.
지령
default-src : default-src는 JavaScript, 이미지, CSS, 글꼴, AJAX 요청, 프레임, HTML5 미디어와 같은 콘텐츠를로드하기위한 기본 정책입니다.
img-src : 유효한 이미지 소스를 정의합니다.
소스 값
'self'- 동일한 출처 (동일한 체계, 호스트 및 포트)에서 리소스를로드 할 수 있습니다.
사용법 :
default-src 'self'
'안전하지 않은 인라인은' - 의 URI : 같은 스타일 속성의 onclick 또는 스크립트 태그의 몸 인라인 소스 요소의 사용과 자바 스크립트합니다 (이 적용되는 소스의 상황에 따라 다름) 할 수 있습니다.
사용법 :
default-src 'unsafe-inline'
'안전 - 평가는' - ) (자바 스크립트의 평가 동적으로 안전하지 않은 코드를 평가할 수있다
사용법 :
default-src 'unsafe-eval'
데이터 : - 데이터 체계를 통해 리소스를로드 할 수 있습니다 (예 : Base64 인코딩 이미지).
사용법 :
img-src 'self' data:
<object type="image/svg+xml" data="imgs/lifecycle-diagram.svg"><span class="alt">lifecycleDiagram</span></object>
(내장 된 plantuml 다이어그램에 대한 대화 형 asciidoctor 스프링-레스트 문서의 결과) object-src를 self로 설정해야합니다. 탈출 공지 :JENKINS_JAVA_OPTIONS='-Djava.awt.headless=true -Dhudson.security.HudsonPrivateSecurityRealm.ID_REGEX="^[a-zA-Z0-9_.-]+$" -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; default-src '\''none'\''; img-src '\''self'\''; style-src '\''self'\''; object-src '\''self'\'';"'
vi /etc/default/jenkins
를 위해 변수와 함께 사용 했습니다JAVA_ARGS
“Manage Jenkins”->“Script console”로 이동하여 아래 명령을 실행하십시오.
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;")
(다음 솔루션은 Windows 용입니다.)
영구적 인 수정은 줄을 변경하는 것입니다 [Jenkins directory]\jenkins.xml
(나를 위해 그것은에 있습니다 C:\Jenkins\jenkins.xml
)
<executable>java.exe</executable>
<arguments>[arguments are here]</arguments>
공백으로 구분 된 인수 목록에 다음 인수를 추가합니다.
-Dhudson.model.DirectoryBrowserSupport.CSP=
그런 다음 Jenkins 서비스를 다시 시작하여 변경 사항을 적용합니다.
-Dfile.encoding=UTF-8
논쟁에 추가 했습니다
Vall에 지정된대로 groovy 명령을 사용하여이 문제를 해결할 수 있습니다. 의 답변에 .
효과는 Jenkins가 다시 시작될 때까지 적용되며 나중에 다시 수행해야합니다.
이 문제를 해결하는 해결책은 젠킨스가 시작될 때마다이를 수행 할 작업을 구성하는 것입니다.
시작 트리거 플러그인 을 사용하여이 작업을 수행 할 수 있습니다 .
설치 후 새 작업을 만들고 확인해야 할 빌드 트리거 섹션 아래에 새 확인란이 생깁니다 .
그런 다음 다음 명령으로 Execute system Groovy 스크립트 빌드 단계를 추가합니다.
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
저장하면 모든 것이 작동합니다.
우분투 14 버전의 경우 특별한 플러그인이 유용했습니다.
https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger- 젠킨스 시작시 작업 시작
https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin-System Groovy 스크립트 실행
그리고 Jenkins를 다시 시작하고 매개 변수를 설정하는 작업을 수행했습니다.
그리고 parametr를 설정하기 위해 시스템 Groovy 스크립트를 추가했습니다. System.setProperty ( "hudson.model.DirectoryBrowserSupport.CSP", "sandbox; img-src 'self';")
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-same-origin allow-scripts; default-src 'self'; script-src * 'unsafe-eval'; img-src *; style-src * 'unsafe-inline'; font-src *")
그루비 스크립트 파일 영구적으로 설정 작성을 위해 $ JENKINS_HOME을 / init.groovy , 또는 에는 .groovy 디렉토리에있는 파일 $ JENKINS_HOME / init.groovy.d / 다음 내용 :
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")
systemctl 다시 시작 젠킨스
https://wiki.jenkins.io/display/JENKINS/Post-initialization+script
jenkins.xml 파일을 열고 아래와 같이 인수를 복사합니다. 영구적으로 수정됩니다. 완료되면 컴퓨터를 다시 시작하십시오.
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts; default-src 'self'; style-src 'self' 'unsafe-inline';" -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments
에 CentOS는 , 솔루션 아래는 (다른 답변의 의견에 제안 된) 나를 위해 일했다 유일한 하나입니다 :
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;")
내 특정 문제는 Serenity BDD 보고서에서 이미지 / css가 누락되었습니다. 이 단계를 수행 한 후 내 Serenity 보고서에는 이 변경 이전 에 실행 된 빌드의 보고서를 포함하여 모든 이미지 / css가 제대로 렌더링 되었습니다. 이 솔루션은 게시 된 모든 HTML 기반 보고서에도 적용됩니다.
응답하기에는 너무 늦었지만 공유 할 생각입니다.
Tomcat에 배포 된 Jenkins와 씨름하고 스크립트 실행을 시도했지만 도움이되지만 Tomcat이 재부팅되면 사라집니다.
tomcat의 catalina.properties에 속성을 설정하여 영구적으로 수정했습니다.
속성 파일 : tomcat_installation_dir / conf / catalina.properties 마지막에 catalina.properties에 아래 줄을 복사하여 붙여 넣으십시오 (기존 속성을 엉망으로 만들지 않도록 어디에서나 설정할 수 있음).
-Dhudson.model.DirectoryBrowserSupport.CSP = ""
Jenkins-X를 사용하는 경우 시스템 속성을 영구적으로 설정하려면 myvalues.yaml
다음 내용으로 현재 디렉터리에 파일을 만듭니다 .
jenkins:
Master:
JavaOpts: >
-Dhudson.model.DirectoryBrowserSupport.CSP=
그런 다음 업그레이드하여 수행 할 수있는 jenkins-x 플랫폼을 다시 시작합니다.
$ jx upgrade platform --always-upgrade
# Presumably jx.exe is used if on Windows (not tested)
실제로 플랫폼을 업그레이드하지 않으려면 동일한 버전으로 강제로 업그레이드하십시오.
$ version=$(jx version --no-version-check\
| grep 'jenkins x platform' | sed -e 's/^jenkins.\+ //')
$ jx upgrade platform --version ${version} --always-upgrade
asciidoctor-maven-plugin
플러그인을 사용 하여 asciidoc 파일에서 HTML 문서를 생성하여 Jenkins에 추가로 게시하는 경우 플러그인 구성을 업데이트하고 linkcss
속성을 추가 합니다.
<configuration>
<attributes>
<linkcss>true</linkcss>
</attributes>
<backend>html5</backend>
<outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
</configuration>
에 데비안 / 우분투 에서 적성 설치 :
sudo vi /etc/default/jenkins
-Dhudson.model.DirectoryBrowserSupport.CSP=
받는 사람 JAVA_ARGS
(예를 들어 JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP="
)service jenkins restart
이것은 나에게 충분했지만 매개 변수의 전체 목록은 this answer를 참조하십시오 .