s3/smbd: let canonicalize_ea_name accept fsp and fstring only in sig
[samba.git] / bootstrap / README.md
1 # Samba Bootstrap
2
3 A pure python3 module with CLI to bootstrap Samba envs for multiple distributions.
4
5 ## Features
6
7 - manage Samba dependencies list for multiple distributions
8 - render dependencies package list to boostrap shell scripts(apt, yum and dnf)
9 - render Vagrantfile to provision vitual machines with bootstrap scripts
10 - render Dockerfile to build docker images with bootstrap scripts
11 - build/tag/push docker images
12
13 ## Supported Distributions
14
15 deb: Debian 10, Ubuntu 1604|1804|2004
16 rpm: CentOS 7|8, Fedora 32|33, openSUSE Leap 15.1|15.2
17
18 Easy to add more.
19
20 ## Usage
21
22 Render files:
23
24  bootstrap/template.py --render
25
26 Files are rendered into `bootstrap/generated-dists` directory in current dir.
27 It also generates bootstrap/sha1sum.txt and prints out the sha1sum of the
28 current code/configuration.
29
30 Just calculate the sha1sum for consistency checks:
31
32  bootstrap/template.py --sha1sum
33
34 The checksum needs to be added as `SAMBA_CI_CONTAINER_TAG` in
35 the toplevel .gitlab-ci.yml file.
36
37 ## User Stories
38
39 As a gitlab-ci user, I can use this tool to build new CI docker images:
40
41  After committing the result of calling `bootstrap/template.py --render`
42  and updating `SAMBA_CI_CONTAINER_TAG` in .gitlab-ci.yml, you can push.
43
44  But you need to pass `SAMBA_CI_REBUILD_IMAGES=yes` as environment
45  variable. It means the pipeline runs the 'images' stage and builds
46  the new container images for all supported distributions and
47  uploads the images into the registry.gitlab.com/samba-team/devel/samba
48  container registry.
49
50  You can push by specifying the variable (note multiple -o options are allowed,
51  see https://docs.gitlab.com/ee/user/project/push_options.html):
52
53   `git push -o ci.variable='SAMBA_CI_REBUILD_IMAGES=yes' git@gitlab.com:samba-team/devel/samba.git ...`
54
55  If you want to try to build images for the (currently) broken
56  distributions, you would pass `SAMBA_CI_REBUILD_BROKEN_IMAGES=yes`
57  in addition to the custom pipeline. Note the images for
58  the broken distributions are just build, but not uploaded
59  to the container registry. And any failures in the image
60  creation is ignored. Once you managed to get success, you should
61  move from `.build_image_template_force_broken` to `.build_image_template`.
62  And also add a `.samba-o3-template` job for the new image
63  in the main .gitlab-ci.yml file.
64
65  Over time we'll get a lot of images pushed to the container registry.
66  The approach we're using allows gitlab project maintainers to
67  remove old images! But it is possible to regenerate the images
68  if you have the need to run a gitlab ci pipeline based on an
69  older branch.
70
71 As a Samba developer/tester, I can setup a Samba env very quickly.
72
73 With Docker:
74
75  cd ~/samba
76  git clean -xdf
77  docker login
78  docker pull registry.gitlab.com/samba-team/devel/samba/samba-ci-ubuntu1804:${sha1sum}
79  docker run -it -v $(pwd):/home/samba/samba samba-ci-ubuntu1804:${sha1sum} bash
80
81 With podman:
82
83   podman run -ti --cap-add=SYS_PTRACE --security-opt seccomp=unconfined registry.gitlab.com/samba-team/devel/samba/samba-ci-ubuntu1804:${sha1sum} bash
84
85 With Vagrant:
86
87  cd bootstrap/generated-dists/
88  vagrant up   # start all
89  vagrant up debian10  # start one
90  vagrant ssh debian10
91  vagrant destroy debian10  # destroy one
92  vagrant destroy  # destroy all
93
94 Or a remote/cloud machine:
95
96  scp bootstrap/generated-dists/fedora33/bootstrap.sh USER@IP:
97  ssh USER@IP
98  sudo bash ./bootstrap.sh
99