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.BuildConfig
|
||||||
import alfred.web.core.build.BuildContext
|
import alfred.web.core.build.BuildContext
|
||||||
import alfred.web.core.build.LogFile
|
import alfred.web.core.build.LogFile
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
import kotlin.apply
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
class Processes {
|
class Processes(
|
||||||
|
val env: ProcessEnvironment
|
||||||
|
) {
|
||||||
|
|
||||||
fun builder(config: BuildConfig, logFile: LogFile, rev: String?): ProcessBuilder =
|
fun builder(config: BuildConfig, logFile: LogFile, rev: String?): ProcessBuilder =
|
||||||
ProcessBuilder()
|
ProcessBuilder()
|
||||||
.redirectOutput(ProcessBuilder.Redirect.appendTo(logFile.backingFile))
|
.redirectOutput(ProcessBuilder.Redirect.appendTo(logFile.backingFile))
|
||||||
.redirectError(ProcessBuilder.Redirect.appendTo(logFile.backingFile))
|
.redirectError(ProcessBuilder.Redirect.appendTo(logFile.backingFile))
|
||||||
.apply {
|
.apply {
|
||||||
environment().putAll(config.env)
|
environment().clear()
|
||||||
environment()["ALFRED_LOG_FILE"] = logFile.backingFile.absolutePath
|
environment().putAll(env.forBuild(config, logFile, rev))
|
||||||
environment()["ALFRED_REV"] = rev
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun builder(ctx: BuildContext) =
|
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