]> git.puffer.fish Git - matthieu/nova.git/commitdiff
fix docker images
authorMatthieu <matthieu@developershouse.xyz>
Thu, 9 Sep 2021 13:30:28 +0000 (13:30 +0000)
committerMatthieu <matthieu@developershouse.xyz>
Thu, 9 Sep 2021 13:30:28 +0000 (13:30 +0000)
.devcontainer/Dockerfile [new file with mode: 0644]
.devcontainer/devcontainer.json [new file with mode: 0644]
.github/workflows/bazel-build.yml
BUILD
bazel/BUILD
bazel/docker.bzl
bazel/rust.bzl
gateway/BUILD
ratelimiter/BUILD
webhook/BUILD

diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644 (file)
index 0000000..ba27052
--- /dev/null
@@ -0,0 +1,26 @@
+FROM mcr.microsoft.com/vscode/devcontainers/base:0-focal
+
+# ** [Optional] Uncomment this section to install additional packages. **
+# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
+#     && apt-get -y install --no-install-recommends <your-package-list-here>
+
+RUN apt update -y && apt install apt-transport-https curl gnupg python build-essential ca-certificates lsb-release -y && \
+    curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/bazel.gpg && \
+    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
+    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list && \
+    echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list && \
+    apt update -y && apt install bazel docker-ce-cli -y
+
+ARG NONROOT_USER=vscode
+
+RUN echo "#!/bin/sh\n\
+    SOCKET_GID=\$(stat -c '%g' /var/run/docker.sock) \n\
+    if [ \"${SOCKET_GID}\" != '0' ]; then\n\
+        if [ \"\$(cat /etc/group | grep :\${SOCKET_GID}:)\" = '' ]; then groupadd --gid \${SOCKET_GID} docker-host; fi \n\
+        if [ \"\$(id ${NONROOT_USER} | grep -E \"groups=.*(=|,)\${SOCKET_GID}\(\")\" = '' ]; then usermod -aG \${SOCKET_GID} ${NONROOT_USER}; fi\n\
+    fi\n\
+    exec \"\$@\"" > /usr/local/share/docker-init.sh \
+    && chmod +x /usr/local/share/docker-init.sh
+
+ENTRYPOINT [ "/usr/local/share/docker-init.sh" ]
+CMD [ "sleep", "infinity" ]
\ No newline at end of file
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644 (file)
index 0000000..f1cc4d9
--- /dev/null
@@ -0,0 +1,30 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
+// https://github.com/microsoft/vscode-dev-containers/tree/v0.191.1/containers/debian
+{
+    "name": "Ubuntu",
+    "build": {
+        "dockerfile": "Dockerfile",
+        // Update 'VARIANT' to pick an Debian version: bullseye, buster, stretch
+        "args": { "VARIANT": "focal" }
+    },
+
+    // Set *default* container specific settings.json values on container create.
+    "settings": {},
+
+    // Add the IDs of extensions you want installed when the container is created.
+    "extensions": [],
+
+    // Use 'forwardPorts' to make a list of ports inside the container available locally.
+    // "forwardPorts": [],
+
+    // Uncomment to use the Docker CLI from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker.
+    "mounts": ["source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"],
+
+    // Uncomment when using a ptrace-based debugger like C++, Go, and Rust
+    // "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ],
+
+    // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
+    "remoteUser": "vscode",
+    "overrideCommand": false,
+    "runArgs": ["--init"],
+}
\ No newline at end of file
index d96a4caafc43d4281504d1074ec9bba8a6fb0dd1..7648c7d8680b55271d232b3028727f06c15df858 100644 (file)
@@ -21,19 +21,15 @@ jobs:
     steps:\r
       # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it\r
       - uses: actions/checkout@v2\r
+\r
       - uses: ilammy/msvc-dev-cmd@v1\r
         if: matrix.os == 'windows-latest'\r
-      - uses: lukka/run-vcpkg@v7\r
-        if: matrix.os == 'windows-latest'\r
-        with:\r
-          setupOnly: true\r
-          vcpkgGitCommitId: "bcf551b980380fe7f84fa302ad7ef3c184f9bf4f"\r
-      - run: |\r
-          $VCPKG_ROOT/vcpkg integrate install\r
-          $VCPKG_ROOT/vcpkg install libsodium\r
-        shell: bash\r
-        if: matrix.os == 'windows-latest'\r
 \r
+      - name: Extract branch name\r
+        shell: bash\r
+        run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"\r
+        id: extract_branch\r
+      \r
       - uses: docker-practice/actions-setup-docker@master\r
         if: matrix.os == 'ubuntu-latest'\r
       - uses: docker/login-action@v1\r
@@ -79,5 +75,5 @@ jobs:
       - name: Publish docker images\r
         shell: bash\r
         run: |\r
-           bazel run //:publish\r
+           bazel run --define docker_repo=ghcr.io --define docker_tag=${{ steps.extract_branch.outputs.branch }} //:publish\r
         if: matrix.os == 'ubuntu-latest'\r
