You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
4.0 KiB

  1. # Pinned Package Updater
  2. Pinned Package Updater (PPU) is a tool for managing pinned packages installed with package managers in a Dockerfile
  3. manifest. The goal of this tool is to reduce the administrative burden of keeping packages up to date with upstream
  4. security releases by offering an automatic mechanism for checking for new security releases and patching the existing
  5. Dockerfile manifest with those new versions.
  6. The integration into the CI/CD is left up to the user, but can be as simple as committing the changes and opening an MR.
  7. ## Table Of Contents
  8. 1. [Usage](#usage)
  9. 2. [Features](#features)
  10. 3. [Building](#building)
  11. 4. [Contributing](#contributing)
  12. 5. [License](#license)
  13. ## Usage
  14. ### Standalone Usage
  15. The default behavior for the tool is to operate in a standalone mode. In this mode the tool is responsible for parsing
  16. the Dockerfile, fetching the upstream package manager resources, identifying the upgrades available, and applying those
  17. upgrades. An alternative [distributed mode](#distributed-usage) is available to remove the upstream package resource
  18. caching and version upgrade determination logic.
  19. ```bash
  20. pinned-package-updater check [Dockerfile, ...]
  21. pinned-package-updater update [Dockerfile, ...]
  22. ```
  23. ### Distributed Usage
  24. In distributed mode the tool relies on an external deployment of PPU that is running in ***serve*** mode
  25. `pinned-package-updater serve`. To cache the upstream package manager resources and handle the upgrade check logic. In
  26. this mode much of the work can be cached between requests and the overhead of checking for pinned version updates is
  27. significantly reduced.
  28. The tool running in this mode will revert to standalone mode if the upstream service is unavailable.
  29. ```bash
  30. pinned-package-updater check --remote <address of the upstream service> [Dockerfile, ...]
  31. pinned-package-updater update [Dockerfile, ...]
  32. ```
  33. ## Features
  34. - [ ] Supported base images
  35. - [ ] Alpine Linux
  36. - (3.11, 3.12, 3.13, 3.14) are recognized by default, other versions may need additional configuration
  37. - [ ] Debian
  38. - (jessie, stretch, buster, bullseye) are recognized by default, other versions may need additional configuration
  39. - [ ] Ubuntu
  40. - (16.04, 18.04, 20.04) are recognized by default, other versions may need additional configuration
  41. - [ ] Red Hat Enterprise Linux
  42. - (8, 9) are recognized by default, other versions may need additional configurations
  43. - [ ] Others with explicit configuration of package manager and default upstream repositories
  44. - [ ] Support external repositories added in the image manifest
  45. - [ ] Support additional Alpine Linux repositories
  46. - [ ] Support additional Debian repositories
  47. - [ ] deb repositories
  48. - [ ] ppa repositories
  49. - [ ] Support additional Red Hat Linux repositories
  50. - [ ] Resolve pinned packages in Dockerfiles
  51. - [ ] Support for Alpine based images (apk)
  52. - [ ] Support for Debian based images (apt, apt-get)
  53. - [ ] Support for Red Hat Enterprise Linux based images (yum, dnf)
  54. - [ ] Interrogate upstream package systems for package and version information
  55. - [ ] Support for Alpine based package repositories
  56. - [ ] Support for Debian based package repositories
  57. - [ ] Support for Red Hat Enterprise Linux based package repositories
  58. - [ ] Patch Dockerfiles in place with the recommended version upgrades
  59. ## Building
  60. To build `pinned-package-updater`, run `go build`
  61. ## Contributing
  62. I am not currently accepting outside contributions.
  63. ## License
  64. ```
  65. Copyright © 2021 Drew Short <warrick@sothr.com>
  66. Licensed under the Apache License, Version 2.0 (the "License");
  67. you may not use this file except in compliance with the License.
  68. You may obtain a copy of the License at
  69. http://www.apache.org/licenses/LICENSE-2.0
  70. Unless required by applicable law or agreed to in writing, software
  71. distributed under the License is distributed on an "AS IS" BASIS,
  72. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  73. See the License for the specific language governing permissions and
  74. limitations under the License.
  75. ```
  76. A copy of the license can also be viewed at [LICENSE](LICENSE)