diff --git a/.github/workflows/build-and-push.yaml b/.github/workflows/build-and-push.yaml index b7552544..ca933136 100644 --- a/.github/workflows/build-and-push.yaml +++ b/.github/workflows/build-and-push.yaml @@ -71,7 +71,7 @@ jobs: infrastructure-images: needs: base-images if: github.repository == 'geoserver/geoserver-cloud' - name: Build and Push Infrastructure Images + name: Build infrastructure images runs-on: ubuntu-latest timeout-minutes: 60 steps: @@ -118,9 +118,14 @@ jobs: geoserver-images: needs: base-images if: github.repository == 'geoserver/geoserver-cloud' - name: Build and Push GeoServer Images + name: Build GeoServer image runs-on: ubuntu-latest timeout-minutes: 60 + strategy: + fail-fast: false + matrix: + # matches app folder names in src/apps/geoserver/* and docker compose service names + app: [ 'wms', 'wfs', 'wcs', 'wps', 'gwc', 'restconfig', 'webui' ] steps: - name: Login to Docker Hub uses: docker/login-action@v3 @@ -151,11 +156,11 @@ jobs: - name: Package GeoServer apps run: | - make package-geoserver-images + ./mvnw clean package -DskipTests -T1C -ntp -am -pl src/apps/geoserver/${{ matrix.app }} - name: Build and push GeoServer images run: | - make build-image-geoserver-multiplatform + REPACKAGE=false make build-image-geoserver-multiplatform ${{ matrix.app }} - name: Clean up Maven project artifacts run: | @@ -188,10 +193,7 @@ jobs: - name: Pull all images run: | - TAG=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout) - for image in config discovery gateway gwc rest wcs webui wfs wms wps; do - docker pull geoservercloud/geoserver-cloud-$image:$TAG - done + make pull-images - name: Install Cosign uses: sigstore/cosign-installer@v3.5.0 diff --git a/Makefile b/Makefile index d204e9c4..abb9338d 100644 --- a/Makefile +++ b/Makefile @@ -71,10 +71,13 @@ build-image-infrastructure: package-infrastructure-images COMPOSE_DOCKER_CLI_BUILD=0 DOCKER_BUILDKIT=0 TAG=$(TAG) \ docker compose -f docker-build/infrastructure.yml build +# This uses $(MAKECMDGOALS) (all targets specified) and filters out the target itself ($@), passing the rest as arguments. The %: rule tells make to ignore any unrecognized "targets" (which are actually your service names). +# Then you can call: +# make build-image-geoserver wcs wfs .PHONY: build-image-geoserver build-image-geoserver: package-geoserver-images COMPOSE_DOCKER_CLI_BUILD=0 DOCKER_BUILDKIT=0 TAG=$(TAG) \ - docker compose -f docker-build/geoserver.yml build + docker compose -f docker-build/geoserver.yml build $(filter-out $@ build-image build-image-multiplatform,$(MAKECMDGOALS)) .PHONY: build-image-multiplatform build-image-multiplatform: build-base-images-multiplatform build-image-infrastructure-multiplatform build-image-geoserver-multiplatform @@ -97,15 +100,18 @@ build-image-infrastructure-multiplatform: package-infrastructure-images TAG=$(TAG) \ docker compose -f docker-build/infrastructure-multiplatform.yml build --push +# This uses $(MAKECMDGOALS) (all targets specified) and filters out the target itself ($@), passing the rest as arguments. The %: rule tells make to ignore any unrecognized "targets" (which are actually your service names). +# Then you can call: +# make build-image-geoserver-multiplatform wcs wfs .PHONY: build-image-geoserver-multiplatform build-image-geoserver-multiplatform: package-geoserver-images COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 TAG=$(TAG) \ - docker compose -f docker-build/geoserver-multiplatform.yml build --push + docker compose -f docker-build/geoserver-multiplatform.yml build --push $(filter-out $@ build-image build-image-multiplatform,$(MAKECMDGOALS)) .PHONY: package-base-images package-base-images: ifeq ($(REPACKAGE), true) - ./mvnw clean package -DskipTests -T1C -nsu -am -pl src/apps/base-images/jre,src/apps/base-images/spring-boot,src/apps/base-images/spring-boot3,src/apps/base-images/geoserver + ./mvnw clean package -DskipTests -T1C -ntp -am -pl src/apps/base-images/jre,src/apps/base-images/spring-boot,src/apps/base-images/spring-boot3,src/apps/base-images/geoserver else @echo "Not re-packaging base images, assuming the target/*-bin.jar files exist" endif @@ -113,7 +119,7 @@ endif .PHONY: package-infrastructure-images package-infrastructure-images: ifeq ($(REPACKAGE), true) - ./mvnw clean package -DskipTests -T1C -nsu -am -pl src/apps/infrastructure/config,src/apps/infrastructure/discovery,src/apps/infrastructure/gateway + ./mvnw clean package -DskipTests -T1C -ntp -am -pl src/apps/infrastructure/config,src/apps/infrastructure/discovery,src/apps/infrastructure/gateway else @echo "Not re-packaging infra images, assuming the target/*-bin.jar files exist" endif @@ -121,15 +127,24 @@ endif .PHONY: package-geoserver-images package-geoserver-images: ifeq ($(REPACKAGE), true) - ./mvnw clean package -DskipTests -T1C -nsu -am -pl src/apps/geoserver/gwc,src/apps/geoserver/restconfig,src/apps/geoserver/wcs,src/apps/geoserver/webui,src/apps/geoserver/wfs,src/apps/geoserver/wms,src/apps/geoserver/wcs,src/apps/geoserver/wps + ./mvnw clean package -DskipTests -T1C -ntp -am -pl src/apps/geoserver/gwc,src/apps/geoserver/restconfig,src/apps/geoserver/wcs,src/apps/geoserver/webui,src/apps/geoserver/wfs,src/apps/geoserver/wms,src/apps/geoserver/wcs,src/apps/geoserver/wps else @echo "Not re-packaging geoserver images, assuming the target/*-bin.jar files exist" endif +.PHONY: pull-images +pull-images: + TAG=$$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout) \ + docker compose \ + -f docker-build/geoserver-multiplatform.yml \ + -f docker-build/infrastructure-multiplatform.yml \ + pull --quiet + .PHONY: sign-image sign-image: @bash -c '\ - images=$$(docker images --format "{{.Repository}}@{{.Digest}}" | grep "geoserver-cloud-"); \ + TAG=$$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout); \ + images=$$(TAG=$$TAG docker compose -f docker-build/geoserver-multiplatform.yml -f docker-build/infrastructure-multiplatform.yml config --images); \ for image in $$images; do \ echo "Signing $$image"; \ output=$$(cosign sign --yes --key env://COSIGN_KEY --recursive $$image 2>&1); \ @@ -144,7 +159,8 @@ sign-image: .PHONY: verify-image verify-image: @bash -c '\ - images=$$(docker images --format "{{.Repository}}@{{.Digest}}" | grep "geoserver-cloud-"); \ + TAG=$$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout); \ + images=$$(TAG=$$TAG docker compose -f docker-build/geoserver-multiplatform.yml -f docker-build/infrastructure-multiplatform.yml config --images); \ for image in $$images; do \ echo "Verifying $$image"; \ output=$$(cosign verify --key env://COSIGN_PUB_KEY $$image 2>&1); \ @@ -204,3 +220,7 @@ run-acceptance-tests-jdbcconfig: .PHONY: clean-acceptance-tests-jdbcconfig clean-acceptance-tests-jdbcconfig: (cd compose/ && ./acceptance_jdbcconfig down -v) + +# Prevent make from treating service names as targets when using $(MAKECMDGOALS) in build-image-geoserver/build-image-geoserver-multiplatform +%: + @: diff --git a/compose/acceptance.yml b/compose/acceptance.yml index 44f368fb..5038d16b 100644 --- a/compose/acceptance.yml +++ b/compose/acceptance.yml @@ -19,7 +19,7 @@ services: condition: service_healthy gwc: condition: service_healthy - rest: + restconfig: condition: service_healthy #webui: # condition: service_started @@ -89,7 +89,7 @@ services: memory: 512M healthcheck: retries: 20 - rest: + restconfig: deploy: resources: limits: diff --git a/compose/catalog-datadir.yml b/compose/catalog-datadir.yml index 5a48a351..ea3736a0 100644 --- a/compose/catalog-datadir.yml +++ b/compose/catalog-datadir.yml @@ -53,7 +53,7 @@ services: volumes: *geoserver_volumes depends_on: *gs-dependencies - rest: + restconfig: environment: *geoserver_environment volumes: *geoserver_volumes depends_on: *gs-dependencies diff --git a/compose/catalog-jdbcconfig.yml b/compose/catalog-jdbcconfig.yml index 2e34236b..0377590a 100644 --- a/compose/catalog-jdbcconfig.yml +++ b/compose/catalog-jdbcconfig.yml @@ -54,7 +54,7 @@ services: volumes: *geoserver_volumes depends_on: *gs-dependencies - rest: + restconfig: environment: *geoserver_environment volumes: *geoserver_volumes depends_on: *gs-dependencies diff --git a/compose/catalog-pgconfig.yml b/compose/catalog-pgconfig.yml index 84b0ac21..34be0282 100644 --- a/compose/catalog-pgconfig.yml +++ b/compose/catalog-pgconfig.yml @@ -24,7 +24,7 @@ services: environment: *geoserver_environment depends_on: *gs-dependencies - rest: + restconfig: environment: *geoserver_environment depends_on: *gs-dependencies diff --git a/compose/compose.yml b/compose/compose.yml index 36082c2c..3d5b84fd 100644 --- a/compose/compose.yml +++ b/compose/compose.yml @@ -164,7 +164,7 @@ services: cpus: '4.0' memory: 2G - rest: + restconfig: extends: file: templates.yml service: gstemplate diff --git a/compose/localports.yml b/compose/localports.yml index 0d7f0fa2..e3623a36 100644 --- a/compose/localports.yml +++ b/compose/localports.yml @@ -20,7 +20,7 @@ services: wcs: ports: - 9103:8080 - rest: + restconfig: ports: - 9105:8080 webui: diff --git a/compose/standalone.yml b/compose/standalone.yml index 06c7dfe4..d9edeb75 100644 --- a/compose/standalone.yml +++ b/compose/standalone.yml @@ -80,7 +80,7 @@ services: condition: service_healthy required: true - rest: + restconfig: environment: SPRING_PROFILES_INCLUDE: "standalone" depends_on: diff --git a/config b/config index b8089b73..352ebfb3 160000 --- a/config +++ b/config @@ -1 +1 @@ -Subproject commit b8089b73e94341c90ea8da28e08461bbd7e762e6 +Subproject commit 352ebfb33250903dc55b4961c614d17dac2e8110 diff --git a/docker-build/geoserver-multiplatform.yml b/docker-build/geoserver-multiplatform.yml index a1cf5ec3..a5f1dea8 100644 --- a/docker-build/geoserver-multiplatform.yml +++ b/docker-build/geoserver-multiplatform.yml @@ -31,7 +31,7 @@ services: build: context: ../src/apps/geoserver/wps/ - rest: + restconfig: extends: file: templates.yml service: multi-platform @@ -55,4 +55,4 @@ services: build: context: ../src/apps/geoserver/gwc/ - \ No newline at end of file + diff --git a/docker-build/geoserver.yml b/docker-build/geoserver.yml index 9f663661..c046c0bd 100644 --- a/docker-build/geoserver.yml +++ b/docker-build/geoserver.yml @@ -31,7 +31,7 @@ services: build: context: ../src/apps/geoserver/wps/ - rest: + restconfig: extends: file: templates.yml service: current-platform @@ -55,4 +55,4 @@ services: build: context: ../src/apps/geoserver/gwc/ - \ No newline at end of file + diff --git a/docs/deploy/docker-compose/stable/datadir/compose.yml b/docs/deploy/docker-compose/stable/datadir/compose.yml index 7d2784d5..f2584c42 100644 --- a/docs/deploy/docker-compose/stable/datadir/compose.yml +++ b/docs/deploy/docker-compose/stable/datadir/compose.yml @@ -143,7 +143,7 @@ services: deploy: replicas: 1 - rest: + restconfig: image: geoservercloud/geoserver-cloud-rest:2.27.2.0 extends: service: geoserver_template diff --git a/docs/deploy/docker-compose/stable/jdbcconfig/compose.yml b/docs/deploy/docker-compose/stable/jdbcconfig/compose.yml index 41109e15..36c2ac34 100644 --- a/docs/deploy/docker-compose/stable/jdbcconfig/compose.yml +++ b/docs/deploy/docker-compose/stable/jdbcconfig/compose.yml @@ -157,7 +157,7 @@ services: deploy: replicas: 1 - rest: + restconfig: image: geoservercloud/geoserver-cloud-rest:2.27.2.0 extends: service: geoserver_template diff --git a/docs/deploy/docker-compose/stable/pgconfig/compose.yml b/docs/deploy/docker-compose/stable/pgconfig/compose.yml index e0961410..e7bac9f1 100644 --- a/docs/deploy/docker-compose/stable/pgconfig/compose.yml +++ b/docs/deploy/docker-compose/stable/pgconfig/compose.yml @@ -262,7 +262,7 @@ services: deploy: replicas: 1 - rest: + restconfig: image: geoservercloud/geoserver-cloud-rest:2.27.2.0 extends: service: geoserver_template