-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(cleanups): added content to readme, cleanups to flake.nix, pypr…
…oject.toml
- Loading branch information
Sean Murphy
committed
Jan 24, 2024
1 parent
2e5f72d
commit 2d61313
Showing
3 changed files
with
36 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,32 @@ | ||
# nix-container-build-gha | ||
Demo repo - building nix container image with github action | ||
|
||
This is a simple testing repo I used to understand how to build python environments in github actions | ||
with nix. I wrote up my thoughts on this medium post. | ||
|
||
This is the public version of the repo which anyone can look through; I also maintain a private version | ||
which is linked to some self hosted github runners - I don't want to link the public version to any such | ||
runners. | ||
|
||
There are comments in the code which give some pointers on how things work - feel free to look around. | ||
|
||
## The python application | ||
|
||
The python application was taken from [this repo](https://github.com/mitchellh/flask-nix-example) created by Mitchell Hashimoto - it is a simple flask application. | ||
|
||
I have included a couple of unecessary dependencies in the `pyproject.toml` just to understand how these are | ||
handled (`torch` and `jupyter`). They are available in the resulting python environment but not used by the application. | ||
|
||
## Working locally | ||
|
||
This kind of assumes you have a sensible nix configuration and are comfortable using flakes. | ||
|
||
- `nix build` will build the application and put the content in the `result` directory | ||
- `nix build .#ociApplicationImage` will build a container image which runs the application - the resulting container image is a gzip'd tarball in the `result` directory which can be imported to docker using `docker load < result` | ||
- `nix build .#ociPackageImage` will build a container image which contains the python environment but launches bash; run python within bash and you can import the dependencies | ||
- `nix run` will run the application without building a container image | ||
|
||
## Using the github actions | ||
|
||
The github actions content was essentially copied from this repo. | ||
|
||
It requires a token to access a docker repository and push the resulting container image there. This repo uses the standard github runners but in the private variant, I was using a self-hosted runner (there are a couple of comments in the github action definition which highlight the small differences). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters