parent
dbb10b6e13
commit
a70ae91ce4
@ -0,0 +1,24 @@
|
||||
package alfred.web.core.process
|
||||
|
||||
import alfred.web.core.build.BuildConfig
|
||||
import alfred.web.core.build.LogFile
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
class ProcessEnvironment {
|
||||
|
||||
fun forBuild(
|
||||
config: BuildConfig,
|
||||
logFile: LogFile,
|
||||
rev: String?,
|
||||
useEnv: MutableMap<String, String> = System.getenv()
|
||||
) =
|
||||
useEnv.let { env ->
|
||||
env.filter { it.key.contains("ALFRED") }.forEach { env.remove(it.key) }
|
||||
env.putAll(config.env)
|
||||
env["ALFRED_LOG_FILE"] = logFile.backingFile.absolutePath
|
||||
env["ALFRED_REV"] = rev ?: ""
|
||||
env
|
||||
}
|
||||
|
||||
}
|
@ -1,21 +1,23 @@
|
||||
package alfred.web.core
|
||||
package alfred.web.core.process
|
||||
|
||||
import alfred.web.core.build.BuildConfig
|
||||
import alfred.web.core.build.BuildContext
|
||||
import alfred.web.core.build.LogFile
|
||||
import org.springframework.stereotype.Service
|
||||
import kotlin.apply
|
||||
|
||||
@Service
|
||||
class Processes {
|
||||
class Processes(
|
||||
val env: ProcessEnvironment
|
||||
) {
|
||||
|
||||
fun builder(config: BuildConfig, logFile: LogFile, rev: String?): ProcessBuilder =
|
||||
ProcessBuilder()
|
||||
.redirectOutput(ProcessBuilder.Redirect.appendTo(logFile.backingFile))
|
||||
.redirectError(ProcessBuilder.Redirect.appendTo(logFile.backingFile))
|
||||
.apply {
|
||||
environment().putAll(config.env)
|
||||
environment()["ALFRED_LOG_FILE"] = logFile.backingFile.absolutePath
|
||||
environment()["ALFRED_REV"] = rev
|
||||
environment().clear()
|
||||
environment().putAll(env.forBuild(config, logFile, rev))
|
||||
}
|
||||
|
||||
fun builder(ctx: BuildContext) =
|
@ -0,0 +1,40 @@
|
||||
package alfred.web.core.process
|
||||
|
||||
import alfred.web.core.build.BuildConfig
|
||||
import alfred.web.core.build.LogFile
|
||||
import org.junit.jupiter.api.Test
|
||||
import java.nio.file.Files
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class ProcessEnvironmentTest {
|
||||
|
||||
@Test
|
||||
fun `removes all previous ALFRED vars`(){
|
||||
val processEnvironment = ProcessEnvironment()
|
||||
val cfg = BuildConfig(
|
||||
user = "Gandalf",
|
||||
apikey = "Mellon",
|
||||
script = "",
|
||||
gitRepo = "",
|
||||
gitCloneTimeout = 0,
|
||||
workspace = "",
|
||||
mailReportTo = "",
|
||||
env = mapOf(
|
||||
"ENV1" to "ENV-VAL-1"
|
||||
)
|
||||
)
|
||||
val logFile = LogFile(Files.createTempFile("alfred-test", "").toFile())
|
||||
|
||||
val env = processEnvironment.forBuild(
|
||||
config = cfg,
|
||||
logFile = logFile,
|
||||
rev = "",
|
||||
useEnv = mutableMapOf(
|
||||
"ALFRED_TOP_SECRET" to "You-Don't-Know-Jack"
|
||||
)
|
||||
)
|
||||
|
||||
assertEquals(setOf("ENV1", "ALFRED_LOG_FILE", "ALFRED_REV"), env.keys)
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
ALFRED_MAIL_HOST=testing.host
|
||||
ALFRED_MAIL_PORT=1337
|
||||
ALFRED_MAIL_USERNAME=testing.username
|
||||
ALFRED_MAIL_PASSWORD=testing.password
|
||||
|
||||
ALFRED_HOME=/tmp/alfred
|
||||
ALFRED_PORT=8080
|
||||
|
||||
server.port=${ALFRED_PORT}
|
||||
spring.application.name=Alfred - RCE AAS
|
||||
|
||||
spring.mail.host=${ALFRED_MAIL_HOST}
|
||||
spring.mail.port=${ALFRED_MAIL_PORT}
|
||||
spring.mail.username=${ALFRED_MAIL_USERNAME}
|
||||
spring.mail.password=${ALFRED_MAIL_PASSWORD}
|
||||
spring.mail.properties.mail.smtp.auth=${ALFRED_MAIL_SMTP_AUTH : true}
|
||||
spring.mail.properties.mail.smtp.starttls.enable=${ALFRED_MAIL_STARTTLS : true}
|
||||
ALFRED_MAIL_FROM=alfred@your.service
|
Loading…
Reference in new issue