diff --git a/.circleci/config.yml b/.circleci/config.yml index ee052c28..793b99aa 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,7 +5,10 @@ version: 2.1 orbs: # https://circleci.com/developer/orbs/orb/circleci/docker - docker: circleci/docker@2.2.0 + docker: circleci/docker@2.4.0 + # https://circleci.com/developer/orbs/orb/circleci/python + python: circleci/python@2.1.1 + jobs: build-arm64: @@ -24,6 +27,15 @@ jobs: - run: uname -a - run: docker --version - run: docker info + - run: + name: Install manifest-tool (linux-arm64 ) + command: | + wget https://github.com/estesp/manifest-tool/releases/download/v2.0.8/binaries-manifest-tool-2.0.8.tar.gz + mkdir manifest-tool + tar -xvzf binaries-manifest-tool-2.0.8.tar.gz -C manifest-tool + sudo mv manifest-tool/manifest-tool-linux-arm64 /usr/local/bin/manifest-tool + manifest-tool -v + - run: pip3 install lastversion - run: source tools/environment_init.sh - run: make check_version - docker/check: @@ -36,7 +48,10 @@ jobs: command: | # Check if the current branch is 'master' and the weekly image is not extis # If weekly image exists, skip docker build and push - if [ "$CIRCLE_BRANCH" == "master" ] && check_image_exists "${{ matrix.version }}-${{ matrix.variant }}$(IMAGE_VERSION_ID)"; then + source tools/environment_init.sh + echo "check: << parameters.target-version-variant >>${IMAGE_VERSION_ID}" + check_image_exists "<< parameters.target-version-variant >>${IMAGE_VERSION_ID}" || true + if [ "$CIRCLE_BRANCH" == "master" ] && check_image_exists "<< parameters.target-version-variant >>${IMAGE_VERSION_ID}"; then circleci-agent step halt fi @@ -53,15 +68,6 @@ jobs: circleci-agent step halt fi - - run: - name: Install manifest-tool (linux-arm64 ) - command: | - wget https://github.com/estesp/manifest-tool/releases/download/v2.0.8/binaries-manifest-tool-2.0.8.tar.gz - mkdir manifest-tool - tar -xvzf binaries-manifest-tool-2.0.8.tar.gz -C manifest-tool - sudo mv manifest-tool/manifest-tool-linux-arm64 /usr/local/bin/manifest-tool - manifest-tool -v - - run: name: "Push docker image : make push-<< parameters.target-version-variant >>" command: | diff --git a/.github/workflows/localtest.yml b/.github/workflows/localtest.yml index 79a0dfe3..1a46d84f 100644 --- a/.github/workflows/localtest.yml +++ b/.github/workflows/localtest.yml @@ -13,5 +13,13 @@ jobs: steps: - uses: actions/checkout@v4 - run: docker ps -a + - name: Install manifest-tool + run: | + wget https://github.com/estesp/manifest-tool/releases/download/v2.0.8/binaries-manifest-tool-2.0.8.tar.gz + mkdir manifest-tool + tar -xvzf binaries-manifest-tool-2.0.8.tar.gz -C manifest-tool + sudo mv manifest-tool/manifest-tool-linux-amd64 /usr/local/bin/manifest-tool + manifest-tool -v + - run: pip install lastversion - run: ./localtest.sh - run: docker images diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ed1d08e0..de3bdaa5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -64,6 +64,16 @@ jobs: - name: Checkout source uses: actions/checkout@v4 + - name: Install manifest-tool + run: | + wget https://github.com/estesp/manifest-tool/releases/download/v2.0.8/binaries-manifest-tool-2.0.8.tar.gz + mkdir manifest-tool + tar -xvzf binaries-manifest-tool-2.0.8.tar.gz -C manifest-tool + sudo mv manifest-tool/manifest-tool-linux-amd64 /usr/local/bin/manifest-tool + manifest-tool -v + + - run: pip install lastversion + - name: Environment init run: source tools/environment_init.sh @@ -122,15 +132,6 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} - - name: Install manifest-tool - if: ${{ (env.IMAGE_EXISTS == 'false') && (github.ref == 'refs/heads/master') && (github.event_name != 'pull_request') }} - run: | - wget https://github.com/estesp/manifest-tool/releases/download/v2.0.8/binaries-manifest-tool-2.0.8.tar.gz - mkdir manifest-tool - tar -xvzf binaries-manifest-tool-2.0.8.tar.gz -C manifest-tool - sudo mv manifest-tool/manifest-tool-linux-amd64 /usr/local/bin/manifest-tool - manifest-tool -v - - name: Push docker image to dockerhub if: ${{ (env.IMAGE_EXISTS == 'false') && (github.ref == 'refs/heads/master') && (github.event_name != 'pull_request') }} env: @@ -178,9 +179,9 @@ jobs: sudo mv manifest-tool/manifest-tool-linux-amd64 /usr/local/bin/manifest-tool manifest-tool -v - - name: Update docker manifest - if: ${{ (github.ref == 'refs/heads/master') && (github.event_name != 'pull_request') }} - run: ./manifest.sh +# - name: Update docker manifest +# if: ${{ (github.ref == 'refs/heads/master') && (github.event_name != 'pull_request') }} +# run: ./manifest.sh - name: push readme to docker hub api if: ${{ (github.ref == 'refs/heads/master') && (github.event_name != 'pull_request') }} diff --git a/11-3.3/alpine3.18/Dockerfile b/11-3.3/alpine3.18/Dockerfile index 69c39d2e..4f9669ef 100644 --- a/11-3.3/alpine3.18/Dockerfile +++ b/11-3.3/alpine3.18/Dockerfile @@ -54,9 +54,8 @@ RUN set -eux \ \ autoconf \ automake \ + bison \ cunit-dev \ - docbook-xml \ - docbook5-xml \ file \ g++ \ gcc \ @@ -141,7 +140,8 @@ RUN set -eux \ # clean && cd / \ && rm -rf /usr/src/postgis \ - && apk del .fetch-deps .build-deps \ + && apk del .build-deps \ + #&& apk del .fetch-deps \ # At the end of the build, we print the collected information # from the '/_pgis_full_version.txt' file. This is for experimental and internal purposes. && cat /_pgis_full_version.txt diff --git a/12-3.4/alpine3.18/Dockerfile b/12-3.4/alpine3.18/Dockerfile index 2e59d293..c199552b 100644 --- a/12-3.4/alpine3.18/Dockerfile +++ b/12-3.4/alpine3.18/Dockerfile @@ -54,9 +54,8 @@ RUN set -eux \ \ autoconf \ automake \ + bison \ cunit-dev \ - docbook-xml \ - docbook5-xml \ file \ g++ \ gcc \ @@ -141,7 +140,8 @@ RUN set -eux \ # clean && cd / \ && rm -rf /usr/src/postgis \ - && apk del .fetch-deps .build-deps \ + && apk del .build-deps \ + #&& apk del .fetch-deps \ # At the end of the build, we print the collected information # from the '/_pgis_full_version.txt' file. This is for experimental and internal purposes. && cat /_pgis_full_version.txt diff --git a/13-3.4/alpine3.18/Dockerfile b/13-3.4/alpine3.18/Dockerfile index 814beaf9..45345cd1 100644 --- a/13-3.4/alpine3.18/Dockerfile +++ b/13-3.4/alpine3.18/Dockerfile @@ -54,9 +54,8 @@ RUN set -eux \ \ autoconf \ automake \ + bison \ cunit-dev \ - docbook-xml \ - docbook5-xml \ file \ g++ \ gcc \ @@ -141,7 +140,8 @@ RUN set -eux \ # clean && cd / \ && rm -rf /usr/src/postgis \ - && apk del .fetch-deps .build-deps \ + && apk del .build-deps \ + #&& apk del .fetch-deps \ # At the end of the build, we print the collected information # from the '/_pgis_full_version.txt' file. This is for experimental and internal purposes. && cat /_pgis_full_version.txt diff --git a/14-3.4/alpine3.18/Dockerfile b/14-3.4/alpine3.18/Dockerfile index 1809db54..7a9623eb 100644 --- a/14-3.4/alpine3.18/Dockerfile +++ b/14-3.4/alpine3.18/Dockerfile @@ -54,9 +54,8 @@ RUN set -eux \ \ autoconf \ automake \ + bison \ cunit-dev \ - docbook-xml \ - docbook5-xml \ file \ g++ \ gcc \ @@ -141,7 +140,8 @@ RUN set -eux \ # clean && cd / \ && rm -rf /usr/src/postgis \ - && apk del .fetch-deps .build-deps \ + && apk del .build-deps \ + #&& apk del .fetch-deps \ # At the end of the build, we print the collected information # from the '/_pgis_full_version.txt' file. This is for experimental and internal purposes. && cat /_pgis_full_version.txt diff --git a/15-3.4/alpine3.18/Dockerfile b/15-3.4/alpine3.18/Dockerfile index 0eb9d05b..55e41c72 100644 --- a/15-3.4/alpine3.18/Dockerfile +++ b/15-3.4/alpine3.18/Dockerfile @@ -54,9 +54,8 @@ RUN set -eux \ \ autoconf \ automake \ + bison \ cunit-dev \ - docbook-xml \ - docbook5-xml \ file \ g++ \ gcc \ @@ -141,7 +140,8 @@ RUN set -eux \ # clean && cd / \ && rm -rf /usr/src/postgis \ - && apk del .fetch-deps .build-deps \ + && apk del .build-deps \ + #&& apk del .fetch-deps \ # At the end of the build, we print the collected information # from the '/_pgis_full_version.txt' file. This is for experimental and internal purposes. && cat /_pgis_full_version.txt diff --git a/15-master/bookworm/Dockerfile b/15-master/bookworm/Dockerfile index 12842668..b5ab693e 100644 --- a/15-master/bookworm/Dockerfile +++ b/15-master/bookworm/Dockerfile @@ -17,7 +17,7 @@ ARG PGIS_V1_CGAL_REPOSITORY=https://github.com/CGAL/cgal.git ARG PGIS_V1_POSTGIS_CHECKOUT=5c3c66a9282b3472bb161f61d1e762789cf4928b ARG PGIS_V1_GEOS_CHECKOUT=28d70a2e4582edcd3625659f70e31d1853423875 -ARG PGIS_V1_GDAL_CHECKOUT=2cf3921a088d42d6840a8b18e5ce7b994d4e9cf4 +ARG PGIS_V1_GDAL_CHECKOUT=78d5980666602266a7e532ae5f76ffe1bf70b4ec ARG PGIS_V1_PROJ_CHECKOUT=2040e685f5ab9c2958b7b611f5aaafee21fed82f ARG PGIS_V1_SFCGAL_CHECKOUT=35f72d2f52b4253013201b170467757b0fc355e5 ARG PGIS_V1_CGAL_CHECKOUT=3c8e2053721271119499506ea1d8a49dee89e30c @@ -391,6 +391,10 @@ ARG PGIS_V1_POSTGIS_REPOSITORY ENV PGIS_V1_POSTGIS_CHECKOUT=${PGIS_V1_POSTGIS_CHECKOUT} \ PGIS_V1_POSTGIS_REPOSITORY=${PGIS_V1_POSTGIS_REPOSITORY} +# temporary workaround for : nitdb: invalid locale settings; check LANG and LC_* environment variables +# https://github.com/docker-library/postgres/issues/1112#issuecomment-1746076388 +RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen + RUN set -ex \ && apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/15-recentstack/bookworm/Dockerfile b/15-recentstack/bookworm/Dockerfile index ca7c4148..20425041 100644 --- a/15-recentstack/bookworm/Dockerfile +++ b/15-recentstack/bookworm/Dockerfile @@ -391,6 +391,10 @@ ARG PGIS_V1_POSTGIS_REPOSITORY ENV PGIS_V1_POSTGIS_CHECKOUT=${PGIS_V1_POSTGIS_CHECKOUT} \ PGIS_V1_POSTGIS_REPOSITORY=${PGIS_V1_POSTGIS_REPOSITORY} +# temporary workaround for : nitdb: invalid locale settings; check LANG and LC_* environment variables +# https://github.com/docker-library/postgres/issues/1112#issuecomment-1746076388 +RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen + RUN set -ex \ && apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/16-3.4/alpine3.18/Dockerfile b/16-3.4/alpine3.18/Dockerfile index fbaef91e..e688555e 100644 --- a/16-3.4/alpine3.18/Dockerfile +++ b/16-3.4/alpine3.18/Dockerfile @@ -54,9 +54,8 @@ RUN set -eux \ \ autoconf \ automake \ + bison \ cunit-dev \ - docbook-xml \ - docbook5-xml \ file \ g++ \ gcc \ @@ -141,7 +140,8 @@ RUN set -eux \ # clean && cd / \ && rm -rf /usr/src/postgis \ - && apk del .fetch-deps .build-deps \ + && apk del .build-deps \ + #&& apk del .fetch-deps \ # At the end of the build, we print the collected information # from the '/_pgis_full_version.txt' file. This is for experimental and internal purposes. && cat /_pgis_full_version.txt diff --git a/16-master/bookworm/Dockerfile b/16-master/bookworm/Dockerfile index f02080ec..1aa8bb97 100644 --- a/16-master/bookworm/Dockerfile +++ b/16-master/bookworm/Dockerfile @@ -17,7 +17,7 @@ ARG PGIS_V1_CGAL_REPOSITORY=https://github.com/CGAL/cgal.git ARG PGIS_V1_POSTGIS_CHECKOUT=5c3c66a9282b3472bb161f61d1e762789cf4928b ARG PGIS_V1_GEOS_CHECKOUT=28d70a2e4582edcd3625659f70e31d1853423875 -ARG PGIS_V1_GDAL_CHECKOUT=2cf3921a088d42d6840a8b18e5ce7b994d4e9cf4 +ARG PGIS_V1_GDAL_CHECKOUT=78d5980666602266a7e532ae5f76ffe1bf70b4ec ARG PGIS_V1_PROJ_CHECKOUT=2040e685f5ab9c2958b7b611f5aaafee21fed82f ARG PGIS_V1_SFCGAL_CHECKOUT=35f72d2f52b4253013201b170467757b0fc355e5 ARG PGIS_V1_CGAL_CHECKOUT=3c8e2053721271119499506ea1d8a49dee89e30c @@ -391,6 +391,10 @@ ARG PGIS_V1_POSTGIS_REPOSITORY ENV PGIS_V1_POSTGIS_CHECKOUT=${PGIS_V1_POSTGIS_CHECKOUT} \ PGIS_V1_POSTGIS_REPOSITORY=${PGIS_V1_POSTGIS_REPOSITORY} +# temporary workaround for : nitdb: invalid locale settings; check LANG and LC_* environment variables +# https://github.com/docker-library/postgres/issues/1112#issuecomment-1746076388 +RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen + RUN set -ex \ && apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/16-recentstack/bookworm/Dockerfile b/16-recentstack/bookworm/Dockerfile index 802e8548..0beb6ada 100644 --- a/16-recentstack/bookworm/Dockerfile +++ b/16-recentstack/bookworm/Dockerfile @@ -391,6 +391,10 @@ ARG PGIS_V1_POSTGIS_REPOSITORY ENV PGIS_V1_POSTGIS_CHECKOUT=${PGIS_V1_POSTGIS_CHECKOUT} \ PGIS_V1_POSTGIS_REPOSITORY=${PGIS_V1_POSTGIS_REPOSITORY} +# temporary workaround for : nitdb: invalid locale settings; check LANG and LC_* environment variables +# https://github.com/docker-library/postgres/issues/1112#issuecomment-1746076388 +RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen + RUN set -ex \ && apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/Dockerfile.alpine.template b/Dockerfile.alpine.template index 7a6e8a0c..61e55f15 100644 --- a/Dockerfile.alpine.template +++ b/Dockerfile.alpine.template @@ -49,9 +49,8 @@ RUN set -eux \ \ autoconf \ automake \ + bison \ cunit-dev \ - docbook-xml \ - docbook5-xml \ file \ g++ \ gcc \ @@ -136,7 +135,8 @@ RUN set -eux \ # clean && cd / \ && rm -rf /usr/src/postgis \ - && apk del .fetch-deps .build-deps \ + && apk del .build-deps \ + #&& apk del .fetch-deps \ # At the end of the build, we print the collected information # from the '/_pgis_full_version.txt' file. This is for experimental and internal purposes. && cat /_pgis_full_version.txt diff --git a/Dockerfile.master.template b/Dockerfile.master.template index d19f95a9..4fb7b2e3 100644 --- a/Dockerfile.master.template +++ b/Dockerfile.master.template @@ -398,6 +398,10 @@ ARG PGIS_V1_POSTGIS_REPOSITORY ENV PGIS_V1_POSTGIS_CHECKOUT=${PGIS_V1_POSTGIS_CHECKOUT} \ PGIS_V1_POSTGIS_REPOSITORY=${PGIS_V1_POSTGIS_REPOSITORY} +# temporary workaround for : nitdb: invalid locale settings; check LANG and LC_* environment variables +# https://github.com/docker-library/postgres/issues/1112#issuecomment-1746076388 +RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen + RUN set -ex \ && apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/README.md b/README.md index 4b078daa..4272da54 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ This image ensures that the default database created by the parent `postgres` im Unless `-e POSTGRES_DB` is passed to the container at startup time, this database will be named after the admin user (either `postgres` or the user specified with `-e POSTGRES_USER`). If you would prefer to use the older template database mechanism for enabling PostGIS, the image also provides a PostGIS-enabled template database called `template_postgis`. -## Versions (2023-10-07) +## Versions (2023-10-08) We provide multi-platform image support for the following architectures: diff --git a/versions.json b/versions.json index a3353f1d..45966a8c 100644 --- a/versions.json +++ b/versions.json @@ -264,8 +264,8 @@ "SFCGAL_CHECKOUT_SHA1": "35f72d2f52b4253013201b170467757b0fc355e5", "PROJ_CHECKOUT": "2040e685f5ab9c2958b7b611f5aaafee21fed82f", "PROJ_CHECKOUT_SHA1": "2040e685f5ab9c2958b7b611f5aaafee21fed82f", - "GDAL_CHECKOUT": "2cf3921a088d42d6840a8b18e5ce7b994d4e9cf4", - "GDAL_CHECKOUT_SHA1": "2cf3921a088d42d6840a8b18e5ce7b994d4e9cf4", + "GDAL_CHECKOUT": "78d5980666602266a7e532ae5f76ffe1bf70b4ec", + "GDAL_CHECKOUT_SHA1": "78d5980666602266a7e532ae5f76ffe1bf70b4ec", "GEOS_CHECKOUT": "28d70a2e4582edcd3625659f70e31d1853423875", "GEOS_CHECKOUT_SHA1": "28d70a2e4582edcd3625659f70e31d1853423875", "BOOST_VERSION": "1.74.0" @@ -370,8 +370,8 @@ "SFCGAL_CHECKOUT_SHA1": "35f72d2f52b4253013201b170467757b0fc355e5", "PROJ_CHECKOUT": "2040e685f5ab9c2958b7b611f5aaafee21fed82f", "PROJ_CHECKOUT_SHA1": "2040e685f5ab9c2958b7b611f5aaafee21fed82f", - "GDAL_CHECKOUT": "2cf3921a088d42d6840a8b18e5ce7b994d4e9cf4", - "GDAL_CHECKOUT_SHA1": "2cf3921a088d42d6840a8b18e5ce7b994d4e9cf4", + "GDAL_CHECKOUT": "78d5980666602266a7e532ae5f76ffe1bf70b4ec", + "GDAL_CHECKOUT_SHA1": "78d5980666602266a7e532ae5f76ffe1bf70b4ec", "GEOS_CHECKOUT": "28d70a2e4582edcd3625659f70e31d1853423875", "GEOS_CHECKOUT_SHA1": "28d70a2e4582edcd3625659f70e31d1853423875", "BOOST_VERSION": "1.74.0" diff --git a/versions.sh b/versions.sh index 1f88cf6f..f4b58303 100755 --- a/versions.sh +++ b/versions.sh @@ -1,4 +1,5 @@ #!/bin/bash +# shellcheck disable=SC2154 set -Eeuo pipefail # Source environment variables and necessary configurations @@ -155,14 +156,14 @@ get_latest_version_and_hash() { local repo_url=$1 # Argument 2: Repository identifier local repo_id=$2 - echo "[+] Checking lastversion : $repo_id - $repo_url" + echo "[+] Checking lastversion : $repo_id - $repo_url" # Fetch the latest version tag using the lastversion command eval "lastversion_${repo_id}=$(lastversion --format tag --pre "${repo_url}")" - + # Intermediary step to resolve the variable name local var_name="lastversion_${repo_id}" local last_version=${!var_name} - + # Fetch the SHA1 hash of the tag using the get_tag_hash function eval "lastversion_${repo_id}_sha1=$(get_tag_hash "${repo_url}" "${last_version}")" @@ -176,16 +177,16 @@ get_latest_version_and_hash() { } get_latest_version_and_hash "https://github.com/MobilityDB/MobilityDB" "mobilitydb" -get_latest_version_and_hash "https://github.com/pramsey/pgsql-http" "pgsql_http" -get_latest_version_and_hash "https://github.com/pramsey/pgsql-gzip" "pgsql_gzip" +get_latest_version_and_hash "https://github.com/pramsey/pgsql-http" "pgsql_http" +get_latest_version_and_hash "https://github.com/pramsey/pgsql-gzip" "pgsql_gzip" get_latest_version_and_hash "https://github.com/timescale/timescaledb" "timescaledb" -get_latest_version_and_hash "https://github.com/postgis/postgis" "postgis" -get_latest_version_and_hash "https://github.com/CGAL/cgal" "cgal" -get_latest_version_and_hash "https://github.com/libgeos/geos" "geos" -get_latest_version_and_hash "https://github.com/OSGeo/gdal" "gdal" -get_latest_version_and_hash "https://github.com/OSGeo/PROJ" "proj" -get_latest_version_and_hash "https://gitlab.com/Oslandia/SFCGAL" "sfcgal" +get_latest_version_and_hash "https://github.com/postgis/postgis" "postgis" +get_latest_version_and_hash "https://github.com/CGAL/cgal" "cgal" +get_latest_version_and_hash "https://github.com/libgeos/geos" "geos" +get_latest_version_and_hash "https://github.com/OSGeo/gdal" "gdal" +get_latest_version_and_hash "https://github.com/OSGeo/PROJ" "proj" +get_latest_version_and_hash "https://gitlab.com/Oslandia/SFCGAL" "sfcgal" #-------------------------------------------