Jenkins에 Gradle / Artifactory 통합을 사용하려면 프록시 서버를 통해 Gradle에서 웹 액세스가 필요합니다. 문제의 가능한 원인을 줄이기 위해 build.gradle에 Artifactory 플러그인을 수동으로 추가하고 명령 줄에서 실행합니다.
apply {
apply from: "http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle"
}
이 설명에 따라 홈 디렉토리의 .gradle / gradle.properties에 다음을 지정했습니다.
systemProp.http.proxyHost=hostname
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=de\\username
systemProp.http.proxyPassword=xxx
위의 프록시 구성 (다른 방법으로 작동)으로 인해 실패합니다.
11 : 33 : 17.699 [오류] [org.gradle.BuildExceptionReporter] 원인 : java.io.IOException : 서버에서 URL에 대한 HTTP 응답 코드 : 407을 리턴 함 : http://gradle.artifactoryonline.com/gradle/plugins/org/ jfrog / buildinfo / build-info-extractor-gradle / 1.0.1 / artifactoryplugin-1.0.1.gradle
선택할 수있는 두 개의 프록시 서버가 있으며 하나는 항상 407
( 프록시 인증 필요 ), 다른 하나는 502
( 불량 게이트웨이 )로 응답 하므로 proxyHost 및 proxyPort 옵션이 사용됩니다.
Active Directory 사용자를 기반으로하는 사용자 이름에 백 슬래시가 포함되어 있으므로 \\
와를 모두 시도했지만 둘 다 시도 \
하지 않았습니다. 지정된 사용자가 컴퓨터 및 Active Directory에 로그인 한 사용자와 다릅니다. 이 사용자의 자격 증명이 프록시에 유효하지 않으므로 다른 사용자를 지정할 수 있어야합니다.
Jenkins 또는 Artifactory의 GUI에서 동일한 옵션을 설정하면 효과가 있습니다.
답변
다니엘의 반응에 대한 개선 :
HTTP 전용 프록시 구성
gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"
HTTPS 전용 프록시 구성
gradlew -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"
HTTP 및 HTTPS 프록시 구성
gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"
사용자 및 비밀번호를 사용한 프록시 구성
gradlew -Dhttp.proxyHost = 127.0.0.1 -Dhttp.proxyPort = 3128-Dhttps.proxyHost = 127.0.0.1 -Dhttps.proxyPort = 3129 -Dhttps.proxyUser = user -Dhttps.proxyPassword = pass -Dhttp.proxyUser = user -Dhttp. proxyPassword = 통과 -Dhttp.nonProxyHosts = host1.com | host2.com
나를 위해 일했습니다 ( gradle.properties
homedir 또는 project dir에서 빌드가 여전히 실패했습니다). 이 해결 방법을 제공 한 gradle의 문제를 지적 해 주셔서 감사합니다. https://docs.gradle.org/current/userguide/build_environment.html#sec:accessing_the_web_via_a_proxy 에서 참조 문서를 참조하십시오.
업데이트
이러한 속성을 넣을 수도 있습니다 gradle-wrapper.properties
( https://stackoverflow.com/a/50492027/474034 참조 ).
답변
이것은 내 gradle.properties입니다. HTTPS 부분에주의하십시오.
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=8118
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=8118
답변
내에서 build.gradle
나는 보통의 리눅스 프록시 설정을 사용하여 다음과 같은 작업을 가지고 HTTP_PROXY
와 HTTPS_PROXY
쉘 ENV에서를 :
task setHttpProxyFromEnv {
def map = ['HTTP_PROXY': 'http', 'HTTPS_PROXY': 'https']
for (e in System.getenv()) {
def key = e.key.toUpperCase()
if (key in map) {
def base = map[key]
def url = e.value.toURL()
println " - systemProp.${base}.proxy=${url.host}:${url.port}"
System.setProperty("${base}.proxyHost", url.host.toString())
System.setProperty("${base}.proxyPort", url.port.toString())
}
}
}
build.dependsOn setHttpProxyFromEnv
답변
나를 위해 build.gradle 파일이 프로젝트의 gradle.properties 파일 에이 구성을 추가하는 작업 :
systemProp.http.proxyHost=proxyURL
systemProp.http.proxyPort=proxyPort
systemProp.http.proxyUser=USER
systemProp.http.proxyPassword=PASSWORD
systemProp.https.proxyHost=proxyUrl
systemProp.https.proxyPort=proxyPort
systemProp.https.proxyUser=USER
systemProp.https.proxyPassword=PASSWORD
여기서 proxyUrl은 프록시 서버의 URL입니다 ( http : // ….. )
proxyPort는 포트입니다 (보통 8080).
USER 님은 내 도메인 사용자입니다.
비밀번호, 내 비밀번호
이 경우 http 및 https의 프록시는 동일합니다.
답변
다음을 시도하십시오 :
gradle -Dhttp.proxyHost=yourProxy -Dhttp.proxyPort=yourPort -Dhttp.proxyUser=usernameProxy -Dhttp.proxyPassword=yourPassoword
답변
사용하여 매우 간단한 “URL을 요청”자바 프로그램을, 나는이 문제를 복제 할 수 있었다.
http.proxyUser
그리고 http.proxyPassword
그들은 설명하지 않는 등, 옵션, 비표준 인기이기는 것 같다 Gradle을 튜토리얼에서 링크 된 자바 참조 페이지 ; Gradle 매뉴얼에 언급되어 있지만.
프록시 인증을 지원하려는 Java 프로그램은 수동 으로이 작업을 수행해야합니다 (링크 된 페이지의 코드를 사용 하여이 작업을 수행 할 수 있음).
이 문제 (및 수정 사항)를 Gradle 문제 추적기에 제출했습니다 . 제기 된 문제 GRADLE-1556이 1.0 마일스톤 -8에서 해결되었습니다 (2012 년 2 월)
답변
c : \ Users \ 사용자 이름 \ .gradle \ gradle.properties에서 확인하십시오.
systemProp.http.proxyHost=<proxy host>
systemProp.http.proxyPort=<proxy port>
systemProp.http.proxyUser=<proxy user>
systemProp.http.proxyPassword=<proxy password>
systemProp.http.nonProxyHosts=<csv of exceptions>
systemProp.https.proxyHost=<proxy host>
systemProp.https.proxyPort=<proxy port>
systemProp.https.proxyUser=<proxy user>
systemProp.https.proxyPassword=<proxy password>
systemProp.https.nonProxyHosts=<csv of exceptions seperated by | >