{"id":15156718,"url":"https://github.com/puppetlabs/puppet-agent","last_synced_at":"2025-04-12T21:19:42.717Z","repository":{"id":23415363,"uuid":"26777895","full_name":"puppetlabs/puppet-agent","owner":"puppetlabs","description":"All of the directions for building a puppet agent package.","archived":false,"fork":false,"pushed_at":"2025-01-10T01:02:42.000Z","size":26593,"stargazers_count":47,"open_issues_count":0,"forks_count":146,"subscribers_count":149,"default_branch":"main","last_synced_at":"2025-04-04T00:22:24.204Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/puppetlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-11-17T21:23:08.000Z","updated_at":"2025-02-20T21:17:53.000Z","dependencies_parsed_at":"2023-10-16T21:11:01.046Z","dependency_job_id":"30bb1d31-3d9f-415c-b365-9baa90aed944","html_url":"https://github.com/puppetlabs/puppet-agent","commit_stats":{"total_commits":13637,"total_committers":136,"mean_commits":100.2720588235294,"dds":0.2537214929969934,"last_synced_commit":"233a292da024d6f8ed67917a7d296fc0816cccb5"},"previous_names":["puppetlabs-toy-chest/puppet-agent","puppetlabs/puppet-agent"],"tags_count":216,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppet-agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppet-agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppet-agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppet-agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/puppetlabs","download_url":"https://codeload.github.com/puppetlabs/puppet-agent/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248632083,"owners_count":21136624,"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":[],"created_at":"2024-09-26T19:41:06.597Z","updated_at":"2025-04-12T21:19:42.698Z","avatar_url":"https://github.com/puppetlabs.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repository is archived and Perforce will no longer be updating this repository. For more information, see [this Puppet blog post](https://www.puppet.com/blog/open-source-puppet-updates-2025).\n\nThe Puppet Agent\n===\n * Overview\n * Runtime requirements\n * Building puppet-agent\n * Branches in puppet-agent\n * License\n * Code Owners\n * Running Tests\n\nOverview\n---\nThe puppet agent is a collection of software that is required for puppet and\nits dependencies to run. This includes\n[puppet](https://github.com/puppetlabs/puppet),\n[facter](https://github.com/puppetlabs/facter), and other Puppet software, but\nalso vendored dependencies like ruby, curl, openssl, and more.\n\nThis repository contains configuration to build puppet-agent and the facter gem\nfor all of Puppet's supported platforms using\n[vanagon](https://github.com/puppetlabs/vanagon), a packaging utility.\n\nThe full list of software components built into the puppet agent and the\nfacter gem can be found in their [project definitions](configs/projects/), and\neach of the components has its own configuration in the [components\ndirectory](configs/components/).\n\nComponents that are not developed by Puppet (like ruby, curl, or openssl) are\nbuilt separately into a tarball and consumed here in the\n[puppet-runtime](configs/components/puppet-runtime.rb) component. See the\n[puppet-runtime](https://github.com/puppetlabs/puppet-runtime) project for more\ninformation and a full list of the vendored dependencies it provides.\n\npxp-agent is built separately into a tarball and consumed here in the\n[pxp-agent](configs/components/puppet-pxp-agent.rb) component. See the\n[pxp-agent-vanagon](https://github.com/puppetlabs/pxp-agent-vanagon) project for more information.\n\nRuntime Requirements\n---\nRuby and [bundler](http://bundler.io/) are required to build puppet-agent. The\n[Gemfile](Gemfile) specifies all of the necessary ruby libraries to build a\npuppet-agent package.  Additionally, puppet-agent requires a VM to build within\nfor each desired package.\n\n## Environment variables\n#### VANAGON\\_LOCATION\nThe location of Vanagon in the Gemfile can be overridden with the environment variable `VANAGON_LOCATION`. Can be set prior to `bundle install` or updated with `bundle update`.\n\n* `0.3.14` - Specific tag from the Vanagon git repo\n* `https://github.com/puppetlabs/vanagon#version` - Remote git location and version (can be a ref, branch or tag)\n* `file:///workspace/vanagon` - Absolute file path\n* `file://../vanagon` - File path relative to the project directory\n\n#### DEV\\_BUILD\nBy default, headers and other files that aren't needed in the final puppet-agent package will be removed as part of the [cleanup component](configs/components/cleanup.rb). If you'd like to keep these files in the finished package, set the `DEV_BUILD` environment variable to some non-empty value. Note that this will increase the size of the package considerably.\n\nBuilding puppet-agent or the facter gem\n---\n\nIf you wish to build puppet-agent yourself:\n\n1. First, build the\n   [puppet-runtime](https://github.com/puppetlabs/puppet-runtime) for your\n   target platform and agent version.\n2. Run `bundle install` to install required ruby dependencies.\n3. Update the `location` and `version` in the [puppet-runtime\n   component json file](configs/components/puppet-runtime.json) as follows:\n   - `location` should be a file URL to your local puppet-runtime output\n     directory, for example: `file:///home/you/puppet-runtime/output`\n   - `version` should be the version of puppet-runtime that you built; You\n     can find this value at the top level of the json metadata file produced by\n     the build in your puppet-runtime output directory.\n  4. You can disable the packaging of pxp-agent by setting `NO_PXP_AGENT` ENV variable.\n  If you want to  build an agent package that also contains pxp-agent you need to\n  update the `location` and `version` in the [pxp-agent\n   component json file](configs/components/pxp-agent.json) as follows:\n   - `location` should be a file URL to your local pxp-agent- output\n     directory, for example: `file:///home/you/pxp-agent-vanagon/output`\n   - `version` should be the version of pxp-agent that you built; You\n     can find this value at the top level of the json metadata file produced by\n     the build in your pxp-agent output directory.\n  - You also may need to change the source URIs for some other components. We\n    recognize this is less than ideal at this point, but we wanted to err on\n    the side of getting this work out in public rather than having everything\n    perfect. If you have your own mirror of the components of puppet-agent, you\n    can also use a rewrite rule. See the [Vanagon\n    README](https://github.com/puppetlabs/vanagon/blob/master/examples/projects/project.rb#L26)\n    for an example.\n5. Now use vanagon to build the puppet-agent. Run the following:\n\n   ```sh\n   bundle exec build \u003cproject-name\u003e \u003cplatform\u003e \u003cvm-hostname\u003e\n   ```\n\n   Where:\n   - project name is a project from [configs/projects](configs/projects) (this can be `puppet-agent`),\n   - platform is a platform supported by vanagon and defined in the\n     [configs/platforms](configs/platforms/) directory (for example,\n     `el-7-x86_64`), and\n   - the vm hostname is the hostname of a vm matching the desired platform. The\n     current user must be able to ssh into that vm as root (vanagon has facilities\n     to provide an ssh key beyond what is listed in .ssh/config).\n\nBranches in puppet-agent\n---\n\nTracking branch (main + stable):\n  * some components may reference tags if they’re slow moving (ruby, openssl)\n  * some components reference SHAs promoted by a CI pipeline (generally puppet-agent#main pipelines track components' main branches, and likewise for stable)\n\nGuidelines on Merging Between Branches\n* stable should be merged to main regularly (e.g. per commit), as is done for component repos; no PR needed\n* main should be merged to stable as-needed; typically this is done when a component merges its main to stable, and there are matching changes needed in puppet-agent\n\nGenerally, no PR is needed for routine merges from stable to main, but a PR is advised for other merges. Use your judgment of course, and put up a PR if you want review.\n\nNote that for all merges from main or stable, the merge should pick up:\n* changes outside of config/components\n* changes that bumped to a tag inside config/components\n\nBut never:\n* changes that bumped to a SHA inside config/components\n\nHere's a sample snippet used for a stable -\u003e main merge:\n\n```\ngit merge --no-commit --no-ff stable\nfor i in {hiera,facter,puppet,pxp-agent,cpp-pcp-client}; do git checkout main -- configs/components/$i.json;done\ngit commit -m \"(maint) Restore promoted components refs after merge from stable\"\n```\n\nIssues\n---\nFile issues in the [Puppet Agent (PA) project](https://tickets.puppet.com/browse/PA) on the Puppet Labs Jira site. Issues with individual components should be filed in their respective projects.\n\nLicense\n---\nPuppet agent is licensed under the [Apache-2.0](LICENSE) license.\n\nCode Owners\n---\nSee [CODEOWNERS](CODEOWNERS)\n\nRunning Tests\n---\nSee [Acceptance README](acceptance/README.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Fpuppet-agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpuppetlabs%2Fpuppet-agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Fpuppet-agent/lists"}