Skip to content

Commit

Permalink
feat: build docker images for all supported postgres versions
Browse files Browse the repository at this point in the history
  • Loading branch information
frectonz committed Nov 25, 2024
1 parent 9d738bb commit 1721a2b
Showing 1 changed file with 100 additions and 31 deletions.
131 changes: 100 additions & 31 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -63,49 +63,118 @@
packages = forAllSystems (
pkgs:
let
postgresql = pkgs.postgresql.dev;
cargo-pgrx = import ./nix/pgrx.nix { inherit pkgs; };

pname = "pglite-fusion";
version = "0.0.2";

postgres = pkgs.dockerTools.pullImage {
imageName = "postgres";
imageDigest = "sha256:026d0ab72b34310b68160ab9299aa1add5544e4dc3243456b94f83cb1c119c2c";
sha256 = "sha256-Bwd07vmTNRS1Ntd2sKvYXx/2GGaEVmGGjKukDmuSfD0=";
};
buildPgliteFusionImage =
{
imageDigest,
imageSha256,
postgresDev,
}:
let
postgresMajor = pkgs.lib.versions.major postgresDev.version;

extension = pkgs.stdenv.mkDerivation {
inherit pname version;
postgresImage = pkgs.dockerTools.pullImage {
imageName = "postgres";
imageDigest = imageDigest;
sha256 = imageSha256;
};

src = import ./nix/build.nix { inherit pkgs cargo-pgrx postgresql; };
extension = pkgs.stdenv.mkDerivation {
pname = "${pname}-pg${postgresMajor}-extension";
inherit version;

buildPhase = ''
install --directory $out/usr/share/postgresql/16/extension
cp -r $src/nix/store/wc1a06ip2fajrjkfbw7cvxzw1c949a6g-postgresql-16.4/share/postgresql/extension/* $out/usr/share/postgresql/16/extension
install --directory $out/usr/lib/postgresql/16/lib
cp -r $src/nix/store/wc1a06ip2fajrjkfbw7cvxzw1c949a6g-postgresql-16.4/lib/* $out/usr/lib/postgresql/16/lib
'';
};
in
rec {
image = pkgs.dockerTools.buildLayeredImage {
name = pname;
fromImage = postgres;

contents = [ extension ];
config = {
Env = [ "POSTGRES_HOST_AUTH_METHOD=trust" ];

Expose = 5432;
Cmd = [ "postgres" ];
Entrypoint = [ "docker-entrypoint.sh" ];
src = import ./nix/build.nix {
inherit pkgs cargo-pgrx;
postgresql = postgresDev;
};

buildPhase = ''
install --directory $out/usr/share/postgresql/${postgresMajor}/extension
cp -r $src/nix/store/*/share/postgresql/extension/* $out/usr/share/postgresql/${postgresMajor}/extension
install --directory $out/usr/lib/postgresql/${postgresMajor}/lib
cp -r $src/nix/store/*/lib/* $out/usr/lib/postgresql/${postgresMajor}/lib
'';
};
in
pkgs.dockerTools.buildLayeredImage {
name = "${pname}-pg${postgresMajor}";
fromImage = postgresImage;

contents = [ extension ];
config = {
Env = [ "POSTGRES_HOST_AUTH_METHOD=trust" ];

Expose = 5432;
Cmd = [ "postgres" ];
Entrypoint = [ "docker-entrypoint.sh" ];
};
};

pg12 = buildPgliteFusionImage {
imageDigest = "sha256:ee9f333b422b396016648289933a8f2d3ffa79703510b2e0641e3a4a125b96b6";
imageSha256 = "sha256-f+OkqB6mW8UP0Z6fCCfAB257ztQAtaPQ2T2SVlu8MmY=";
postgresDev = pkgs.postgresql_12.dev;
};
pg13 = buildPgliteFusionImage {
imageDigest = "sha256:80ff9e2086e68aef09839045df1f07016b869d94cbd12c6462a4b300878cfdac";
imageSha256 = "sha256-iaUdJa/l0rgNkZR/FUoJ4bzmW/2CRWyk+eMHibBqIus=";
postgresDev = pkgs.postgresql_13.dev;
};
pg14 = buildPgliteFusionImage {
imageDigest = "sha256:78b9deeca08fa9749a00e9d30bc879f8f8d021af854c73e2c339b752cb6d708a";
imageSha256 = "sha256-LV2V6kuctIjN4gMxfopZSdivFtz7ks+AGmYQ4ets8b0=";
postgresDev = pkgs.postgresql_14.dev;
};
pg15 = buildPgliteFusionImage {
imageDigest = "sha256:a35b3c0190dac5a82ec1778b34cb4963bdd9d161f80381a6297be6e2c3c13a7c";
imageSha256 = "sha256-ZK6eBPA50mY99uSF3+UdT4eBm/3komc6sfWb1qw1N7k=";
postgresDev = pkgs.postgresql_15.dev;
};
pg16 = buildPgliteFusionImage {
imageDigest = "sha256:5d65b8bdb20369ea902b987aa63cfe4983130bc8cd2c25830d126636b80b608d";
imageSha256 = "sha256-5JhtZaCLj6SnJzjhC5A2yrP6fipuaQKHSxm3jhxSfNg=";
postgresDev = pkgs.postgresql_16.dev;
};
pg17 = buildPgliteFusionImage {
imageDigest = "sha256:994cc3113ce004ae73df11f0dbc5088cbe6bb0da1691dd7e6f55474202a4f211";
imageSha256 = "sha256-OzqtbX89/lBP2mzhSccuad5suUz/uw/gBgeIW3BTbdc=";
postgresDev = pkgs.postgresql_17.dev;
};
in
{
inherit
pg12
pg13
pg14
pg15
pg16
pg17
;

deploy = pkgs.writeShellScriptBin "deploy" ''
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker-archive:${image} docker://docker.io/frectonz/${pname}:pg16-${version} --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker://docker.io/frectonz/${pname}:pg16-${version} docker://docker.io/frectonz/${pname}:latest --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker-archive:${pg12} docker://docker.io/frectonz/${pname}:pg12-${version} --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker://docker.io/frectonz/${pname}:pg12-${version} docker://docker.io/frectonz/${pname}:pg12 --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker-archive:${pg13} docker://docker.io/frectonz/${pname}:pg13-${version} --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker://docker.io/frectonz/${pname}:pg13-${version} docker://docker.io/frectonz/${pname}:pg13 --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker-archive:${pg14} docker://docker.io/frectonz/${pname}:pg14-${version} --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker://docker.io/frectonz/${pname}:pg14-${version} docker://docker.io/frectonz/${pname}:pg14 --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker-archive:${pg15} docker://docker.io/frectonz/${pname}:pg15-${version} --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker://docker.io/frectonz/${pname}:pg15-${version} docker://docker.io/frectonz/${pname}:pg15 --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker-archive:${pg16} docker://docker.io/frectonz/${pname}:pg16-${version} --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker://docker.io/frectonz/${pname}:pg16-${version} docker://docker.io/frectonz/${pname}:pg16 --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker-archive:${pg17} docker://docker.io/frectonz/${pname}:pg17-${version} --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker://docker.io/frectonz/${pname}:pg17-${version} docker://docker.io/frectonz/${pname}:pg17 --dest-creds="frectonz:$ACCESS_TOKEN"
${pkgs.skopeo}/bin/skopeo --insecure-policy copy docker://docker.io/frectonz/${pname}:pg17 docker://docker.io/frectonz/${pname}:latest --dest-creds="frectonz:$ACCESS_TOKEN"
'';
}
);
Expand Down

0 comments on commit 1721a2b

Please sign in to comment.