{"id":18497840,"url":"https://github.com/containers/automation","last_synced_at":"2025-04-09T00:30:46.440Z","repository":{"id":37895258,"uuid":"246305432","full_name":"containers/automation","owner":"containers","description":"Automation scripts and configurations common across the containers org. repositories","archived":false,"fork":false,"pushed_at":"2025-03-13T10:23:52.000Z","size":836,"stargazers_count":18,"open_issues_count":3,"forks_count":17,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-01T10:55:38.129Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/containers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-10T13:16:11.000Z","updated_at":"2025-03-13T10:23:57.000Z","dependencies_parsed_at":"2024-03-15T18:29:07.815Z","dependency_job_id":"b4662091-dbcb-4cb7-b19b-bc9a7da8ec5a","html_url":"https://github.com/containers/automation","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fautomation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fautomation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fautomation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fautomation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/containers","download_url":"https://codeload.github.com/containers/automation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247949693,"owners_count":21023368,"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-11-06T13:36:13.117Z","updated_at":"2025-04-09T00:30:45.007Z","avatar_url":"https://github.com/containers.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Automation scripts, libraries for re-use in other repositories\n\n\n## Dependencies\n\nThe install script and `common` subdirectory components require the following\nsystem packages (or their equivalents):\n\n* bash\n* core-utils\n* git\n* install\n\n\n## Installation\n\nDuring build of an environment (VM, container image, etc), execute *any version*\nof [the install\nscript](https://github.com/containers/automation/releases/download/latest/install_automation.sh),\npreferably as root.  The script ***must*** be passed the version number of [the project\nrelease to install](https://github.com/containers/automation/releases).  Alternatively\nit may be passed `latest` to install the HEAD of the main branch.\n\nFor example, to install the `v1.1.3` release, run:\n```bash\n~# url='https://raw.githubusercontent.com/containers/automation/master/bin/install_automation.sh'\n~# curl -sL \"$url\" | bash -s 1.1.3\n```\n\nTo install `latest`, run:\n```bash\n~# url='https://raw.githubusercontent.com/containers/automation/master/bin/install_automation.sh'\n~# curl -sL \"$url\" | bash -s latest\n```\n\n### Alt. Installation\n\nIf you're leery of piping to bash and/or a local clone of the repository is already\navailable locally, the installer can be invoked with the *magic version* '0.0.0'.\nNote this will limit the install to the local clone (as-is). The installer script\nwill still reach out to github.com to retrieve version information.  For example:\n\n```bash\n~# cd /path/to/clone\n/path/to/clone# ./bin/install_automation.sh 0.0.0\n```\n\n### Component installation\n\nThe installer may also be passed the names of one or more components to\ninstall system-wide.  Available components are simply any subdirectory in the repo\nwhich contain a `.install.sh` file.  For example, to install the latest `build-push` system-wide run:\n\n```bash\n~# url='https://raw.githubusercontent.com/containers/automation/master/bin/install_automation.sh'\n~# curl -sL \"$url\" | bash -s latest build-push\n```\n\n## Usage\n\nThe basic install consists of copying the contents of the `common` (subdirectory) and\nthe installer script into a central location on the system.  Because this location\ncan vary by platform, a global shell variable `$AUTOMATION_LIB_PATH` is established\nby a central configuration at install-time.  It is highly recommended that all\ncallers explicitly load and export the contents of the file\n`/etc/automation_environment` before making use of the common library or any\ncomponents.  For example:\n\n```bash\n#!/bin/bash\n\nset -a\nif [[ -r \"/etc/automation_environment\" ]]; then\n    source /etc/automation_environment\nfi\nset +a\n\nif [[ -n \"$AUTOMATION_LIB_PATH\" ]]; then\n    source $AUTOMATION_LIB_PATH/common_lib.sh\nelse\n    (\n    echo \"WARNING: It doesn't appear containers/automation common was installed.\"\n    ) \u003e\u003e /dev/stderr\nfi\n\n...do stuff...\n```\n\n\n## Subdirectories\n\n### `.github/workflows`\n\nDirectory containing workflows for Github Actions.\n\n### `bin`\n\nThis directory contains scripts intended for execution under multiple environments,\npertaining to operations on this whole repository.  For example, executing all\nunit tests, installing components, etc.\n\n### `build-push`\n\nHandy automation too to help with parallel building and pushing container images,\nincluding support for multi-arch (via QEMU emulation).  See the\n[README.md file in the subdirectory](build-push/README.md) for more information.\n\n### `cirrus-ci_artifacts`\n\nHandy python script that may be used to download artifacts from any build,\nbased on knowing its ID.  Downloads will be stored properly nested, by task\nname and artifact so there are no name clashes.\n\n### `cirrus-ci_env`\n\nPython script used to minimally parse `.cirrus.yml` tasks as written/formatted\nin other containers projects.  This is not intended to be used directly, but\ncalled by other scripts to help extract env. var. values from matrix tasks.\n\n### `cirrus-ci_retrospective`\n\nSee the [README.md file in the subdirectory](cirrus-ci_retrospective/README.md) for more information.\n\n### `cirrus-task-map`\n\nHandy script that parses a `.cirrus.yml` and outputs an flow-diagram to illustrate\ntask dependencies.  Useful for visualizing complex configurations, like that of\n`containers/podman`.\n\n### `common`\n\nThis directory contains general-purpose scripts, libraries, and their unit-tests.\nThey're intended to be used individually or as a whole from within automation of\nother repositories.\n\n### `github`\n\nContains some helper scripts/libraries for using `cirrus-ci_retrospective` from\nwithin github-actions workflow.  Not intended to be used otherwise.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fautomation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontainers%2Fautomation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fautomation/lists"}