feat: manage Dokku system dependencies in a single file

This will allow us to more quickly update a dependency by adding support so that downstream repos can auto-push updates to the main repo when there is a release.
This commit is contained in:
Jose Diaz-Gonzalez
2023-10-08 22:17:04 -04:00
parent aaf4c1d7d1
commit 934a6b5cd5
9 changed files with 170 additions and 36 deletions

View File

@@ -2,7 +2,7 @@ FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -qq && apt-get -qq -y --no-install-recommends install ca-certificates curl gcc git build-essential wget ruby-dev lintian rpm help2man man-db sudo
RUN apt-get update -qq && apt-get -qq -y --no-install-recommends install ca-certificates curl gcc git jq build-essential wget ruby-dev lintian python3 rpm help2man man-db sudo
RUN curl -sL -o /usr/local/share/ca-certificates/GlobalSignRootCA_R3.crt https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
RUN update-ca-certificates
RUN command -v fpm || gem install fpm

View File

@@ -1,19 +1,20 @@
FROM dokku/build-base:0.0.1 AS builder
FROM dokku/build-base:0.1.2 AS builder
ENV DEBIAN_FRONTEND=noninteractive
ARG GOLANG_VERSION
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux.tar.gz "https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-$(dpkg --print-architecture).tar.gz" \
&& tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux.tar.gz \
&& cp /usr/local/go/bin/* /usr/local/bin
ARG WORKDIR=/go/src/github.com/dokku/dokku
WORKDIR ${WORKDIR}
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux.tar.gz "https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-$(dpkg --print-architecture).tar.gz" \
&& tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux.tar.gz \
&& cp /usr/local/go/bin/* /usr/local/bin \
&& mkdir -p ${WORKDIR}/contrib
COPY Makefile ${WORKDIR}/
COPY *.mk ${WORKDIR}/
COPY contrib/dependencies.json ${WORKDIR}/contrib/dependencies.json
RUN make deb-setup sshcommand plugn

107
contrib/dependencies.json Normal file
View File

@@ -0,0 +1,107 @@
{
"dependencies": [
{
"name": "docker-image-labeler",
"version": "0.6.1",
"urls": {
"amd64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.6.1/docker-image-labeler_0.6.1_linux_amd64.tgz",
"arm64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.6.1/docker-image-labeler_0.6.1_linux_arm64.tgz",
"arm": "https://github.com/dokku/docker-image-labeler/releases/download/v0.6.1/docker-image-labeler_0.6.1_linux_armhf.tgz"
}
},
{
"name": "docker-container-healthchecker",
"version": "0.6.4",
"urls": {
"amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.6.4/docker-container-healthchecker_0.6.4_linux_amd64.tgz",
"arm4": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.6.4/docker-container-healthchecker_0.6.4_linux_arm64.tgz",
"arm": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.6.4/docker-container-healthchecker_0.6.4_linux_armhf.tgz"
}
},
{
"name": "lambda-builder",
"version": "0.5.0",
"urls": {
"amd64": "https://github.com/dokku/lambda-builder/releases/download/v0.5.0/lambda-builder_0.5.0_linux_amd64.tgz",
"arm64": "https://github.com/dokku/lambda-builder/releases/download/v0.5.0/lambda-builder_0.5.0_linux_arm64.tgz",
"arm": "https://github.com/dokku/lambda-builder/releases/download/v0.5.0/lambda-builder_0.5.0_linux_armhf.tgz"
}
},
{
"name": "netrc",
"version": "0.7.1",
"urls": {
"amd64": "https://github.com/dokku/netrc/releases/download/v0.7.1/netrc_0.7.1_linux_amd64.tgz",
"arm64": "https://github.com/dokku/netrc/releases/download/v0.7.1/netrc_0.7.1_linux_arm64.tgz",
"arm": "https://github.com/dokku/netrc/releases/download/v0.7.1/netrc_0.7.1_linux_armhf.tgz"
}
},
{
"name": "procfile-util",
"version": "0.16.0",
"urls": {
"amd64": "https://github.com/dokku/procfile-util/releases/download/v0.16.0/procfile-util_0.16.0_linux_amd64.tgz",
"arm64": "https://github.com/dokku/procfile-util/releases/download/v0.16.0/procfile-util_0.16.0_linux_arm64.tgz",
"arm": "https://github.com/dokku/procfile-util/releases/download/v0.16.0/procfile-util_0.16.0_linux_armhf.tgz"
}
},
{
"name": "sshcommand",
"version": "0.17.1",
"urls": {
"amd64": "https://github.com/dokku/sshcommand/releases/download/v0.17.1/sshcommand_0.17.1_linux_x86_64.tgz",
"arm64": "https://github.com/dokku/sshcommand/releases/download/v0.17.1/sshcommand_0.17.1_linux_x86_64.tgz",
"arm": "https://github.com/dokku/sshcommand/releases/download/v0.17.1/sshcommand_0.17.1_linux_x86_64.tgz"
}
}
],
"predependencies": [
{
"name": "gliderlabs-sigil",
"version": "0.10.1",
"urls": {
"amd64": "https://github.com/gliderlabs/sigil/releases/download/v0.10.1/gliderlabs-sigil_0.10.1_linux_amd64.tgz",
"arm64": "https://github.com/gliderlabs/sigil/releases/download/v0.10.1/gliderlabs-sigil_0.10.1_linux_arm64.tgz",
"arm": "https://github.com/gliderlabs/sigil/releases/download/v0.10.1/gliderlabs-sigil_0.10.1_linux_armhf.tgz"
}
},
{
"name": "plugn",
"version": "0.12.0",
"urls": {
"amd64": "https://github.com/dokku/plugn/releases/download/v0.12.0/plugn_0.12.0_linux_amd64.tgz",
"arm64": "https://github.com/dokku/plugn/releases/download/v0.12.0/plugn_0.12.0_linux_arm64.tgz",
"arm": "https://github.com/dokku/plugn/releases/download/v0.12.0/plugn_0.12.0_linux_armhf.tgz"
}
}
],
"recommendations": [
{
"name": "dokku-event-listener",
"version": "0.15.0",
"urls": {
"amd64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.15.0/dokku-event-listener_0.15.0_linux_amd64.tgz",
"arm64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.15.0/dokku-event-listener_0.15.0_linux_arm64.tgz",
"arm": "https://github.com/dokku/dokku-event-listener/releases/download/v0.15.0/dokku-event-listener_0.15.0_linux_armhf.tgz"
}
},
{
"name": "dokku-update",
"version": "0.7.2",
"urls": {
"amd64": "https://github.com/dokku/dokku-update/releases/download/v0.7.2/dokku-update_0.7.2_linux_x86_64.tgz",
"arm64": "https://github.com/dokku/dokku-update/releases/download/v0.7.2/dokku-update_0.7.2_linux_x86_64.tgz",
"arm": "https://github.com/dokku/dokku-update/releases/download/v0.7.2/dokku-update_0.7.2_linux_x86_64.tgz"
}
},
{
"name": "herokuish",
"version": "0.7.1",
"urls": {
"amd64": "https://github.com/gliderlabs/herokuish/releases/download/v0.7.1/herokuish_0.7.1_linux_x86_64.tgz",
"arm64": "https://github.com/gliderlabs/herokuish/releases/download/v0.7.1/herokuish_0.7.1_linux_x86_64.tgz",
"arm": "https://github.com/gliderlabs/herokuish/releases/download/v0.7.1/herokuish_0.7.1_linux_x86_64.tgz"
}
}
]
}

32
contrib/update-deb-dependencies Executable file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/env python3
import json
def main():
"""
updates the control file with the tested debian dependencies
"""
deps = {}
with open("contrib/dependencies.json", encoding="utf-8") as handle:
deps = json.load(handle)
control_lines = []
with open("debian/control", encoding="utf-8") as handle:
control_lines = [line for line in handle.readlines()]
for key in ["dependencies", "predependencies", "recommendations"]:
for dependency in deps[key]:
name = dependency["name"]
version = dependency["version"]
for i, line in enumerate(control_lines):
if name in line:
control_lines[i] = control_lines[i].replace(
name, f"{name} (>= {version})"
)
with open("debian/control", mode="w", encoding="utf-8") as handle:
handle.writelines(control_lines)
if __name__ == "__main__":
main()