Google Cloud Storage에 Maven Inhouse Repository 구축

5807 단어 GCS자바gcpgradle

소개



Google Cloud Storage (이하 GCS) 위에 Maven 인하우스 리포지토리를 구축하여 이용하는 방법의 정리입니다.
문서에 쓰고 있는 것의 2번 달콤한 느낌도 합니다만, 인하우스 리포지토리의 만드는 방법이나, 만든 후의 jar 파일의 전송 방법으로부터 사용 방법까지 종합적으로 정리해 있는 기사가 보이지 않았으므로, 비망록으로서 떠난다.

덧붙여서 자신은 Gradle 사용자이므로 Gradle을 사용했을 경우의 방법에 대해 정리하고 있습니다.

구축 방법 및 사용법



Gradle 문서



공식 문서는 여기
덧붙여서 릴리스 노트 에 따르면 버전 4.2에서 추가된 기능인 것 같습니다.
상당히 전부터 있었군요, 몰랐습니다・・・.

인하우스 리포지토리 구축



명령을 치고 버킷을 만드십시오.
$ BUCKET_NAME='your-inhouse-repository'
$ gsutil mb -c standard -l asia-northeast1 gs://${BUCKET_NAME}

자신 혼자 작업하는 분에는 이것만으로 OK입니다.
여러 사람이 개발하는 경우 개발자에게 버킷에 대한 액세스 권한을 부여하십시오.

아래, 버킷 이름은 your-inhouse-repository 이며 그 아래에 Maven용 경로 maven 를 끊고 Gradle에서는 gcs://your-inhouse-repository/maven 를 참조하는 전제로 이야기를 진행합니다.

인증 방법



인하우스 리포지토리이므로 외부에는 공개하지 않습니다.
버킷에 대한 권한이 있는 계정만 액세스할 수 있도록 인증을 하지만 문서에 이 문서가 포함되어 있습니다.

When using a Google Cloud Storage backed repository default application credentials will be used with no further configuration required

「어플리케이션의 디폴트의 인증 정보」란 무엇인가? 라는 느낌입니다만, 아무래도 그런 개념이 있는 것 같습니다.
GCP에서는 ADC이라고 합니다.

로컬에서 작업할 때는 gcloud init 하고 gcloud auth application-default login 를 실시하면 OK입니다.
그래서 ADC와 야가 적절한 장소에 배치되고 그 뒤는 Gradle이 마음대로 그것을 사용해 인증해 줍니다.
$ gcloud init
$ gcloud auth application-default login

jar 파일 업로드



라이브러리 측의 샘플 코드입니다.
Maven Publish 플러그인 을 사용하여 jar 파일을 업로드할 수 있습니다.

build.gradle
plugins {
    id 'java-library'
    id 'maven-publish'
}

group = 'your.libs'
version = '1.0.0'

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
    repositories {
        // アップロード先としてインハウスリポジトリを指定する。
        maven {
            url 'gcs://your-inhouse-repository/maven'
        }
    }
}

settings.gradle
rootProject.name = 'example-library'
$ gradle publish

jar 파일 사용



라이브러리를 사용하는 측의 샘플 코드입니다.repositories 에 참조된 인하우스 리포지토리를 추가하고 dependencies 에 종속성을 정의하기만 하면 됩니다.

build.gradle
repositories {
    // 参照先としてインハウスリポジトリを追加する。
    maven {
        url 'gcs://your-inhouse-repository/maven'
    }
}

dependencies {
    // ライブラリを依存関係として追加する。
    implementation 'your.libs:example-library:1.0.0'
}

자격 증명이 전환되지 않을 때 Tips



자신은 GCP의 계정을 개인용 및 업무용으로 복수 소지하고 있습니다만, gcloud init , gcloud auth application-default login 조우・・・.
원인을 모르고 하루 정도 낭비했습니다.

알고 버리면 간단합니다만, 원인은 Gradle의 데몬이 기동하고 있어 그것이 낡은 자격 증명을 잡은 채로 있었습니다.

그래서 데몬을 한 번 정지하면, 그 후에는 전환한 후의 인증 정보를 사용해 줍니다.
$ gradle --stop

혹은 데몬을 사용하지 않도록 명시적으로 지시하면, 현재의 인증 정보를 참조해 줍니다.
$ gradle <some_task> --no-daemon

여담



2020년 7월 25일 현재, 빌드 아티팩트의 관리에 특화한 Artifact Registry 라는 서비스가 β판으로 공개되고 있습니다.
Maven 저장소 로서도 사용할 수 있는 것 같습니다만, 이쪽은 아직 α판과 같은 것이므로 앞으로가 즐거움이라고 하는 곳이군요.

좋은 웹페이지 즐겨찾기