Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 20 additions & 19 deletions .teamcity/kotlinlang/SiteProject.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,28 @@ import kotlinlang.vcsRoots.WebHelp
import templates.DockerImageBuilder

object SiteProject : Project({
name = "kotlinlang.org"
name = "kotlinlang.org"

buildTypesOrder = arrayListOf(
BuildSitePages,
FetchBlogNews,
PdfGenerator,
BuildSearchIndex,
BuildWebHelpFrontend,
BuildKotlinGrammar,
BuildKotlinSpec,
BuildJsAssets,
PageViews,
)
buildTypesOrder = arrayListOf(
BuildSitePages,
FetchBlogNews,
PdfGenerator,
BuildSearchIndex,
BuildWebHelpFrontend,
BuildKotlinGrammar,
BuildKotlinSpec,
BuildJsAssets,
PageViews,
BuildPythonContainer
)

buildTypesOrder.forEach {
buildType(it)
}
buildTypesOrder.forEach {
buildType(it)
}

template(DockerImageBuilder)
template(DockerImageBuilder)

vcsRoot(GrammarGenerator)
vcsRoot(KotlinSpec)
vcsRoot(WebHelp)
vcsRoot(GrammarGenerator)
vcsRoot(KotlinSpec)
vcsRoot(WebHelp)
})
138 changes: 138 additions & 0 deletions .teamcity/kotlinlang/builds/BuildPythonContainer.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
package kotlinlang.builds

import jetbrains.buildServer.configs.kotlin.BuildType
import jetbrains.buildServer.configs.kotlin.buildFeatures.dockerRegistryConnections
import jetbrains.buildServer.configs.kotlin.buildSteps.DockerCommandStep
import jetbrains.buildServer.configs.kotlin.buildSteps.ScriptBuildStep
import jetbrains.buildServer.configs.kotlin.buildSteps.dockerCommand
import jetbrains.buildServer.configs.kotlin.buildSteps.script

object BuildPythonContainer: BuildType({
name = "Build Python Container"

params {
param("kotlin-website-image", "registry.jetbrains.team/p/aki/kotlin-website/kotlinlang/python:%build.number%")
param("kotlin-website-setup", "/kotlin-website-setup.sh")
param("virtualenv.folder", "/_environment-kotlin-website")
param("kotlin-website-node-version", "lts")
param("env.DOCKER_BUILDKIT", "1")
}

vcs {
root(vcsRoots.KotlinLangOrg, """
+:. => .
-:.idea
-:assets
-:data
-:external
-:kotlin-features
-:pages
-:pdf
-:scripts
-:src
-:static
-:templates
-:tests
-:docs
""".trimIndent())
cleanCheckout = true
showDependenciesChanges = true
}

steps {
dockerCommand {
name = "Build Image"
commandType = build {
source = content {
content = """
FROM registry.jetbrains.team/p/aki/kotlin-website/build:v3

# Base image content: registry.jetbrains.team/p/aki/kotlin-website/build:v3
# FROM --platform="linux/amd64" python:3.9
# ENV DEBIAN_FRONTEND=noninteractive;
# RUN pip install --no-cache-dir virtualenv;
# COPY google-credentials.json /secrets/google-credentials.json
# RUN apt-get update
# RUN apt-get install -y build-essential xorg gdebi
# RUN apt-get -y install ruby
# RUN gem install kramdown -v 1.14.0
#
# RUN wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz && \
# tar xf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz && \
# mv wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf && \
# chmod +x /usr/local/bin/wkhtmltopdf

RUN curl -fsSL "https://deb.nodesource.com/setup_%kotlin-website-node-version%.x" | bash
RUN apt-get install -y nodejs

RUN \
echo "Initializing infrastructure at %virtualenv.folder%"; \
virtualenv -p python3 %virtualenv.folder%;

RUN \
pip install --upgrade pip

RUN \
echo "source %virtualenv.folder%/bin/activate" > %kotlin-website-setup%; \
chmod +x %kotlin-website-setup%

ADD requirements.txt /requirements.txt
RUN pip install -r /requirements.txt; rm /requirements.txt
""".trimIndent()
}
platform = DockerCommandStep.ImagePlatform.Linux
namesAndTags = "%kotlin-website-image%"
commandArgs = "--pull"
}
}
script {
name = "Test container"
scriptContent = """
#!/bin/bash

echo "setup script:"
cat %kotlin-website-setup%
echo ""

source %kotlin-website-setup%

set -e -x -u

python --version

pip --version

node --version

npm --version

kramdown --version
""".trimIndent()
dockerImage = "%kotlin-website-image%"
dockerImagePlatform = ScriptBuildStep.ImagePlatform.Linux
}
dockerCommand {
name = "Push image"
commandType = push {
namesAndTags = "%kotlin-website-image%"
}
}
script {
name = "Update build Status"
scriptContent = """
#!/bin/bash

echo " ##teamcity[buildStatus text='{build.status.text} %kotlin-website-image%'] "
""".trimIndent()
}
}

features {
dockerRegistryConnections {
cleanupPushedImages = true
loginToRegistry = on {
dockerRegistryId = "PROJECT_EXT_357"
}
}
}
})
2 changes: 1 addition & 1 deletion .teamcity/kotlinlang/builds/BuildSitePages.kt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ object BuildSitePages : BuildType({
python kotlin-website.py build
""".trimIndent()

dockerImage = "%dep.Kotlin_KotlinSites_Builds_KotlinlangOrg_BuildPythonContainer.kotlin-website-image%"
dockerImage = "%dep.Kotlin_KotlinSites_KotlinlangTeamcityDsl_BuildPythonContainer.kotlin-website-image%"
dockerImagePlatform = ScriptBuildStep.ImagePlatform.Linux
dockerPull = true

Expand Down
4 changes: 2 additions & 2 deletions .teamcity/templates/DockerImageBuilder.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package templates

import jetbrains.buildServer.configs.kotlin.AbsoluteId
import jetbrains.buildServer.configs.kotlin.FailureAction
import jetbrains.buildServer.configs.kotlin.Template
import jetbrains.buildServer.configs.kotlin.buildFeatures.dockerRegistryConnections
import kotlinlang.builds.BuildKotlinGrammar
import kotlinlang.builds.BuildPythonContainer

object DockerImageBuilder : Template({
name = "Site builder docker container"
Expand All @@ -28,7 +28,7 @@ object DockerImageBuilder : Template({
}

dependencies {
snapshot(AbsoluteId("Kotlin_KotlinSites_Builds_KotlinlangOrg_BuildPythonContainer")) {
snapshot(BuildPythonContainer) {
onDependencyFailure = FailureAction.FAIL_TO_START
onDependencyCancel = FailureAction.CANCEL
}
Expand Down