blob: f80484a821085295ae6a37bcb7b0b66ffa03496b [file] [log] [blame]
load("@io_bazel_rules_docker//container:container.bzl", "container_push")
load("@io_bazel_rules_docker//docker/util:run.bzl", "container_run_and_commit")
load("//bazel:skia_app_container.bzl", "skia_app_container")
skia_app_container(
name = "docsyserver_container",
base_image = "@docsyserver-base//image",
dirs = {
"/usr/local/bin": [
[
"//docsyserver/go/docsyserver:docsyserver",
"0755",
],
],
"/": [
[
"//docsyserver/images:serve.sh",
"0755",
],
[
"//docsyserver/images:build.sh",
"0755",
],
],
"/usr/local/share/docsy/layouts/partials": [
[
"//docsyserver/images:head.html",
"0644",
],
[
"//docsyserver/images:page-meta-lastmod.html",
"0644",
],
],
"/usr/local/share/docsy/layouts/partials/hooks": [
[
"//docsyserver/images:head-end.html",
"0644",
],
],
"/usr/local/share/docsy/static/favicons": [
[
"//docsyserver/images:favicon.ico",
"0644",
],
],
},
entrypoint = "/usr/local/bin/docsyserver",
env = {
"PATH": "$$PATH:/home/skia/node-v14.16.0-linux-x64/bin",
},
repository = "skia-public/docsyserver",
run_commands_skia = [
# Copy artifacts over.
"cp -r /usr/local/share/docsy/layouts/partials /home/skia/docsy/layouts",
"cp -r /usr/local/share/docsy/static /home/skia/docsy",
],
)
# Builds gcr.io/skia-public/docsyserver-base, a base image for docsyserver that contains docsy and
# its dependencies. This container takes several minutes to build and rarely changes. By pinning a
# revision of this container in //WORKSPACE and using it as the base image, we can build the
# docsyserver container much faster.
container_run_and_commit(
name = "docsyserver_base_container",
commands = [
# Install golang.
"cd && wget https://golang.org/dl/go1.16.2.linux-amd64.tar.gz && tar -xzf go1.16.2.linux-amd64.tar.gz",
# Install hugo at a pinned version we know works.
"cd && git clone https://github.com/gohugoio/hugo.git && cd hugo && git checkout 803f572e66c5e22213ddcc994c41b3e80e9c1f35 " +
"&& ~/go/bin/go install --tags extended",
# Install node.
"cd && wget https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.gz && tar -xzf node-v14.16.0-linux-x64.tar.gz",
# Install docsy at a pinned version we know works.
"cd && git clone --recurse-submodules https://github.com/google/docsy-example.git docsy " +
"&& cd docsy && git checkout 70e301f7861122ab129d2c46ee5ed625e92c04d0",
"PATH=\"/home/skia/node-v14.16.0-linux-x64/bin:${PATH}\"",
"/home/skia/node-v14.16.0-linux-x64/bin/npm install && rm config.toml && rm -rf content",
],
docker_run_flags = [
"--user",
"skia",
],
image = ":docsyserver_base_container_root_commit.tar",
tags = [
"manual", # Exclude it from wildcard queries, e.g. "bazel build //...".
# container_run_and_commit requires the docker daemon to be running. This is not possible
# inside RBE.
"no-remote",
],
)
# Subset of the docsy dependencies that need to be installed as the root user.
container_run_and_commit(
name = "docsyserver_base_container_root",
commands = [
# Install required packages.
"apt-get update",
"apt-get install -y wget openssh-client procps unzip vim less build-essential gcc gcc-10 gcc-10-base libgcc-10-dev",
"apt-get clean",
],
docker_run_flags = [
"--user",
"root",
],
image = "@base-cipd//image",
tags = [
"manual", # Exclude it from wildcard queries, e.g. "bazel build //...".
# container_run_and_commit requires the docker daemon to be running. This is not possible
# inside RBE.
"no-remote",
],
)
# Pushes a new release of the gcr.io/skia-public/docsyserver-base container.
container_push(
name = "push_docsyserver_base_container",
format = "Docker",
image = ":docsyserver_base_container_commit.tar",
registry = "gcr.io",
repository = "skia-public/docsyserver-base",
stamp = "@io_bazel_rules_docker//stamp:always",
tag = "{STABLE_DOCKER_TAG}",
tags = [
"manual", # Exclude it from wildcard queries, e.g. "bazel build //...".
# container_push requires the docker daemon to be running. This is not possible inside RBE.
"no-remote",
],
)