diff --git a/Makefile b/Makefile index dfeb4267c..876a9245a 100644 --- a/Makefile +++ b/Makefile @@ -74,8 +74,6 @@ PORTAL_PATH=$(BUILDPATH)/src/portal CHECKENVCMD=checkenv.sh # parameters -# default is true -BUILD_PG96=true REGISTRYSERVER= REGISTRYPROJECTNAME=goharbor DEVFLAG=true @@ -438,7 +436,7 @@ build: -e TRIVY_DOWNLOAD_URL=$(TRIVY_DOWNLOAD_URL) -e TRIVY_ADAPTER_DOWNLOAD_URL=$(TRIVY_ADAPTER_DOWNLOAD_URL) \ -e PULL_BASE_FROM_DOCKERHUB=$(PULL_BASE_FROM_DOCKERHUB) -e BUILD_BASE=$(BUILD_BASE) \ -e REGISTRYUSER=$(REGISTRYUSER) -e REGISTRYPASSWORD=$(REGISTRYPASSWORD) \ - -e PUSHBASEIMAGE=$(PUSHBASEIMAGE) -e BUILD_PG96=$(BUILD_PG96) + -e PUSHBASEIMAGE=$(PUSHBASEIMAGE) build_standalone_db_migrator: compile_standalone_db_migrator make -f $(MAKEFILEPATH_PHOTON)/Makefile _build_standalone_db_migrator -e BASEIMAGETAG=$(BASEIMAGETAG) -e VERSIONTAG=$(VERSIONTAG) @@ -452,25 +450,12 @@ build_base_docker: @for name in $(BUILDBASETARGET); do \ echo $$name ; \ sleep 30 ; \ - if [ $$name == "db" ]; then \ - make _build_base_db ; \ - else \ - $(DOCKERBUILD) --build-arg BUILD_PG96=$(BUILD_PG96) --pull --no-cache -f $(MAKEFILEPATH_PHOTON)/$$name/Dockerfile.base -t $(BASEIMAGENAMESPACE)/harbor-$$name-base:$(BASEIMAGETAG) --label base-build-date=$(date +"%Y%m%d") . ; \ - fi ; \ + $(DOCKERBUILD) --pull --no-cache -f $(MAKEFILEPATH_PHOTON)/$$name/Dockerfile.base -t $(BASEIMAGENAMESPACE)/harbor-$$name-base:$(BASEIMAGETAG) --label base-build-date=$(date +"%Y%m%d") . ; \ if [ "$(PUSHBASEIMAGE)" != "false" ] ; then \ $(PUSHSCRIPTPATH)/$(PUSHSCRIPTNAME) $(BASEIMAGENAMESPACE)/harbor-$$name-base:$(BASEIMAGETAG) $(REGISTRYUSER) $(REGISTRYPASSWORD) || exit 1; \ fi ; \ done -_build_base_db: - @if [ "$(BUILD_PG96)" = "true" ] ; then \ - echo "build pg96 rpm package." ; \ - cd $(MAKEFILEPATH_PHOTON)/db && $(MAKEFILEPATH_PHOTON)/db/rpm_builder.sh && cd - ; \ - $(DOCKERBUILD) --pull --no-cache -f $(MAKEFILEPATH_PHOTON)/db/Dockerfile.pg96 -t $(BASEIMAGENAMESPACE)/harbor-db-base:$(BASEIMAGETAG) --label base-build-date=$(date +"%Y%m%d") . ; \ - else \ - $(DOCKERBUILD) --pull --no-cache -f $(MAKEFILEPATH_PHOTON)/db/Dockerfile.base -t $(BASEIMAGENAMESPACE)/harbor-db-base:$(BASEIMAGETAG) --label base-build-date=$(date +"%Y%m%d") . ; \ - fi - pull_base_docker: @for name in $(BUILDBASETARGET); do \ echo $$name ; \ diff --git a/VERSION b/VERSION index 873ca0fa6..5c9dc9d02 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v2.7.0 +v2.7.0 \ No newline at end of file diff --git a/make/photon/Makefile b/make/photon/Makefile index 0af67b356..3a3ddab91 100644 --- a/make/photon/Makefile +++ b/make/photon/Makefile @@ -277,13 +277,7 @@ define _build_base else \ echo "No docker credentials provided, please be aware of priviledges to access docker hub!" ; \ fi ;\ - if [ "$(1)" = "db" ] && [ "$(BUILD_PG96)" = "true" ]; then \ - echo "build pg96 rpm package." ; \ - cd $(DOCKERFILEPATH)/db && $(DOCKERFILEPATH)/db/rpm_builder.sh && cd - ; \ - $(DOCKERBUILD) --pull --no-cache -f $(DOCKERFILEPATH)/db/Dockerfile.pg96 -t $(BASEIMAGENAMESPACE)/harbor-db-base:$(BASEIMAGETAG) --label base-build-date=$(TIMESTAMP) . ; \ - else \ - $(DOCKERBUILD) -f $(2)/Dockerfile.base -t $(BASEIMAGENAMESPACE)/harbor-$(1)-base:$(BASEIMAGETAG) --label base-build-date=$(TIMESTAMP) . ;\ - fi ;\ + $(DOCKERBUILD) -f $(2)/Dockerfile.base -t $(BASEIMAGENAMESPACE)/harbor-$(1)-base:$(BASEIMAGETAG) --label base-build-date=$(TIMESTAMP) . ;\ if [ "$(PUSHBASEIMAGE)" = "true" ] ; then \ $(PUSHSCRIPTPATH)/$(PUSHSCRIPTNAME) $(BASEIMAGENAMESPACE)/harbor-$(1)-base:$(BASEIMAGETAG) $(REGISTRYUSER) $(REGISTRYPASSWORD) docker.io $(PULL_BASE_FROM_DOCKERHUB) || exit 1; \ fi ; \ diff --git a/make/photon/db/Dockerfile b/make/photon/db/Dockerfile index 54d5e1c91..a7b2298e4 100644 --- a/make/photon/db/Dockerfile +++ b/make/photon/db/Dockerfile @@ -14,7 +14,7 @@ COPY ./make/photon/db/initial-registry.sql /docker-entrypoint-initdb.d/ RUN chown -R postgres:postgres /docker-entrypoint.sh /docker-healthcheck.sh /docker-entrypoint-initdb.d \ && chmod u+x /docker-entrypoint.sh /docker-healthcheck.sh -ENTRYPOINT ["/docker-entrypoint.sh", "96", "13"] +ENTRYPOINT ["/docker-entrypoint.sh", "", "13"] HEALTHCHECK CMD ["/docker-healthcheck.sh"] -USER postgres +USER postgres \ No newline at end of file diff --git a/make/photon/db/Dockerfile.pg96 b/make/photon/db/Dockerfile.pg96 deleted file mode 100644 index 00d65be39..000000000 --- a/make/photon/db/Dockerfile.pg96 +++ /dev/null @@ -1,23 +0,0 @@ -FROM photon:4.0 - -ENV PGDATA /var/lib/postgresql/data - -COPY ./make/photon/db/postgresql96-libs-9.6.21-1.ph4.x86_64.rpm /pg96/ -COPY ./make/photon/db/postgresql96-9.6.21-1.ph4.x86_64.rpm /pg96/ - -RUN tdnf install -y /pg96/postgresql96-libs-9.6.21-1.ph4.x86_64.rpm /pg96/postgresql96-9.6.21-1.ph4.x86_64.rpm >> /dev/null \ - && rm -rf /pg96 \ - && tdnf install -y shadow gzip postgresql13 findutils bc >> /dev/null \ - && groupadd -r postgres --gid=999 \ - && useradd -m -r -g postgres --uid=999 postgres \ - && mkdir -p /docker-entrypoint-initdb.d \ - && mkdir -p /run/postgresql \ - && chown -R postgres:postgres /run/postgresql \ - && chmod 2777 /run/postgresql \ - && mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" && chmod 777 "$PGDATA" \ - && sed -i "s|#listen_addresses = 'localhost'.*|listen_addresses = '*'|g" /usr/pgsql/13/share/postgresql.conf.sample \ - && sed -i "s|#unix_socket_directories = '/tmp'.*|unix_socket_directories = '/run/postgresql'|g" /usr/pgsql/13/share/postgresql.conf.sample \ - && ln -s /usr/pgsql/13/bin/* /usr/bin/ \ - && tdnf clean all - -RUN tdnf erase -y toybox && tdnf install -y util-linux net-tools \ No newline at end of file diff --git a/make/photon/db/docker-entrypoint.sh b/make/photon/db/docker-entrypoint.sh index ab3a1a958..57b047787 100644 --- a/make/photon/db/docker-entrypoint.sh +++ b/make/photon/db/docker-entrypoint.sh @@ -7,26 +7,34 @@ CUR=$PWD PG_VERSION_OLD=$1 PG_VERSION_NEW=$2 -PGBINOLD="/usr/local/pg${PG_VERSION_OLD}/bin" +PGBINOLD="/usr/pgsql/${PG_VERSION_OLD}/bin" PGDATAOLD=${PGDATA}/pg${PG_VERSION_OLD} PGDATANEW=${PGDATA}/pg${PG_VERSION_NEW} -# to handle the PG 9.6 only + +# We should block the upgrade path from 9.6 directly. if [ -s $PGDATA/PG_VERSION ]; then - PGDATAOLD=$PGDATA + echo "Upgrading from PostgreSQL 9.6 to PostgreSQL $PG_VERSION_NEW is not supported in the current Harbor release." + echo "You should upgrade to previous Harbor firstly, then upgrade to current release." + exit 1 fi -# -# Init DB: $PGDATA is empty. -# Upgrade DB: 1, has $PGDATA\PG_VERSION. 2, has pg old version directory with PG_VERSION inside. -# -if [ "$(ls -A $PGDATA)" ]; then - if [ ! -d $PGDATANEW ]; then - if [ ! -d $PGDATAOLD ] || [ ! -s $PGDATAOLD/PG_VERSION ]; then - echo "incorrect data: $PGDATAOLD, make sure $PGDATAOLD is not empty and with PG_VERSION inside." - exit 1 - fi - +# Upgrade DB: 1. PG_NEW\PG_VERSION file doesn’t exist and pg_old_parameter is not nil and PG_OLD\PG_VERSION file exist. +# For example: ["13", "14"] +# In harbor v2.8, Harbor 2.7 was installed before, db version was 13, +# It needs to upgrade the database from pg 13 to pg 14, +# ["13", "14"] means support for upgrading from pg 13 to pg 14. +# Init DB: 1. PG_NEW\PG_VERSION file doesn’t exist and pg_old_parameter is not nil and PG_OLD\PG_VERSION file doesn’t exist. +# For example: ["13", "14"] +# In harbor v2.8, the first time installation, it needs to init the db for pg 14, +# ["13", "14"] means support for upgrading from pg 13 to pg 14. +# 2. PG_NEW\PG_VERSION file doesn’t exist and pg_old_parameter is nil. +# For example: ["", "14"] +# In harbor v2.8, the first time installation, it needs to init the db for pg 14, +# ["", "14"] means db upgrade is not supported. +if [ ! -s $PGDATANEW/PG_VERSION ]; then + if [ ! -z $PG_VERSION_OLD ] && [ -s $PGDATAOLD/PG_VERSION ]; then + echo "upgrade DB from $PG_VERSION_OLD to $PG_VERSION_NEW" initPG $PGDATANEW false set +e # In some cases, like helm upgrade, the postgresql may not quit cleanly. @@ -39,22 +47,17 @@ if [ "$(ls -A $PGDATA)" ]; then ./$CUR/upgrade.sh --old-bindir $PGBINOLD --old-datadir $PGDATAOLD --new-datadir $PGDATANEW # it needs to clean the $PGDATANEW on upgrade failure if [ $? -ne 0 ]; then - echo "remove the $PGDATANEW after fail to upgrade" + echo "remove the $PGDATANEW after fail to upgrade." rm -rf $PGDATANEW exit 1 fi set -e echo "remove the $PGDATAOLD after upgrade success." - if [ "$PGDATAOLD" = "$PGDATA" ]; then - find $PGDATA/* -prune ! -name pg${PG_VERSION_NEW} -exec rm -rf {} \; - else - rm -rf $PGDATAOLD - fi + rm -rf $PGDATAOLD else - echo "no need to upgrade postgres, launch it." + echo "init DB, DB version:$PG_VERSION_NEW" + initPG $PGDATANEW true fi -else - initPG $PGDATANEW true fi POSTGRES_PARAMETER='' diff --git a/make/photon/db/postgres.spec b/make/photon/db/postgres.spec deleted file mode 100644 index 12a8a268a..000000000 --- a/make/photon/db/postgres.spec +++ /dev/null @@ -1,168 +0,0 @@ -Summary: PostgreSQL database engine -Name: postgresql96 -Version: 9.6.21 -Release: 1%{?dist} -License: PostgreSQL -URL: www.postgresql.org -Group: Applications/Databases -Vendor: VMware, Inc. -Distribution: Photon - -Source0: http://ftp.postgresql.org/pub/source/v%{version}/%{name}-%{version}.tar.bz2 -%define sha1 postgresql=e24333824d361968958613f546ae06011d9d1dfc - -# Customized location of pg96 -%global pgbaseinstdir /usr/local/pg96 - -# Common libraries needed -BuildRequires: krb5-devel -BuildRequires: libxml2-devel -BuildRequires: openldap -BuildRequires: perl -BuildRequires: readline-devel -BuildRequires: openssl-devel -BuildRequires: zlib-devel -BuildRequires: tzdata -BuildRequires: bzip2 -BuildRequires: sudo -Requires: krb5 -Requires: libxml2 -Requires: openldap -Requires: openssl -Requires: readline -Requires: zlib -Requires: tzdata -Requires: bzip2 -Requires: sudo - -Requires: %{name}-libs = %{version}-%{release} - -%description -PostgreSQL is an object-relational database management system. - -%package libs -Summary: Libraries for use with PostgreSQL -Group: Applications/Databases - -%description libs -The postgresql-libs package provides the essential shared libraries for any -PostgreSQL client program or interface. You will need to install this package -to use any other PostgreSQL package or any clients that need to connect to a -PostgreSQL server. - -%package devel -Summary: Development files for postgresql. -Group: Development/Libraries -Requires: postgresql = %{version}-%{release} - -%description devel -The postgresql-devel package contains libraries and header files for -developing applications that use postgresql. - -%prep -%setup -q - -%build -ls -la -sed -i '/DEFAULT_PGSOCKET_DIR/s@/tmp@/run/postgresql@' src/include/pg_config_manual.h && -./configure \ - --prefix=%{pgbaseinstdir} \ - --with-includes=%{pgbaseinstdir}/include \ - --with-libraries=%{pgbaseinstdir}/lib \ - --datarootdir=%{pgbaseinstdir}/share \ - --enable-thread-safety \ - --with-ldap \ - --with-libxml \ - --with-openssl \ - --with-gssapi \ - --with-readline \ - --with-system-tzdata=%{_datadir}/zoneinfo \ - --docdir=%{pgbaseinstdir}/doc/postgresql -make %{?_smp_mflags} -cd contrib && make %{?_smp_mflags} - -%install -[ %{buildroot} != "/"] && rm -rf %{buildroot}/* -make install DESTDIR=%{buildroot} -cd contrib && make install DESTDIR=%{buildroot} - -%{_fixperms} %{buildroot}/* - -%check -sed -i '2219s/",/ ; EXIT_STATUS=$? ; sleep 5 ; exit $EXIT_STATUS",/g' src/test/regress/pg_regress.c -chown -Rv nobody . -sudo -u nobody -s /bin/bash -c "PATH=$PATH make -k check" - -%post -p /sbin/ldconfig -%postun -p /sbin/ldconfig -%clean -rm -rf %{buildroot}/* - -%files -%defattr(-,root,root) -%{pgbaseinstdir}/bin/initdb -%{pgbaseinstdir}/bin/oid2name -%{pgbaseinstdir}/bin/pg_archivecleanup -%{pgbaseinstdir}/bin/pg_basebackup -%{pgbaseinstdir}/bin/pg_controldata -%{pgbaseinstdir}/bin/pg_ctl -%{pgbaseinstdir}/bin/pg_receivexlog -%{pgbaseinstdir}/bin/pg_recvlogical -%{pgbaseinstdir}/bin/pg_resetxlog -%{pgbaseinstdir}/bin/pg_rewind -%{pgbaseinstdir}/bin/pg_standby -%{pgbaseinstdir}/bin/pg_test_fsync -%{pgbaseinstdir}/bin/pg_test_timing -%{pgbaseinstdir}/bin/pg_upgrade -%{pgbaseinstdir}/bin/pg_xlogdump -%{pgbaseinstdir}/bin/pgbench -%{pgbaseinstdir}/bin/postgres -%{pgbaseinstdir}/bin/postmaster -%{pgbaseinstdir}/bin/vacuumlo -%{pgbaseinstdir}/share/postgresql/* -%{pgbaseinstdir}/lib/postgresql/* -%{pgbaseinstdir}/doc/postgresql/extension/*.example -%exclude %{pgbaseinstdir}/share/postgresql/pg_service.conf.sample -%exclude %{pgbaseinstdir}/share/postgresql/psqlrc.sample - -%files libs -%{pgbaseinstdir}/bin/clusterdb -%{pgbaseinstdir}/bin/createdb -%{pgbaseinstdir}/bin/createlang -%{pgbaseinstdir}/bin/createuser -%{pgbaseinstdir}/bin/dropdb -%{pgbaseinstdir}/bin/droplang -%{pgbaseinstdir}/bin/dropuser -%{pgbaseinstdir}/bin/ecpg -%{pgbaseinstdir}/bin/pg_config -%{pgbaseinstdir}/bin/pg_dump -%{pgbaseinstdir}/bin/pg_dumpall -%{pgbaseinstdir}/bin/pg_isready -%{pgbaseinstdir}/bin/pg_restore -%{pgbaseinstdir}/bin/psql -%{pgbaseinstdir}/bin/reindexdb -%{pgbaseinstdir}/bin/vacuumdb -%{pgbaseinstdir}/lib/libecpg*.so.* -%{pgbaseinstdir}/lib/libpgtypes*.so.* -%{pgbaseinstdir}/lib/libpq*.so.* -%{pgbaseinstdir}/share/postgresql/pg_service.conf.sample -%{pgbaseinstdir}/share/postgresql/psqlrc.sample - -%files devel -%defattr(-,root,root) -%{pgbaseinstdir}/include/* -%{pgbaseinstdir}/lib/pkgconfig/* -%{pgbaseinstdir}/lib/libecpg*.so -%{pgbaseinstdir}/lib/libpgtypes*.so -%{pgbaseinstdir}/lib/libpq*.so -%{pgbaseinstdir}/lib/libpgcommon.a -%{pgbaseinstdir}/lib/libpgfeutils.a -%{pgbaseinstdir}/lib/libpgport.a -%{pgbaseinstdir}/lib/libpq.a -%{pgbaseinstdir}/lib/libecpg.a -%{pgbaseinstdir}/lib/libecpg_compat.a -%{pgbaseinstdir}/lib/libpgtypes.a - -%changelog -* Yan Wang -- Customize postgres 96 from original spec diff --git a/make/photon/db/rpm_builder.sh b/make/photon/db/rpm_builder.sh deleted file mode 100755 index 71b785bd9..000000000 --- a/make/photon/db/rpm_builder.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -set -e - -name='postgresql' -version='9.6.21' - -function checkdep { - if ! wget --version &> /dev/null - then - echo "Need to install wget first and run this script again." - exit 1 - fi - - if ! [ -x "$(command -v bzip2)" ] - then - echo "Need to install bzip2 first and run this script again." - exit 1 - fi -} - -checkdep - -cur=$PWD -workDir=`mktemp -d ${TMPDIR-/tmp}/$name.XXXXXX` -mkdir -p $workDir && cd $workDir - -# step 1: get source code of pg 9.6, and rename the code directory from postgres to postgres96 -wget http://ftp.postgresql.org/pub/source/v$version/$name-$version.tar.bz2 -bzip2 -d ./$name-$version.tar.bz2 && tar -xvf ./$name-$version.tar -mkdir -p ${name}96-$version && cp -r ./$name-$version/* ./${name}96-$version/ && rm -rf ./$name-$version -tar -cvjSf ${name}96-$version.tar.bz2 ${name}96-$version - -# step 2: get spec builder script, and replace version to 4, then to build the pg96 rpm packages -wget https://raw.githubusercontent.com/vmware/photon/4.0/tools/scripts/build_spec.sh -sed "s|VERSION=3|VERSION=4|g" -i build_spec.sh -chmod 655 ./build_spec.sh && cp $cur/postgres.spec . -./build_spec.sh ./postgres.spec -cp ./stage/RPMS/x86_64/${name}96-libs-$version-1.ph4.x86_64.rpm $cur -cp ./stage/RPMS/x86_64/${name}96-$version-1.ph4.x86_64.rpm $cur - -# clean -cd $cur && rm -rf $workDir diff --git a/make/photon/db/upgrade.sh b/make/photon/db/upgrade.sh index 2a91bcf02..70b54add1 100755 --- a/make/photon/db/upgrade.sh +++ b/make/photon/db/upgrade.sh @@ -1,6 +1,6 @@ #!/bin/bash -PGBINOLD="/usr/local/pg96/bin/" +PGBINOLD="" PGBINNEW="/usr/bin" PGDATAOLD="" PGDATANEW=""