From 4b476e1580fefbc354f1251a03f57fdf05b6eb5f Mon Sep 17 00:00:00 2001 From: Jason Raitz Date: Fri, 12 Jun 2026 15:32:52 -0400 Subject: [PATCH 1/5] bump ruby and gems ruby - 3.2.2 -> 3.4.9 gems: - rubyzip v3+ is out of alpha and can be upgraded at least to ~3.0 docker-compose: - I got some warnings about running geoserver container without a platform specification, so I added a linux/amd64 to both. - rspec tests were giving errors because the geoserver containers weren't fully up when running the test, so I added healthchecks - since I added healthchecks for geoserver services, I added one to solr, and a server_started to the spatial service test change: - from what I can tell there was just a typo in one test which I fixed. (I think it may have been missed before because the app wasn't waiting for the geoserver services to be up?) --- .rubocop.yml | 2 +- .ruby-version | 2 +- Dockerfile | 2 +- Gemfile | 2 +- Gemfile.lock | 243 ++++++++++++++++++------------- docker-compose.yml | 30 +++- spec/geoserver_publisher_spec.rb | 2 +- 7 files changed, 176 insertions(+), 107 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 17f792a..8d937a3 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,7 +1,7 @@ inherit_from: .rubocop_todo.yml AllCops: - TargetRubyVersion: 3.2.2 + TargetRubyVersion: 3.4 DisplayCopNames: true NewCops: enable Exclude: diff --git a/.ruby-version b/.ruby-version index be94e6f..7bcbb38 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.2.2 +3.4.9 diff --git a/Dockerfile b/Dockerfile index 8a61e33..3be18e9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.2.2 +FROM ruby:3.4.9 RUN apt-get update -qq && \ apt-get install -y --no-install-recommends \ diff --git a/Gemfile b/Gemfile index 7948702..fd8823d 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem 'faraday-net_http_persistent', '~> 2.0' gem 'geo_combine' gem 'geoserver-publish', '~> 0.7.0' gem 'rsolr' -gem 'rubyzip', '3.0.0.alpha' +gem 'rubyzip', '~> 3.0' gem "berkeley_library-docker", "~> 0.2.0" gem "listen", "~> 3.8" gem 'uri' diff --git a/Gemfile.lock b/Gemfile.lock index 41755a5..eb5c320 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,65 +1,77 @@ GEM remote: https://rubygems.org/ specs: - actionpack (7.1.1) - actionview (= 7.1.1) - activesupport (= 7.1.1) + actionpack (8.1.3) + actionview (= 8.1.3) + activesupport (= 8.1.3) nokogiri (>= 1.8.5) rack (>= 2.2.4) rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actionview (7.1.1) - activesupport (= 7.1.1) + useragent (~> 0.16) + actionview (8.1.3) + activesupport (= 8.1.3) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activesupport (7.1.1) + activesupport (8.1.3) base64 bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + json + logger (>= 1.4.2) minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) - addressable (2.8.5) - public_suffix (>= 2.0.2, < 6.0) - amazing_print (1.5.0) - base64 (0.1.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + addressable (2.9.0) + public_suffix (>= 2.0.2, < 8.0) + amazing_print (1.8.1) + base64 (0.3.0) berkeley_library-docker (0.2.0) - berkeley_library-logging (0.2.7) - activesupport (>= 6) + berkeley_library-logging (0.3.0) + activesupport (>= 7) amazing_print (~> 1.1) - colorize (~> 0.8.1) + colorize (~> 1.0) lograge (~> 0.11) - ougai (~> 1.8) - bigdecimal (3.1.4) - builder (3.2.4) + ougai (~> 2.0) + bigdecimal (4.1.2) + builder (3.3.0) coderay (1.1.3) - colorize (0.8.1) - concurrent-ruby (1.2.2) - connection_pool (2.4.1) + colorize (1.1.0) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) crass (1.0.6) - diff-lcs (1.5.0) - drb (2.1.1) - ruby2_keywords - erubi (1.12.0) - faraday (2.7.11) - base64 - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) - faraday-net_http_persistent (2.1.0) + date (3.5.1) + diff-lcs (1.6.2) + drb (2.2.3) + erb (6.0.4) + erubi (1.13.1) + faraday (2.14.2) + faraday-net_http (>= 2.0, < 3.5) + json + logger + faraday-net_http (3.4.4) + net-http (~> 0.5) + faraday-net_http_persistent (2.3.1) faraday (~> 2.5) - net-http-persistent (~> 4.0) - ffi (1.16.3) - geo_combine (0.8.0) + net-http-persistent (>= 4.0.4, < 5) + faraday-retry (2.4.0) + faraday (~> 2.0) + ffi (1.17.4-aarch64-linux-gnu) + ffi (1.17.4-arm64-darwin) + ffi (1.17.4-x86_64-darwin) + ffi (1.17.4-x86_64-linux-gnu) + geo_combine (0.9.2) activesupport faraday-net_http_persistent (~> 2.0) + faraday-retry (~> 2.2) git json-schema nokogiri @@ -68,114 +80,143 @@ GEM thor geoserver-publish (0.7.0) faraday (~> 2.2) - git (1.18.0) + git (4.3.2) + activesupport (>= 5.0) addressable (~> 2.8) - rchardet (~> 1.8) - i18n (1.14.1) + process_executer (~> 4.0) + rchardet (~> 1.9) + i18n (1.14.8) concurrent-ruby (~> 1.0) - io-console (0.6.0) - irb (1.8.3) - rdoc - reline (>= 0.3.8) - json-schema (4.1.1) - addressable (>= 2.8) - listen (3.8.0) + io-console (0.8.2) + irb (1.18.0) + pp (>= 0.6.0) + prism (>= 1.3.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.19.9) + json-schema (6.2.0) + addressable (~> 2.8) + bigdecimal (>= 3.1, < 5) + listen (3.10.0) + logger rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) lograge (0.14.0) actionpack (>= 4) activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.21.4) + loofah (2.25.1) crass (~> 1.0.2) nokogiri (>= 1.12.0) - method_source (1.0.0) - minitest (5.20.0) - mutex_m (0.1.2) - net-http-persistent (4.0.2) - connection_pool (~> 2.2) - nokogiri (1.15.4-aarch64-linux) + method_source (1.1.0) + minitest (6.0.6) + drb (~> 2.0) + prism (~> 1.5) + net-http (0.9.1) + uri (>= 0.11.1) + net-http-persistent (4.0.8) + connection_pool (>= 2.2.4, < 4) + nokogiri (1.19.3-aarch64-linux-gnu) racc (~> 1.4) - nokogiri (1.15.4-x86_64-darwin) + nokogiri (1.19.3-arm64-darwin) racc (~> 1.4) - nokogiri (1.15.4-x86_64-linux) + nokogiri (1.19.3-x86_64-darwin) racc (~> 1.4) - oj (3.16.1) - ougai (1.9.1) + nokogiri (1.19.3-x86_64-linux-gnu) + racc (~> 1.4) + oj (3.17.3) + bigdecimal (>= 3.0) + ostruct (>= 0.2) + ostruct (0.6.3) + ougai (2.0.0) oj (~> 3.10) + pp (0.6.3) + prettyprint + prettyprint (0.2.0) + prism (1.9.0) + process_executer (4.0.4) + track_open_instances (~> 0.1) pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) - psych (5.1.1.1) + psych (5.4.0) + date stringio - public_suffix (5.0.3) - racc (1.7.1) - rack (3.0.8) - rack-session (2.0.0) + public_suffix (7.0.5) + racc (1.8.1) + rack (3.2.6) + rack-session (2.1.2) + base64 (>= 0.1.0) rack (>= 3.0.0) - rack-test (2.1.0) + rack-test (2.2.0) rack (>= 1.3) - rackup (2.1.0) + rackup (2.3.1) rack (>= 3) - webrick (~> 1.8) - rails-dom-testing (2.2.0) + rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.0) - loofah (~> 2.21) - nokogiri (~> 1.14) - railties (7.1.1) - actionpack (= 7.1.1) - activesupport (= 7.1.1) - irb + rails-html-sanitizer (1.7.0) + loofah (~> 2.25) + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + railties (8.1.3) + actionpack (= 8.1.3) + activesupport (= 8.1.3) + irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) + tsort (>= 0.2) zeitwerk (~> 2.6) - rake (13.1.0) + rake (13.4.2) rb-fsevent (0.11.2) - rb-inotify (0.10.1) + rb-inotify (0.11.1) ffi (~> 1.0) - rchardet (1.8.0) - rdoc (6.5.0) + rchardet (1.10.2) + rdoc (7.2.0) + erb psych (>= 4.0.0) - reline (0.3.9) + tsort + reline (0.6.3) io-console (~> 0.5) - request_store (1.5.1) + request_store (1.7.0) rack (>= 1.4) - rsolr (2.5.0) + rsolr (2.6.0) builder (>= 2.1.2) faraday (>= 0.9, < 3, != 2.0.0) - rspec (3.12.0) - rspec-core (~> 3.12.0) - rspec-expectations (~> 3.12.0) - rspec-mocks (~> 3.12.0) - rspec-core (3.12.2) - rspec-support (~> 3.12.0) - rspec-expectations (3.12.3) + rspec (3.13.2) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.6) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-mocks (3.12.6) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.8) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-support (3.12.1) - ruby2_keywords (0.0.5) - rubyzip (3.0.0.alpha) - sanitize (6.1.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.7) + rubyzip (3.3.1) + sanitize (7.0.0) crass (~> 1.0.2) - nokogiri (>= 1.12.0) - stringio (3.0.8) - thor (1.3.0) + nokogiri (>= 1.16.8) + securerandom (0.4.1) + stringio (3.2.0) + thor (1.5.0) + track_open_instances (0.1.15) + tsort (0.2.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - uri (0.12.2) - webrick (1.8.1) - zeitwerk (2.6.12) + uri (1.1.1) + useragent (0.16.11) + zeitwerk (2.8.2) PLATFORMS aarch64-linux + arm64-darwin-25 x86_64-darwin-22 x86_64-linux @@ -189,11 +230,11 @@ DEPENDENCIES pry (~> 0.14.2) rsolr rspec (~> 3.12) - rubyzip (= 3.0.0.alpha) + rubyzip (~> 3.0) uri RUBY VERSION - ruby 3.2.2p53 + ruby 3.4.9p82 BUNDLED WITH 2.4.10 diff --git a/docker-compose.yml b/docker-compose.yml index 4e82f68..73581fa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,16 @@ --- - services: app: build: . + depends_on: + solr: + condition: service_healthy + spatial: + condition: service_started + geoserver: + condition: service_healthy + geoserver-secure: + condition: service_healthy command: - tail - -f @@ -26,6 +34,12 @@ services: ports: - 8983:8983 restart: always + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8983/solr/"] + interval: 15s + timeout: 10s + retries: 10 + start_period: 60s volumes: - ./solr:/opt/solr/server/solr/configsets:ro @@ -38,14 +52,28 @@ services: geoserver: image: containers.lib.berkeley.edu/gis/geoserver:production + platform: linux/amd64 ports: - 8080:8080 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/geoserver/web/"] + interval: 15s + timeout: 10s + retries: 10 + start_period: 120s volumes: - ./data/geoserver/public:/srv/geofiles:delegated geoserver-secure: image: containers.lib.berkeley.edu/gis/geoserver:production + platform: linux/amd64 ports: - 8081:8080 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/geoserver/web/"] + interval: 15s + timeout: 10s + retries: 10 + start_period: 120s volumes: - ./data/geoserver/UCB:/srv/geofiles:delegated diff --git a/spec/geoserver_publisher_spec.rb b/spec/geoserver_publisher_spec.rb index 41418b6..b9b5752 100644 --- a/spec/geoserver_publisher_spec.rb +++ b/spec/geoserver_publisher_spec.rb @@ -135,7 +135,7 @@ let(:default) { :geoserver_secure_url } it 'publishes a shapefile' do - expect(subject.publish('s76412.shp')).to be_nil + expect(subject.publish('s76412fk.shp')).to be_nil end end end From fb0e0a0069d0f6f700933c5bd02fb43f2e1fa375 Mon Sep 17 00:00:00 2001 From: Jason Raitz Date: Tue, 16 Jun 2026 11:06:09 -0400 Subject: [PATCH 2/5] bump gems - update geoserver pull --- Gemfile | 6 +++--- Gemfile.lock | 11 ++++++----- docker-compose.yml | 10 ++++------ 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Gemfile b/Gemfile index fd8823d..53362b0 100644 --- a/Gemfile +++ b/Gemfile @@ -2,10 +2,10 @@ source 'https://rubygems.org' ruby File.read('.ruby-version') -gem 'berkeley_library-logging', '~> 0.2' +gem 'berkeley_library-logging', '~> 0.3' gem 'faraday-net_http_persistent', '~> 2.0' gem 'geo_combine' -gem 'geoserver-publish', '~> 0.7.0' +gem 'geoserver-publish', '~> 1.0' gem 'rsolr' gem 'rubyzip', '~> 3.0' gem "berkeley_library-docker", "~> 0.2.0" @@ -13,7 +13,7 @@ gem "listen", "~> 3.8" gem 'uri' group :dev do - gem "pry", "~> 0.14.2" + gem "pry", "~> 0.16" end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index eb5c320..b2dca2c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -78,7 +78,7 @@ GEM rsolr sanitize thor - geoserver-publish (0.7.0) + geoserver-publish (1.0.0) faraday (~> 2.2) git (4.3.2) activesupport (>= 5.0) @@ -138,9 +138,10 @@ GEM prism (1.9.0) process_executer (4.0.4) track_open_instances (~> 0.1) - pry (0.14.2) + pry (0.16.0) coderay (~> 1.1) method_source (~> 1.0) + reline (>= 0.6.0) psych (5.4.0) date stringio @@ -222,12 +223,12 @@ PLATFORMS DEPENDENCIES berkeley_library-docker (~> 0.2.0) - berkeley_library-logging (~> 0.2) + berkeley_library-logging (~> 0.3) faraday-net_http_persistent (~> 2.0) geo_combine - geoserver-publish (~> 0.7.0) + geoserver-publish (~> 1.0) listen (~> 3.8) - pry (~> 0.14.2) + pry (~> 0.16) rsolr rspec (~> 3.12) rubyzip (~> 3.0) diff --git a/docker-compose.yml b/docker-compose.yml index 73581fa..4f0e4dc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -51,8 +51,7 @@ services: - ./data/spatial:/usr/local/apache2/htdocs/:ro geoserver: - image: containers.lib.berkeley.edu/gis/geoserver:production - platform: linux/amd64 + image: ghcr.io/berkeleylibrary/geoserver:latest ports: - 8080:8080 healthcheck: @@ -60,13 +59,12 @@ services: interval: 15s timeout: 10s retries: 10 - start_period: 120s + start_period: 30s volumes: - ./data/geoserver/public:/srv/geofiles:delegated geoserver-secure: - image: containers.lib.berkeley.edu/gis/geoserver:production - platform: linux/amd64 + image: ghcr.io/berkeleylibrary/geoserver:latest ports: - 8081:8080 healthcheck: @@ -74,6 +72,6 @@ services: interval: 15s timeout: 10s retries: 10 - start_period: 120s + start_period: 30s volumes: - ./data/geoserver/UCB:/srv/geofiles:delegated From a8585451f764150a71d80c1e9c7b8bdc3b0e81ac Mon Sep 17 00:00:00 2001 From: Jason Raitz Date: Tue, 16 Jun 2026 11:17:23 -0400 Subject: [PATCH 3/5] remove depends_on geoserver services in ci --- docker-compose.ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index 60c031c..928ef09 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -1,9 +1,13 @@ --- - services: app: build: !reset image: ${DOCKER_APP_IMAGE} + depends_on: !override + solr: + condition: service_healthy + spatial: + condition: service_started volumes: !override - artifacts:/opt/app/artifacts From 25c28a0b65d9b44048b4a448e5c3cd47933559e7 Mon Sep 17 00:00:00 2001 From: Jason Raitz Date: Tue, 16 Jun 2026 11:27:35 -0400 Subject: [PATCH 4/5] AP-731 fix multi-arch workflows --- .github/workflows/build.yml | 162 +++++----------------------------- .github/workflows/release.yml | 61 ++----------- 2 files changed, 27 insertions(+), 196 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8f1dd4a..6a24398 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,174 +3,54 @@ name: Build / Test / Push on: push: branches: - - '**' + - "**" workflow_call: workflow_dispatch: env: BUILD_SUFFIX: -build-${{ github.run_id }}_${{ github.run_attempt }} - DOCKER_METADATA_SET_OUTPUT_ENV: 'true' jobs: - build: - runs-on: ${{ matrix.runner }} - outputs: - build-image-arm: ${{ steps.gen-output.outputs.image-arm64 }} - build-image-x64: ${{ steps.gen-output.outputs.image-x64 }} - strategy: - fail-fast: false - matrix: - runner: - - ubuntu-24.04 - - ubuntu-24.04-arm - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - id: build-meta - name: Docker meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository }} - tags: type=sha,suffix=${{ env.BUILD_SUFFIX }} - - # Build cache is shared among all builds of the same architecture - - id: cache-meta - name: Docker meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository }} - tags: type=raw,value=buildcache-${{ runner.arch }} - - - id: get-registry - name: Get the sanitized registry name - run: | - echo "registry=$(echo '${{ steps.build-meta.outputs.tags }}' | cut -f1 -d:)" | tee -a "$GITHUB_OUTPUT" - - - id: build - name: Build/push the arch-specific image - uses: docker/build-push-action@v6 - with: - cache-from: type=registry,ref=${{ steps.cache-meta.outputs.tags }} - cache-to: type=registry,ref=${{ steps.cache-meta.outputs.tags }},mode=max - labels: ${{ steps.build-meta.outputs.labels }} - provenance: mode=max - sbom: true - tags: ${{ steps.get-registry.outputs.registry }} - outputs: type=image,push-by-digest=true,push=true - - - id: gen-output - name: Write arch-specific image digest to outputs - run: | - echo "image-${RUNNER_ARCH,,}=${{ steps.get-registry.outputs.registry }}@${{ steps.build.outputs.digest }}" | tee -a "$GITHUB_OUTPUT" - - merge: - runs-on: ubuntu-24.04 - needs: - - build - env: - DOCKER_APP_IMAGE_ARM64: ${{ needs.build.outputs.build-image-arm }} - DOCKER_APP_IMAGE_X64: ${{ needs.build.outputs.build-image-x64 }} - outputs: - build-image: ${{ steps.meta.outputs.tags }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository }} - tags: | - type=sha,suffix=-build-${{ github.run_id }}_${{ github.run_attempt }} - - - name: Push the multi-platform image - run: | - docker buildx imagetools create \ - --tag "$DOCKER_METADATA_OUTPUT_TAGS" \ - "$DOCKER_APP_IMAGE_ARM64" "$DOCKER_APP_IMAGE_X64" + docker-build: + uses: BerkeleyLibrary/.github/.github/workflows/docker-build.yml@v2.0.0 + with: + image: ghcr.io/${{ github.repository }} + secrets: inherit test: runs-on: ubuntu-24.04 needs: - - merge + - docker-build env: COMPOSE_FILE: docker-compose.yml:docker-compose.ci.yml - DOCKER_APP_IMAGE: ${{ needs.merge.outputs.build-image }} + DOCKER_APP_IMAGE: ${{ needs.docker-build.outputs.image }} steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up Docker Compose - uses: docker/setup-compose-action@v1 + uses: docker/setup-compose-action@v2 - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Setup the stack - run: | - docker compose pull --quiet - docker compose up --detach --wait + - name: Start the stack + run: docker compose up --detach --wait - name: Run the test script - run: | - docker compose exec app bin/test + run: docker compose exec app bin/test push: - runs-on: ubuntu-24.04 needs: - - merge + - docker-build - test - env: - DOCKER_APP_IMAGE: ${{ needs.merge.outputs.build-image }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Produce permanent image tags - id: branch-meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository }} - tags: | - type=sha - type=ref,event=branch - type=raw,value=latest,enable={{is_default_branch}} - - - name: Retag and push the image - run: | - docker pull "$DOCKER_APP_IMAGE" - echo "$DOCKER_METADATA_OUTPUT_TAGS" | tr ' ' '\n' | xargs -n1 docker tag "$DOCKER_APP_IMAGE" - docker push --all-tags "$(echo "$DOCKER_APP_IMAGE" | cut -f1 -d:)" + uses: BerkeleyLibrary/.github/.github/workflows/docker-push.yml@v2.0.0 + with: + image: ghcr.io/${{ github.repository }} + build-image-arm64: ${{ needs.docker-build.outputs.image-arm64 }} + build-image-x64: ${{ needs.docker-build.outputs.image-x64 }} + secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eb194b0..26fd2d5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,61 +3,12 @@ name: Push Release Tags on: push: tags: - - '**' + - "**" workflow_call: workflow_dispatch: - -env: - DOCKER_METADATA_SET_OUTPUT_ENV: 'true' - jobs: - retag: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Determine the sha-based image tag to retag - id: get-base-image - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository }} - tags: type=sha - - - name: Verify that the image was previously built - env: - BASE_IMAGE: ${{ steps.get-base-image.outputs.tags }} - run: | - docker pull "$BASE_IMAGE" - - - name: Produce release tags - id: tag-meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/${{ github.repository }} - flavor: latest=false - tags: | - type=ref,event=tag - type=semver,pattern={{major}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{version}} - - - name: Retag the pulled image - env: - BASE_IMAGE: ${{ steps.get-base-image.outputs.tags }} - run: | - echo "$DOCKER_METADATA_OUTPUT_TAGS" | tr ' ' '\n' | xargs -n1 docker tag "$BASE_IMAGE" - docker push --all-tags "$(echo "$BASE_IMAGE" | cut -f1 -d:)" + release: + uses: BerkeleyLibrary/.github/.github/workflows/docker-release.yml@v2.0.0 + with: + image: ghcr.io/${{ github.repository }} + secrets: inherit From 61747b15a507834e424642b1b187528f4379cd39 Mon Sep 17 00:00:00 2001 From: Jason Raitz Date: Tue, 16 Jun 2026 14:12:31 -0400 Subject: [PATCH 5/5] update bundler --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b2dca2c..79999b6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -235,7 +235,7 @@ DEPENDENCIES uri RUBY VERSION - ruby 3.4.9p82 + ruby 3.4.9p82 BUNDLED WITH - 2.4.10 + 4.0.14