This repo aims to provide tools to manage debian packages for container_image and container_layer from bazelbuild/rules_docker repo.
-
Add this to WORKSPACE:
# check https://github.com/bazelbuild/rules_docker#setup for docker rule setup load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") http_archive( name = "aisbaa_rules_deb_packages", sha256 = "efff23139e27eccf22f696dda42265903b1eff6dfa2420c4339aa98cdc80a7b9", urls = [ "https://github.com/aisbaa/deb_packages/releases/download/v0.3-beta/deb_packages.tar.gz", ], ) load("@aisbaa_rules_deb_packages//deb_packages:defs.bzl", "deb_repository") load("@aisbaa_rules_deb_packages//deb_packages:deps.bzl", "deb_packages_setup") deb_packages_setup() # example for debian buster # dowload gpg key for repo and http_file( name = "buster_archive_key", sha256 = "9c854992fc6c423efe8622c3c326a66e73268995ecbe8f685129063206a18043", urls = ["https://ftp-master.debian.org/keys/archive-key-10.asc"], ) deb_repository( name = "debian_buster_amd64_pkgs", arch = "amd64", distro = "buster", distro_type = "debian", mirrors = [ "http://deb.debian.org/debian", ], packages = { # this will be populated by uodate_deb_packages rule }, packages_sha256 = { # this will be populated by uodate_deb_packages rule }, pgp_key = "buster_archive_key", )
-
Add docker rules and include packages you want to install:
load("@debian_buster_amd64_pkgs//debs:deb_packages.bzl", "debian_buster_amd64_pkgs") container_image( name = "zsh", base = "//base:base", debs = [ debian_buster_amd64_pkgs["zsh-common"], debian_buster_amd64_pkgs["zsh"], ], tags = [ "deb_packages_auto", ] )
-
Add
update_deb_packages
rule to a BUILD file, it is responsible for populating deb_repository rule in WORKSPACE file:load("@aisbaa_rules_deb_packages//deb_packages:defs.bzl", "update_deb_packages") update_deb_packages( name = "update_deb_packages", pgp_keys = [ "@buster_archive_key//file", ], )
-
Run
bazel run :update_deb_packages
to get@debian_buster_amd64_pkgs
pre-populated in WORKSPACE file. -
Run
bazel run //:zsh
to build and push new docker image to local docker instance.
Most if not all code comes from this repo: https://github.com/bazelbuild/rules_pkg.