Skip to content

diegopmendes/ssm-gradle-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SS_GRADLE_PLUGIN

technology java technology Gradle

Plugin

  • Essa é uma solução que facilita a utilização de credenciais ou qualquer variável no build.gradle sem termos a necessidade de informá-las utilizando o gradle.properties ou de forma exposta. Em alguns cenarios de segurança faz sentido manter a confidenciabilidade de algumas informações. Esse plugin acrescenta a possibilidade de utilizar parâmetros existentes no Parameter Store de qualquer conta AWS e setá-las como variáveis de ambiente somente em tempo de execução do build.gradle, ou seja, após o gradle build por exemplo, essas variáveis deixam de existir.

Pré-requisito

  • Ter uma instalação aws-cli configurada para que as credenciais {HOME}/.aws/credentials possam ser utilizadas para acessar o AWS Parameter Store

Compatibilidade

Versão Compatível
v7.0.0+ YES
v7.0.0- NOT TESTED

Plugin

Exemplo de utilização

1 - Supondo que um Projeto X esteja utilizando o plugin:
  • build.gradle do Projeto X
plugins {
    .
    .
    .
    id "io.github.diegopmendes.ssmgradle" version "1.0.0"
}

apply plugin: "io.github.diegopmendes.ssmgradle"

environments {
    awsProfile = 'develop' //optional, caso não tenha especificado um profile ele irá pegar o `default` das credentials (`{HOME}/.aws/credentials`)
    environmentsNames = [ //no exemplo abaixo ele irá buscar no Parameter Store o paramêtro de nome `NAME_PARAMETER_STORE_1` e irá setar em uma variável de ambiente chamada `NAME_1_ENV_SYSTEM_TARGET`
            'NAME_PARAMETER_STORE_1' : 'NAME_1_ENV_SYSTEM_TARGET',
            'NAME_PARAMETER_STORE_2' : 'NAME_2_ENV_SYSTEM_TARGET'
    ]
}

tasks.create("Hello"){
    dependsOn(importEnvironments) //toda task que precisar das variáveis setadas precisa colocar esse `dependsOn` no início
    doLast {
        println "Hello ENV 1: " + System.getenv("NAME_1_ENV_SYSTEM_TARGET")// após setada podemos chamar e utilizar em qualquer task no build.gradle
        println "Hello ENV 2: " + System.getenv("NAME_2_ENV_SYSTEM_TARGET")// após setada podemos chamar e utilizar em qualquer task no build.gradle
    }
}
  • Executar para testar:
./gradlew Hello
2 - Existe um caso em particular quando queremos utilizar as variáveis como credentials em algum repositorie, nesse caso vamos acrecentar um bloco a mais, como no exemplo abaixo:
  • build.gradle do Projeto X
plugins {
    .
    .
    .
    id "io.github.diegopmendes.ssmgradle" version "1.0.0"
}

apply plugin: "io.github.diegopmendes.ssmgradle"

environments {
    awsProfile = 'develop' //optional, caso não tenha especificado um profile ele irá pegar o `default` das credentials (`{HOME}/.aws/credentials`)
    environmentsNames = [ //no exemplo abaixo ele irá buscar no Parameter Store o paramêtro de nome `NAME_PARAMETER_STORE_1` e irá setar em uma variável de ambiente chamada `NAME_1_ENV_SYSTEM_TARGET`
            'NAME_PARAMETER_STORE_USERNAME' : 'USERNAME_1',
            'NAME_PARAMETER_STORE_PASSWORD' : 'PASSWORD_1'
    ]
     repositories = //os repositories que forem aqui criados não devem ser colocados duplicados na tag `repositories{}`
    [
        ['name':'GitHubPackages',
         'url':'https://maven.pkg.github.com/ORGANIZATION/*',
         'username':'USERNAME_1',
         'password':'PASSWORD_1'
        ]
    ]
}

dependencies{
        implementation('com.commons:DEPENDENCY_FROM_GITHUB_PACKAGES:1.0.0')
}
  • Executar para testar:
./gradlew clean build

Deseja Contribuir?

  • Envia um email para diegu.jc@gmail.com com assunto [SSM-GRADLE-PLUGIN]

About

Projeto responsável por recuperar variáveis do parameter store e setar como `environments` na JVM

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages