| 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-11 gcc-11-base libgcc-11-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", |
| ], |
| ) |