Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/liftric/code-artifact-repository-plugin

Gradle plugin to apply AWS CodeArtifact repositories
https://github.com/liftric/code-artifact-repository-plugin

aws codeartifact gradle maven plugin repository

Last synced: about 2 hours ago
JSON representation

Gradle plugin to apply AWS CodeArtifact repositories

Awesome Lists containing this project

README

        

# Code Artifact Repository Plugin

Convenience plugin to apply AWS CodeArtifact repositories to your Gradle project.

Configure the plugin extension either in the settings.gradle.kts or build.gradle.kts and then apply your repositories.

```kotlin
plugins {
id("com.liftric.code-artifact-repository-plugin") version ""
}

codeArtifactRepository {
region.set(Region.EU_CENTRAL_1)
// use profile credentials provider, otherwise the default credentials chain of aws will be used
profile.set("liftric")
// Determines how long the generated authentication token is valid in seconds
tokenExpiresIn.set(1_800)
}

dependencyResolutionManagement {
repositories {
codeArtifact("my_domain", "my_repository")
codeArtifact("my_other_domain", "my_other_repository")
}
}
```

You can also use multiple CodeArtifact endpoints:
```kotlin
plugins {
id("com.liftric.code-artifact-repository-plugin") version ""
}

codeArtifactRepository {
region.set(Region.EU_CENTRAL_1)
profile.set("liftric")
additional("customer1") {
profile.set("customer1")
// reuses properties of the default extension if not explicitly specified
}
additional("customer2") {
// if a profile is not available you can also provide the credentials directly
accessKeyId.set(System.getenv("CUSTOMER2_AWS_ACCESS_KEY_ID"))
secretAccessKey.set(System.getenv("CUSTOMER2_AWS_SECRET_ACCESS_KEY"))
// reuses properties of the default extension if not explicitly specified
}
}

dependencyResolutionManagement {
repositories {
// uses the default extension (liftric profile)
codeArtifact(domain = "my_domain", repository = "my_repository")
// uses the customer1 extension (customer1 profile)
codeArtifact(additionalName = "customer1", domain = "my_other_domain", repository = "my_other_repository")
}
}
```

You can also just get the token and endpoint, if you wan't to configure something different, like https://npm-publish.petuska.dev/:

```kotlin
val token = codeArtifactToken(domain = "my_domain")
val uri = codeArtifactUri(domain = "my_domain", repository = "my_repository")
```

## Use from gradle init script
The plugin can also be used during gradle init time.

The example (the `init.gradle.kts` file) configures a custom plugin repository, in our case used for a custom and private fargate plugin which is hosted
in a private code artifact repository.

**Note:** We have to use a gradle init script, no other way to apply the CodeArtifactRepositoryPlugin before the pluginManagement block inside a `settings.gradle.kts` file.

```
import com.liftric.code.artifact.repository.codeArtifact
import com.liftric.code.artifact.repository.codeArtifactRepository
import software.amazon.awssdk.regions.Region.*

initscript {
repositories {
maven {
url = uri("https://plugins.gradle.org/m2/")
}
}
dependencies {
classpath("com.liftric.code.artifact.repository:code-artifact-repository-plugin:")
}
}
apply()
codeArtifactRepository {
region.set(EU_CENTRAL_1)
// use profile credentials provider, otherwise the default credentials chain of aws will be used
if (System.getenv("CI") == null) {
profile.set("liftric")
}
// Determines how long the generated authentication token is valid in seconds
tokenExpiresIn.set(1_800)
}
settingsEvaluated {
pluginManagement {
repositories {
codeArtifact("", "fargate-gradle-plugin")
google()
mavenCentral()
gradlePluginPortal()
}
}
}

```