{"id":18909962,"url":"https://github.com/jonasbn/ebirah","last_synced_at":"2025-04-15T06:30:58.326Z","repository":{"id":37954173,"uuid":"224925245","full_name":"jonasbn/ebirah","owner":"jonasbn","description":"Experimental Docker project for Dist::Zilla","archived":false,"fork":false,"pushed_at":"2025-04-08T04:41:48.000Z","size":400,"stargazers_count":4,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T04:48:37.140Z","etag":null,"topics":["dist-zilla","docker","docker-image","dzil","hacktoberfest","perl","toolchain"],"latest_commit_sha":null,"homepage":"https://jonasbn.github.io/ebirah/","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonasbn.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-29T21:37:43.000Z","updated_at":"2025-04-08T04:41:51.000Z","dependencies_parsed_at":"2024-01-29T20:08:15.963Z","dependency_job_id":"4f478355-c27d-410d-a650-3d3db20bd290","html_url":"https://github.com/jonasbn/ebirah","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasbn%2Febirah","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasbn%2Febirah/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasbn%2Febirah/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonasbn%2Febirah/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonasbn","download_url":"https://codeload.github.com/jonasbn/ebirah/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249020704,"owners_count":21199602,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dist-zilla","docker","docker-image","dzil","hacktoberfest","perl","toolchain"],"created_at":"2024-11-08T09:38:49.483Z","updated_at":"2025-04-15T06:30:57.811Z","avatar_url":"https://github.com/jonasbn.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ebirah\n\nExperimental Docker image for [Dist::Zilla](dzil.org)\n\n![Markdownlint Action][GHAMKDBADGE]\n![Spellcheck Action][GHASPLLBADGE]\n[![Docker Pulls](https://img.shields.io/docker/pulls/jonasbn/ebirah.svg?style=flat)](https://hub.docker.com/r/jonasbn/ebirah/)\n\n## Features\n\n- Encapsulates `Dist::Zilla` and `dzil` in a Docker container, so you do not have to install and maintain `Dist::Zilla` and all it's magnificent dependencies\n- Offers interaction with the `dzil` command from the comfort of your terminal as `ebirah`\n- It can be used for continuous integration pipelines\n\nEbirah supports all the following `Dist::Zilla` commands, so you can replace `dzil` with `ebirah` for using the Docker image (please see the section on summoning Ebirah):\n\n- `ebirah help` - show helps message\n- `ebirah commands` - lists available commands\n- `ebirah new` - sets up a new distribution\n- `ebirah build` - builds the distribution\n- `ebirah clean` - cleans the build\n- `ebirah test` - tests the build\n- `ebirah smoke` - smoke tests the build\n- `ebirah install` - installs the distribution\n- `ebirah add` - adds an additional component to the distribution\n- `ebirah listdeps` - lists runtime dependencies for the distribution\n- `ebirah authordeps` - lists Dist::Zilla dependencies used the toolchain, Ebirah in this case\n- `ebirah run` - runs a executable in the context of the distribution\n- `ebirah nop` - a _no-operation_ primarily for diagnostic purposes\n- `ebirah xtest` - tests the build using the contents of the `xt` directory\n\nAll command options are supported.\n\nPlease see the documentation at [dzil.org](https://dzil.org/) for more details on `dzil` use.\n\nEbirah does not currently support:\n\n- `ebirah release` - release the distribution to PAUSE/CPAN\n- `ebirah setup` - runs interactive configuration process, resulting in `$HOME/.dzil/config.ini` file\n\nThis is on [the road map](https://github.com/jonasbn/ebirah/projects/1).\n\nEbirah does also not handle the definition of prerequisites in the `dist.ini` file.\n\n## Specification\n\nThe Docker image is based on [the official Perl Docker image][dockerhubperl], using the latest available stable version of this image. See the `Dockerfile` for details.\n\nIt is based on the _larger_ image, not the _slim_ version since `Dist::Zilla` and extensions require a toolchain for XS based Perl distributions.\n\n### A note on DockerHub\n\nThe images are build from the GitHub repository `master` branch.\n\nThe recommended use is to use the latest release with a version tag. See `Changelog.md` for details. Whereas the tag `latest` just reflect the latest build based on the `master` branch.\n\nThe `master` branch might contain changes not tagged as released yet and can be regarded as _unstable_ or _experimental_. Changes such as corrections to documentation etc. will not be tagged until separately as a general rule, unless the changes are significant, but the aim is to keep the documentation relevant and up to date.\n\n## Summoning Ebirah\n\nEbirah is [available on DockerHub][dockerhubebirah], or you can build it yourself based on this repository, see the section below on building Ebirah.\n\n```bash\ndocker pull jonasbn/ebirah:0.8.0\n```\n\n```bash\ndocker run --rm --volume $PWD:/opt jonasbn/ebirah:0.8.0\n```\n\nAnd if you are want the latest build from DockerHub:\n\n```bash\ndocker pull jonasbn/ebirah:latest\n```\n\n```bash\ndocker run --rm --volume $PWD:/opt jonasbn/ebirah:latest\n```\n\nAs mentioned `latest` can be considered _unstable_ or _experimental_. Development is kept in branches, but new experimental features might make into `master` for wider evaluation.\n\nUsing the image [available from GitHub](https://github.com/jonasbn/ebirah/packages) instead of DockerHub, do note this repository is in beta:\n\n```bash\ndocker pull ghcr.io/jonasbn/ebirah:0.8.0\n```\n\n```bash\ndocker run --rm --volume $PWD:/opt ghcr.io/jonasbn/ebirah:0.8.0\n```\n\n### Using a script\n\nThe feature listing assumes the script is named `ebirah`\n\n```bash\n#!/bin/bash\n\n# REF:http://jonasbn.github.io/til/bash/write_safe_shell_scripts.html\nset -euf -o pipefail\n\n# run ebirah docker image in current directory and cleanup the image afterwards\ndocker run --rm --volume $PWD:/opt jonasbn/ebirah \"$@\"\n```\n\n### Using an alias\n\n```bash\n# run ebirah docker image in current directory and cleanup the image afterwards\nalias ebirah='docker run --rm --volume $PWD:/opt jonasbn/ebirah'\n```\n\n### Using Ebirah for Continuous Integration\n\nEbirah was built with continuous integration (CI) in mind, meaning that encapsulating `Dist::Zilla` in a easily distributable container.\n\nFirst attempt at getting this to work has been implemented as [a GitHub Action](https://github.com/marketplace/actions/github-action-for-perl-s-dist-zilla).\n\nThe action can easily be implemented and current relies on `Dist::Zilla` using repositories.\n\nThe GitHub Action performs the following steps:\n\n1. Installs Perl dependencies, specified in the repository (currently only support the presences of a `cpanfile`, this might be extended and/or changed in the future based on requirements)\n1. Executes `dzil` with parameters specified in the GitHub Action configuration\n\nAn example configuration:\n\n```yaml\nname: CI Action\non: push\n\njobs:\n  build:\n    name: Continuous Integration\n    runs-on: ubuntu-latest\n    steps:\n    # REF: https://help.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#using-the-checkout-action\n    - name: \"Checkout repository\"\n      uses: actions/checkout@v3\n    - name: \"Installing dependencies and testing all using dzil\"\n      uses: jonasbn/github-action-perl-dist-zilla@0.2.0\n      with:\n          dzil-arguments: 'test --all'\n```\n\nLifted from: [`.github/workflows/ci.yml`](https://github.com/jonasbn/perl-app-yak/blob/master/.github/workflows/ci.yml) from [perl-app-yak](https://github.com/jonasbn/perl-app-yak/).\n\nExamples are available here:\n\n- [App::Yak](https://github.com/jonasbn/perl-app-yak)\n\nPlease [see the documentation on the GitHub Action for Dist::Zilla](https://github.com/marketplace/actions/github-action-for-perl-s-dist-zilla) for more details\n\n## Diagnostics\n\n### `no configuration (e.g, dist.ini)`\n\nThis error indicates that you have forgotten to invoke the Docker command with `--volume`\n\n1. Add `--volume` as specified in the documentation to your invocation\n\n```bash\ndocker run --rm --volume $PWD:/opt jonasbn/ebirah\n```\n\n### `Invalid selection, please try again:`\n\nIf you are executing the `setup` command and you have forgotten to invoke the Docker command with `--volume`. You will get a lot of repeated messages:\n\n```text\nInvalid selection, please try again: Invalid selection, please try again:\n```\n\nFor now the `setup` command is not supported.\n\n```bash\ndocker run --rm --volume $PWD:/opt jonasbn/ebirah\n```\n\nAlso you have to shut down the running container with the Docker `kill` command:\n\n```bash\n$ docker ps\nCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES\n240e33386a0b        ebirah:latest       \"dzil setup\"        3 seconds ago       Up 1 second                             kind_hopper\n$ docker kill 240e33386a0b\n240e33386a0b\n```\n\n### `Cannot detect source of 'xt'!`\n\nIf you are executing the `xtest` command and the `xt` directory does either not exist or does not contain any tests.\n\n1. Either add a `xt` directory with tests\n1. Add tests to your empty `xt` directory\n1. Do not use the `xtest` command since it does not make sense in the context you are running\n\n## Building ebirah\n\nIf you choose to build the image yourself, the above information has to be adjusted accordingly to reflect the image name\n\n### Building the Docker Image\n\n```bash\ndocker build -t jonasbn/ebirah .\n```\n\n### Running the Docker Image\n\n```bash\ndocker run --rm -v $PWD:/opt jonasbn/ebirah\n```\n\nDo note you can use the short-form `ebirah` for the image name, I just use the fully qualified name matching my own usage pattern and the examples and documentation above.\n\n## Acknowledgements\n\nA list of contributors in alphabetical order:\n\n- Alceu Rodrigues de Freitas Junior (@glasswalk3r)\n- Ed Sabol  (@esabol)\n\n## About\n\n[Ebirah](https://en.wikipedia.org/wiki/Ebirah) is one of the [Godzilla characters](https://en.wikipedia.org/wiki/Category:Godzilla_characters) ([kaiju](https://en.wikipedia.org/wiki/Kaiju)), since [Dist::Zilla](dzil.org) namewise also originates from the Godzilla ([kaiju](https://en.wikipedia.org/wiki/Kaiju)) universe, Ebirah was a good candidate for a project name with the marine relation, making sense in Docker backdrop.\n\nThe logo used is by the artist [ZappaZee](https://www.deviantart.com/zappazee). I found it via [Deviant Art](https://www.deviantart.com/) and it is used here with permission.\n\n## Resources and References\n\n- [Blog post by Andrew Lock: \"Packaging CLI programs into Docker images to avoid dependency hell\"](https://andrewlock.net/packaging-cli-programs-into-docker-images-to-avoid-dependency-hell/)\n- [GitHub repository](https://github.com/jonasbn/ebirah)\n- [Docker Documentation: run reference for docker cli](https://docs.docker.com/engine/reference/run/)\n- [DockerHub: Perl][dockerhubperl]\n- [DockerHub: Ebirah][dockerhubebirah]\n- [dzil.org](http://dzil.org/)\n- [MetaCPAN: Dist::Zilla](https://metacpan.org/pod/Dist::Zilla)\n- [GitHub: \"Getting Started with the GitHub Container Registry](https://docs.github.com/en/free-pro-team@latest/packages/getting-started-with-github-container-registry/about-github-container-registry)\n\n![ebirah logo](assets/ebirah_by_zappazee.png)\n\n[dockerhubebirah]: https://hub.docker.com/repository/docker/jonasbn/ebirah\n[dockerhubperl]: https://hub.docker.com/_/perl\n[GHAMKDBADGE]: https://github.com/jonasbn/ebirah/workflows/Markdownlint%20Action/badge.svg\n[GHASPLLBADGE]: https://github.com/jonasbn/ebirah/workflows/Spellcheck%20Action/badge.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasbn%2Febirah","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonasbn%2Febirah","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonasbn%2Febirah/lists"}