You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+17-17
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,14 @@
1
-
# mkdevenv: consistent, isolated development
1
+
# mkdev: consistent, isolated development
2
2
3
-
**mkdevenv** is a personal collection of OCI-compliant container image boilerplates for managing isolated development environments using GNU Make.
3
+
**mkdev** is a personal collection of OCI-compliant container image boilerplates for managing isolated development environments using GNU Make.
4
4
5
5
It enables a **consistent**, **open**, and **extensible** workflow by using `Containerfile` and `Makefile` as the standard points of entry. Dependencies and tools are packaged in a custom container, providing isolation and replicability of the development environment while still integrating with the `$EDITOR` on the host system.
6
6
7
7
> "Don't let the development dependency hell mess with your files and processes. Containerize the development environment!"
8
8
> — [Tower Guardian](https://imgflip.com/i/9gc41r), in a new take.
@@ -43,15 +43,15 @@ It enables a **consistent**, **open**, and **extensible** workflow by using `Con
43
43
44
44
### Setup
45
45
46
-
1.**Create a `.mkdevenv` directory** at the root of the project or environment. Only files within this path will be shared with the container.
47
-
1.**Copy the appropriate files from the [boilerplates](boilerplates/) directory** into the `.mkdevenv` directory—for example, the [ansible-fedora](boilerplates/ansible/fedora) development environment. Clone the **mkdevenv** repository to streamline this process.
48
-
1.**Move the `Makefile`** from the `.mkdevenv` directory to the root of the project or environment.
46
+
1.**Create a `.mkdev` directory** at the root of the project or environment. Only files within this path will be shared with the container.
47
+
1.**Copy the appropriate files from the [boilerplates](boilerplates/) directory** into the `.mkdev` directory—for example, the [ansible-fedora](boilerplates/ansible/fedora) development environment. Clone the **mkdev** repository to streamline this process.
48
+
1.**Move the `Makefile`** from the `.mkdev` directory to the root of the project or environment.
49
49
1.**Edit the `Makefile`** and adjust variables with `changeme` values. These variables are used for naming, managing, and running the container.
50
50
51
51
#### Per-project example
52
52
```
53
53
project/
54
-
├── .mkdevenv/
54
+
├── .mkdev/
55
55
│ ├── Containerfile
56
56
│ ├── README.md
57
57
│ ├── dnf.txt
@@ -62,7 +62,7 @@ project/
62
62
#### Multi-project (omni) example
63
63
```
64
64
repositories/
65
-
├── .mkdevenv/
65
+
├── .mkdev/
66
66
│ ├── Containerfile
67
67
│ ├── README.md
68
68
│ ├── apt.txt
@@ -78,10 +78,10 @@ repositories/
78
78
79
79
#### Default commands on host system
80
80
81
-
-**`make devenv`**: Build the container image defined in `.mkdevenv/Containerfile`.
82
-
-**`make start`**: Start the mkdevenv container, passing the current working directory as a bind mount.
83
-
-**`make stop`**: Stop the mkdevenv container.
84
-
-**`make clean`**: Remove the mkdevenv container and its artifacts. Executes the `distclean` target first.
81
+
-**`make devenv`**: Build the container image defined in `.mkdev/Containerfile`.
82
+
-**`make start`**: Start the mkdev container, passing the current working directory as a bind mount.
83
+
-**`make stop`**: Stop the mkdev container.
84
+
-**`make clean`**: Remove the mkdev container and its artifacts. Executes the `distclean` target first.
85
85
-**`make serestore`**: Restore project files context on SELinux host systems.
86
86
87
87
#### Custom commands inside the container
@@ -140,22 +140,22 @@ In worst-case scenarios, SSH protocol can also be used.
140
140
141
141
## Contributing
142
142
143
-
In case of unexpected behavior, please open a [bug report](https://github.com/ttybitnik/mkdevenv/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=).
143
+
In case of unexpected behavior, please open a [bug report](https://github.com/ttybitnik/mkdev/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=).
144
144
145
145
For matters requiring privacy, such as security-related reports or patches, check the [security policy](SECURITY.md).
146
146
147
-
To contribute to **mkdevenv** boilerplates, see the [project guidelines](boilerplates/README.md).
147
+
To contribute to **mkdev** boilerplates, see the [project guidelines](boilerplates/README.md).
148
148
149
149
### Mailing list
150
150
151
151
[Email workflow](https://git-send-email.io/) is also available.
152
152
153
-
Feel free to send patches, questions, or discussions related to **mkdevenv** to the [~ttybitnik/general mailing list](https://lists.sr.ht/~ttybitnik/general).
153
+
Feel free to send patches, questions, or discussions related to **mkdev** to the [~ttybitnik/general mailing list](https://lists.sr.ht/~ttybitnik/general).
154
154
155
155
## License
156
156
157
157
This project is licensed under the GNU General Public License v3.0 (GPL-3.0), **unless an exception is made explicit in context**. See the `COPYING` file for more information.
158
158
159
159
Be aware that the resulting container images may include other software subject to additional licenses, such as the base operating system, shells, and any direct or indirect dependencies of the software being contained. As with any built container image, it is the user's responsibility to ensure their use of the image complies with all relevant licenses for the software contained within.
160
160
161
-
The source code for this project is available at <https://github.com/ttybitnik/mkdevenv>.
161
+
The source code for this project is available at <https://github.com/ttybitnik/mkdev>.
Copy file name to clipboardExpand all lines: boilerplates/README.md
+8-8
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@
9
9
10
10
## Containerfile
11
11
12
-
-**`ARG`**: Build-time argument for specifying the `USERNAME` (default value: `mkdevenv`).
12
+
-**`ARG`**: Build-time argument for specifying the `USERNAME` (default value: `mkdev`).
13
13
-**`LABEL`**: Metadata instruction including `name`, `summary`, and `usage` information.
14
14
-**`RUN`**: Commands for setting up the environment, including installing the **packages files**, removing cache files, and creating the non-root user.
15
15
-**`WORKDIR`**: Path to the project files inside the container `/home/$USERNAME/workspace`.
@@ -32,12 +32,12 @@
32
32
33
33
-**`PROJECT_NAME`**: Suffix for container and image names, restricted to letters, numbers, underscores, dots, and hyphens `[a-zA-Z0-9][a-zA-Z0-9_.-]*` (default value: `changeme`).
34
34
-**`CONTAINER_ENGINE`**: Command for running the container engine, such as `podman` or `docker` (default value: `changeme`).
35
-
- Development image names with complete address format, including `localhost`, and `mkdevenv` as the namespace (e.g., `localhost/mkdevenv/$(PROJECT_NAME)`).
36
-
- Development container names prefixed with `mkdevenv-` to avoid conflicts (e.g., `mkdevenv-$(PROJECT_NAME)`).
35
+
- Development image names with complete address format, including `localhost`, and `mkdev` as the namespace (e.g., `localhost/mkdev/$(PROJECT_NAME)`).
36
+
- Development container names prefixed with `mkdev-` to avoid conflicts (e.g., `mkdev-$(PROJECT_NAME)`).
37
37
38
38
### Host targets/commands
39
39
40
-
-**`devenv`**: Target for building the development container image.
40
+
-**`dev`**: Target for building the development container image.
41
41
-**`start`**: Target for starting the container.
42
42
-**`stop`**: Target for stopping the container.
43
43
-**`clean`**: Target for removing the container and image.
@@ -59,11 +59,11 @@
59
59
- Table describing the packages installed through **packages files** for each package manager.
60
60
- Basic three-steps instructions with a link for further details:
61
61
```text
62
-
1. Create a `.mkdevenv` directory at the root of the project.
63
-
2. Copy the boilerplate files into the `.mkdevenv` directory.
62
+
1. Create a `.mkdev` directory at the root of the project.
63
+
2. Copy the boilerplate files into the `.mkdev` directory.
64
64
3. Move the `Makefile` to the root of the project.
65
65
66
-
*For more information, see <https://github.com/ttybitnik/mkdevenv>.*
66
+
*For more information, see <https://github.com/ttybitnik/mkdev>.*
67
67
```
68
68
69
69
## Complete example
@@ -77,7 +77,7 @@ For a complete example, refer to any of the existing boilerplate files, such as
77
77
78
78
To ensure your changes follow the guidelines, run `./linter.sh`.
79
79
80
-
The files `./Devenv.mk` (per-project) and `./Omni.mk` (multi-project) are the source of truth for each approach. Changes to these files, up to the `# Container targets/commands` section, can be propagated to the boilerplates by running `./update-makefiles.sh`.
80
+
The files `./Dev.mk` (per-project) and `./Omni.mk` (multi-project) are the source of truth for each approach. Changes to these files, up to the `# Container targets/commands` section, can be propagated to the boilerplates by running `./update-makefiles.sh`.
0 commit comments