0
0

More than 1 year has passed since last update.

続・GradleでCodeArtifact自動化

Last updated at Posted at 2021-10-04

結論だけ読みたい人はこっち

はじめに

一応、前回それなりにコピペで済むようにはしたものの、冗長であると言わざるを得ない。
そこでプラグインにした。

プラグインの設定

build.gradle
plugins {
  id "io.github.tac-yacht.codeartifact-repository" version "0.1"
}

ほかのプラグインも使ってるときは真ん中の行だけ追加
settings.gradlepluginManagement.repositoriesを設定してる時はgradlePluginPortal()の追加を忘れずに

ポータルで各種プラグインごとに例示されてるのと同じではある

レポジトリの設定

3種類から選べる。

style A

aws codeartifact get-repository-endpointに渡すオプションと同じスタイル

build.gradle
repositories {
    maven(CodeArtifact) {
        domainName = "domain-name"
        repository = "repo"

        //now required. change optionally coming soon.
        domainOwner = "domain-owner"
        region = "region"
    }
}

style B

ARNを渡す

build.gradle
repositories {
    maven(CodeArtifact) {
        arn = "arn:aws:codeartifact:us-west-2:111122223333:repository/test-domain/test-repo"
    }
}

style C

aws codeartifact get-repository-endpointで取れるURL

build.gradle
repositories {
    maven(CodeArtifact) {
        url = "https://test-domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/test-repo/"
    }
}

認証の設定

作った順なので非推奨から始まります。今の所、実質style 3 一択です。
⚠注意:credentials(AwsCredentials)は使えません

style 1

AWSリファレンスと同じ設定方法 あらかじめ取得しといた認証を環境変数にセットした上で以下の設定
※これが面倒くさいからプラグイン作ってるので非推奨

build.gradle
repositories {
    maven(CodeArtifact) {
        credentials {
            username = 'aws'
            password = System.env.CODEARTIFACT_AUTH_TOKEN
        }
    }
}

style 2

CodeArtifactのアクセスに使う鍵をべた書きする
※ソースコード共有してたりするとうっかりプッシュとかしかねないので非推奨

build.gradle
repositories {
    maven(CodeArtifact) {
        credentials(AwsToPasswordCredentials) {
            accessKey = "myAccessKey"
            secretKey = "mySecret"
        }
    }
}

style 3

~にある.awsに設定済みのプロファイルを参照します。

build.gradle
repositories {
    maven(CodeArtifact) {
        credentials(AwsToPasswordCredentials) {
            profile = "myProfile"
        }
    }
}

利用例

レポジトリと認証の設定を組み合わせた利用例

build.gradle
plugins {
  id "io.github.tac-yacht.codeartifact-repository" version "0.1"
}
repositories {
    maven(CodeArtifact) {
        arn = "arn:aws:codeartifact:us-west-2:111122223333:repository/test-domain/test-repo"
        credentials(AwsToPasswordCredentials) {
            profile = "myProfile"
        }
    }
}

参考先

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0