diff --git a/BUILD b/BUILD
index cf4ac62c3cd1e6aad30e08c747f333cfcbb0f172..240748996612627849a1e6643ba431c057ce909f 100644 (file)
--- a/BUILD
+++ b/BUILD
@@ -20,10 +20,10 @@ container_bundle(
   name = "bundle",
 
   images = {
-    "ghcr.io/discordnova/nova/novactl:latest": "//novactl:image",
-    "ghcr.io/discordnova/nova/gateway:latest": "//gateway:image",
-    "ghcr.io/discordnova/nova/ratelimiter:latest": "//ratelimiter:image",
-    "ghcr.io/discordnova/nova/webhook:latest": "//webhook:image",
+    "$(docker_repo)/discordnova/nova/novactl:$(docker_tag)": "//novactl:image",
+    "$(docker_repo)/discordnova/nova/gateway:$(docker_tag)": "//gateway:image",
+    "$(docker_repo)/discordnova/nova/ratelimiter:$(docker_tag)": "//ratelimiter:image",
+    "$(docker_repo)/discordnova/nova/webhook:$(docker_tag)": "//webhook:image",
   }
 )
 
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dac72c2556bfbd338afabd19d738920010c7aaa9 100644 (file)
@@ -0,0 +1,2 @@
+load("//bazel:docker.bzl", "images")
+images()
\ No newline at end of file
index 8d21374055112c849206f0d08f508974dece3d52..be6a1d09782e42070f6e913b8ef140a7397ca6e2 100644 (file)
@@ -4,6 +4,9 @@ load("@io_bazel_rules_docker//toolchains/docker:toolchain.bzl", "toolchain_confi
 load("@io_bazel_rules_docker//repositories:repositories.bzl", "repositories")
 load("@io_bazel_rules_docker//repositories:deps.bzl", "deps")
 load("@io_bazel_rules_docker//container:container.bzl", "container_pull")
+load("@io_bazel_rules_docker//docker/package_managers:download_pkgs.bzl", "download_pkgs")
+load("@io_bazel_rules_docker//docker/package_managers:install_pkgs.bzl", "install_pkgs")
+load("@io_bazel_rules_docker//container:container.bzl", "container_image")
 
 load(
     "@io_bazel_rules_docker//go:image.bzl",
@@ -14,6 +17,23 @@ load(
     _rust_image_repos = "repositories",
 )
 
+def images():
+    download_pkgs(
+        name = "download_base_pkgs",
+        image_tar = "@debian//image",
+        packages = ["libgcc-10-dev", "libc6"]
+    )
+    install_pkgs(
+        name = "base_pkgs",
+        image_tar = "@debian//image",
+        installables_tar = ":download_base_pkgs.tar",
+        output_image_name = "distroless_base_with_libgcc"
+    )
+    container_image(
+        name = "base",
+        base = ":base_pkgs.tar",
+        visibility = ["//visibility:public"],
+    )
 
 def load_docker():
     """
@@ -27,15 +47,14 @@ def load_docker():
     _go_image_repos()
     _rust_image_repos()
     container_pull(
-        name = "io_docker_index_library_debian_stable_slim",
-        digest = "sha256:2c4bb6b7236db0a55ec54ba8845e4031f5db2be957ac61867872bf42e56c4deb",
+        name = "distroless_debian10",
         registry = "gcr.io",
-        repository = "distroless/cc-debian10",
+        repository = "distroless/base-debian10",
         tag = "latest",
     )
     container_pull(
-        name = "ubuntu1604",
-        registry = "l.gcr.io",
-        repository = "google/ubuntu1604",
-        tag = "latest",
-    )
+        name = "debian",
+        registry = "docker.io",
+        repository = "library/debian",
+        tag = "stable",
+    )
\ No newline at end of file
index a6d3e4fb6b820326ddb451ed6ec89f3ea592c6d6..c8e21d5116817c348d881b76020bb54387293361 100644 (file)
@@ -10,7 +10,7 @@ def load_rust_toolchains():
     """
     rust_repositories(
         edition = "2018",
-        iso_date = "2021-06-16",
+        iso_date = "2021-09-09",
         version = "nightly",
     )
 
index 2413b4d261333c0dda5755d29e24f09654a09b77..c0a9f5d26c1899bc6c853cec936243abf5dbd76f 100644 (file)
@@ -1,9 +1,6 @@
 load("@rules_rust//rust:rust.bzl", "rust_binary")
 load("//cargo:crates.bzl", "all_crate_deps", "crate_deps")
-load("@io_bazel_rules_docker//container:container.bzl", "container_image")
 load("@io_bazel_rules_docker//rust:image.bzl", "rust_image")
-load("@io_bazel_rules_docker//docker/package_managers:download_pkgs.bzl", "download_pkgs")
-load("@io_bazel_rules_docker//docker/package_managers:install_pkgs.bzl", "install_pkgs")
 
 test_suite(name = "tests")
 
@@ -17,7 +14,9 @@ rust_binary(
 
 rust_image(
     name = "image",
-    binary = ":gateway",
+    srcs = glob(["src/**/*.rs"]),
+    proc_macro_deps = crate_deps(["serde_repr"]),
+    deps = all_crate_deps(),
     visibility = ["//visibility:public"],
-    base = "@ubuntu1604//image",
+    base = "//bazel:base",
 )
index f9143e11fbc4c2dce2960e725445d8c5eeee82bf..4a122e152967386876c9a36adb4615042de01bb3 100644 (file)
@@ -32,4 +32,5 @@ rust_image(
     srcs = ["src/main.rs"],
     deps = all_crate_deps() + [":build_script"],
     visibility = ["//visibility:public"],
+    base = "//bazel:base",
 )
\ No newline at end of file
index 4e99e2c063fc907295360eb4b84d5d22e1532c89..65ce039f82454d368e487fa6546eac0d15b44d85 100644 (file)
@@ -22,4 +22,5 @@ rust_image(
     srcs = glob(["src/**"]),
     deps = all_crate_deps(),
     visibility = ["//visibility:public"],
+    base = "//bazel:base",
 )