{"id":19292238,"url":"https://github.com/nasa-pds/github-actions-base","last_synced_at":"2026-03-19T09:07:41.143Z","repository":{"id":46052180,"uuid":"295559533","full_name":"NASA-PDS/github-actions-base","owner":"NASA-PDS","description":"Base Docker image for GitHub Actions for PDS","archived":false,"fork":false,"pushed_at":"2025-10-16T16:01:40.000Z","size":48093,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-17T18:49:51.594Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","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/NASA-PDS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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":"2020-09-14T23:10:22.000Z","updated_at":"2025-10-16T16:01:45.000Z","dependencies_parsed_at":"2024-01-09T16:07:36.808Z","dependency_job_id":"0c79819c-f681-4371-aa25-b553e5add59a","html_url":"https://github.com/NASA-PDS/github-actions-base","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/NASA-PDS/github-actions-base","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fgithub-actions-base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fgithub-actions-base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fgithub-actions-base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fgithub-actions-base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NASA-PDS","download_url":"https://codeload.github.com/NASA-PDS/github-actions-base/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-PDS%2Fgithub-actions-base/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29927290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"online","status_checked_at":"2026-02-28T02:00:07.010Z","response_time":90,"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":[],"created_at":"2024-11-09T22:29:44.564Z","updated_at":"2026-02-28T07:10:02.984Z","avatar_url":"https://github.com/NASA-PDS.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌄 PDS Engineering Actions: Base Image\n\n\n[GitHub Actions](https://github.com/features/actions) let you run workflows for software repositories for such things as continuous integration, code quality, documentation extraction, continuous delivery, and so forth. The [Planetary Data System (PDS)](https://pds.nasa.gov/) uses GitHub Actions for these purposes.\n\nWorkflows consist of _actions_, each of which can be executed using JavaScript, so-called \"composite\" actions (essentially shell macros), or as [Docker](https://www.docker.com/) containers. Docker-based actions give you the most flexibility, letting you define your action in whatever programming language you enjoy with access to whatever libraries and APIs are convenient (so long as it's a Linux-based container).\n\nHowever, Docker-based actions are the slowest in GitHub Actions as GitHub spins up a new Docker machine, builds your image, installs it into a container, runs it, and then tears it all down for _every_ execution of your action. For actions that require a lot of setup (in terms of C libraries, Python dependencies, Java APIs, and so forth), this can make execution painfully slow.\n\nEnter _this_ image. By deriving specific GitHub Actions from _this_ image, we make a \"snapshot\" of all the dependencies typically needed by GitHub actions in one place.\n\nOf course, this makes a few assumptions:\n\n- PDS GitHub actions will need Python 3.9.16.\n- They'll run on Alpine Linux 3.16.\n- They'll have access to development tools:\n  - GCC\n  - MUSL C library\n  - OpenSSL\n  - `libxml2`, `libxslt`, and `libffi`\n  - GnuPG\n- But wait there's more\n  - Git\n  - Ruby (yes, in addition to Python)\n  - Java (yes, in addition to Ruby)\n  - Node.js (yes, in addition to Java)\n\nAnd we might expand on this in the future.\n\n\n## ℹ️ Using this Base\n\nTo use this base image in your own Docker-based action, simply derive from it in your action's `Dockerfile`:\n\n```Dockerfile\nFROM nasapds/github-actions-base:latest\n\n# Action-specific stuff here\n```\n\n\n## 🔧 Maintaining this Base\n\nTo update this base image, just make changes to the `Dockerfile` and, if needed, the `m2-repository.tar.bz2`.\n\nTo make a release of this image on the [Docker Hub](https://hub.docker.com/), do a push to GitHub:\n\n- A push to the `main` branch will trigger an automatic build of the image with the `:latest` tag and push it to `nasapds/github-actions-base:latest` on the Docker Hub.\n- A push to a `vX.Y.Z` tag will trigger an automatic build of the image with the `:X.Y.Z` tag and push it to `nasapds/github-actions-base:X.Y.Z`, where `X.Y.Z` is a [semantic version](https://www.semver.org/).\n\nBut if you ever need to do that by hand, try this:\n\n```console\ndocker login --username nasapds\ndocker buildx build --tag nasapds/github-actions-base:TAGNAME --platform linux/amd64,linux/arm64 --push .\n```\n\nSubstitute `:TAGNAME` with whatever's appropriate.\n\n\n## ⏰ Future Work\n\n- 🤡 Well, until the PDS makes its own group account on the Docker Hub, this stuff lives in `nasapds`'s account\n- 😮 You'd think [GitHub Packages](https://github.com/features/packages) would be an alternative, but [GitHub Actions doesn't support using images from GitHub Packages](https://github.community/t/use-docker-image-from-github-packages-as-container/118709)!\n- 💀 There isn't even [anonymous pulls of images from GitHub Packages](https://github.community/t/make-it-possible-to-pull-docker-images-anonymously-from-github-package-registry/16677)!\n- 😑 Apparently engineers at GitHub are recommending to [migrate from GitHub Packages to the new GitHub Container Registry](https://docs.github.com/en/packages/getting-started-with-github-container-registry/migrating-to-github-container-registry-for-docker-images). The Container Registry is currently in public β.\n- 💽 It's currently ~~213~~ ~~216~~ ~~579~~ ~~593~~ ~~790~~ ~~815~~ ~~669~~ ~~931~~\n MiB. ~~Let's try and keep it around there 😲 (Thanks, Java. And C++. But mostly Java.)~~ YIKES. It's ~~1.15~~ 1.57 GiB now!\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa-pds%2Fgithub-actions-base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnasa-pds%2Fgithub-actions-base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa-pds%2Fgithub-actions-base/lists"}