Skip to content

Instantly share code, notes, and snippets.

@Joxebus
Last active July 5, 2024 18:24
Show Gist options
  • Select an option

  • Save Joxebus/6ba83b3aab0c5498daf990b9ede10b19 to your computer and use it in GitHub Desktop.

Select an option

Save Joxebus/6ba83b3aab0c5498daf990b9ede10b19 to your computer and use it in GitHub Desktop.
YAML sample with Groovy 3
import groovy.yaml.YamlSlurper
def slurper = new YamlSlurper()
def configuration = '''
language: groovy
sudo: required
dist: trusty
matrix:
include:
# - jdk: oraclejdk11
- jdk: openjdk10
- jdk: oraclejdk9
- jdk: oraclejdk8
before_script:
- |
unset _JAVA_OPTIONS
'''
def yaml = slurper.parseText(configuration)
println "YAML keys: ${yaml.keySet()}"
yaml.keySet().each { key ->
println "Key: $key \t Type: ${yaml[key].getClass().name}"
}
import groovy.yaml.*
import groovy.transform.*
@Canonical
class Service {
String image
String containerName
List environment
List ports
List volumes
}
String dockerCompose = """
version: '3'
services:
postgres:
image: postgres:11.5
containerName: postgresdb
environment:
- POSTGRES_USER=mses
- POSTGRES_PASSWORD=t3cM0n
- POSTGRES_DB=mses
ports:
- '5432:5432'
volumes:
- ./postgres-data:/var/lib/postgresql/data
redis:
containerName: mses-redis
image: 'bitnami/redis:5.0'
environment:
# ALLOW_EMPTY_PASSWORD is recommended only for development.
- ALLOW_EMPTY_PASSWORD=yes
- REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL
ports:
- 6379:6379
volumes:
- 'redis_data:/bitnami/redis/data'
volumes:
redis_data:
driver: local
"""
def config = new YamlSlurper().parseText(dockerCompose)
Service postgres = new Service(config.services.postgres)
Service redis = new Service(config.services.redis)
println postgres
println redis
import groovy.yaml.*
import groovy.transform.*
@Canonical
class Service {
String image
String containerName
List environment
List ports
List volumes
}
Map configuration = [
version: '3',
services: [
postgres : new Service("postgres:11.5", "postgresdb"),
redis : new Service("bitnami/redis:5.0", "redisdb")
],
volumes: [
redis_data: [driver:'local']
]
]
def yaml = new YamlBuilder()
yaml(configuration)
println yaml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment