{"id":22045210,"url":"https://github.com/nigelhorne/smoker","last_synced_at":"2026-05-01T21:33:27.122Z","repository":{"id":53175005,"uuid":"48751647","full_name":"nigelhorne/smoker","owner":"nigelhorne","description":"Yet another minismoker for CPAN","archived":false,"fork":false,"pushed_at":"2025-11-05T02:33:17.000Z","size":442,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-05T04:15:57.364Z","etag":null,"topics":["cpan","perl","smoke"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nigelhorne.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-12-29T14:40:38.000Z","updated_at":"2025-11-05T02:33:20.000Z","dependencies_parsed_at":"2023-10-12T01:00:15.481Z","dependency_job_id":"625ba81c-20ce-476c-a004-0044fcee16ff","html_url":"https://github.com/nigelhorne/smoker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nigelhorne/smoker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2Fsmoker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2Fsmoker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2Fsmoker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2Fsmoker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nigelhorne","download_url":"https://codeload.github.com/nigelhorne/smoker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2Fsmoker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32513686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cpan","perl","smoke"],"created_at":"2024-11-30T13:12:14.995Z","updated_at":"2026-05-01T21:33:27.093Z","avatar_url":"https://github.com/nigelhorne.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"smoker\n======\n\nYet another mini-smoker for Perl.\n\n# GETTING STARTED\n\nIf you've never run a CPAN smoke tester before, read http://cpanwiki.grango.org/wiki/GettingStarted.\n\nOn FreeBSD 12 as root:\n\n    pkg install p5-Sys-CpuLoad p5-CPAN-Reporter p5-Proc-ProcessTable p5-JSON p5-LWP-Protocol-https sudo curl wget bash lynx ncftp ca_root_nss git rsync p5-MIME-Lite perl5\n\nOn Haiku:\n\n    pkgman install uri xml_parser archive_zip file_next\n\nOn all systems:\n\nDownload and install Perlbrew from http://perlbrew.pl.\n\n# WITHOUT DOCKER\n\nFor each version of Perl that you wish to smoke test on each machine in your\ntesting cluster:\n\n    perlbrew install -j4 perl-5.28.1\n    perlbrew use perl-5.28.1\n    cpan -i Test::Reporter::Transport::Metabase CPAN::Reporter Net::SSLeay LWP::Protocol::https\n    bin/loadall1\n    bin/loadall2\n    bin/loadall3\n    bin/loadall5\n\nEnsure that the .../bin files are in your PATH.\n\n    smoker - run a Perl smoker on the latest CPAN uploads on the current Perl\n\n    -v - output more of what's going on to the logfiles /tmp/smoker.out and /tmp/smoker.err\n\n    -d - as above but output goes to the terminal and testwrapper input files\n        are left in $TMPDIR\n\n    -i - interactive mode: as above but input is taken from the terminal not /dev/null\n\nNow choose one of these architectures\n\n## A central machine model\n\nSet up a machine as a minicpan repository.\n\n    smokerupdate - update the minicpan repository and broadcast the updates\n\tRun this out of cron\n    smokerdaemon - listen to smokerupdates and test the updates\n\tStart this on the machines that you're going to test CPAN modules\n\tReads ~/.smokerdaemonrc, if clean_after_test is set to one the\n\t\tbuild tree will be removed after each smoking cycle\n\n## Each machine runs its own testing\n\n    smokerloop - shell wrapper to run smoker on all perlbrew installations\n    \n        while true\n\tdo\n\t    PATH=~/src/njh/smoker/bin:$PATH ~/src/njh/smoker/bin/smokerloop\n\t    sleep 600\n\tdone\n\n    Reads ~/.smokerrc, if clean_after_test is set to one the\n\tbuild tree will be removed after each smoking cycle\n\n## APPARMOR\n\nI'm testing the use of Apparmor to stop programs from creating files all over\nthe place - a number of test programs create in my home directory for example.\n\nHere's what I have at the moment in\n/etc/apparmor.d/home.njh.src.njh.smoker.bin:\n\n    #include \u003ctunables/global\u003e\n    /home/njh/src/njh/smoker/bin {\n        audit deny @{HOME}/** rw,\n        audit deny /usr/bin/sudo rwx,\n    }\n\nI then ran\n\n    apparmor_parser -a /etc/apparmor.d/home.njh.src.njh.smoker.bin\n    systemctl reload apparmor\n\nThis is experimental.\n\n# WITH DOCKER\n\nI use Docker images so that I can isolate several smokers running once.\nYou'll see that I use /mnt/CPAN as an NFS point for the CPAN modules,\nyou'll probably want to change that to your local CPAN mirror.\nIf you don't have a local mirror, this option isn't for you since\nthere's no other notification method to tell the smokers in the containers\nwhat's been published and is ready for smoking.\n\nTo build an image\n\n    # test perl 5.28.1 listening for CPAN modules on port 21213\n    cd dockerprojects\n    ./docker-build-image 5.28.1 21213\n\nTo run an image\n\n    docker run --log-driver syslog --log-opt syslog-address=udp://loghost:42185 -dt --name perl-5.28.1-smoker --mount type=bind,src=/mnt/CPAN,dst=/mnt/CPAN,readonly -p 0.0.0.0:21213:21213/udp perl-5.28.1-smoker\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnigelhorne%2Fsmoker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnigelhorne%2Fsmoker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnigelhorne%2Fsmoker/lists"}