--- /dev/null
+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
--- /dev/null
+// 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
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
- 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
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",
}
)
+load("//bazel:docker.bzl", "images")
+images()
\ No newline at end of file
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",
_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():
"""
_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
"""
rust_repositories(
edition = "2018",
- iso_date = "2021-06-16",
+ iso_date = "2021-09-09",
version = "nightly",
)
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")
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",
)
srcs = ["src/main.rs"],
deps = all_crate_deps() + [":build_script"],
visibility = ["//visibility:public"],
+ base = "//bazel:base",
)
\ No newline at end of file
srcs = glob(["src/**"]),
deps = all_crate_deps(),
visibility = ["//visibility:public"],
+ base = "//bazel:base",
)