diff --git a/.github/elixir-test-matrix.json b/.github/elixir-test-matrix.json
index 92e6308c..89a30479 100644
--- a/.github/elixir-test-matrix.json
+++ b/.github/elixir-test-matrix.json
@@ -2,7 +2,7 @@
   "otp_version": ["26.2.5.3", "25.3.2.14"],
   "elixir_version": ["1.16.3", "1.15.8"],
   "rebar3_version": ["3.24.0"],
-  "os": ["ubuntu-22.04"],
+  "os": ["ubuntu-24.04"],
   "include": [
     {
       "elixir_version": "1.17.3",
diff --git a/.github/erlang-test-matrix.json b/.github/erlang-test-matrix.json
index 9a05a760..40f5b833 100644
--- a/.github/erlang-test-matrix.json
+++ b/.github/erlang-test-matrix.json
@@ -1,5 +1,5 @@
 {
   "otp_version": ["27.1", "26.2.5.3", "25.3.2.14"],
   "rebar3_version": ["3.24.0"],
-  "os": ["ubuntu-22.04"]
+  "os": ["ubuntu-24.04"]
 }
diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml
index 5f39b512..a75c5918 100644
--- a/.github/workflows/elixir.yml
+++ b/.github/workflows/elixir.yml
@@ -16,7 +16,7 @@ concurrency:
 
 jobs:
   test-matrix:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04
     outputs:
       matrix: ${{ steps.set-matrix.outputs.matrix }}
     steps:
@@ -122,7 +122,7 @@ jobs:
       matrix: ${{ fromJson(needs.test-matrix.outputs.matrix) }}
     services:
       postgres:
-        image: circleci/postgres:13.5-ram
+        image: postgres:16
         ports: ["5432:5432"]
         options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
         env:
@@ -171,7 +171,7 @@ jobs:
       matrix: ${{ fromJson(needs.test-matrix.outputs.matrix) }}
     services:
       postgres:
-        image: circleci/postgres:13.5-ram
+        image: postgres:16
         ports: ["5432:5432"]
         options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
         env:
@@ -336,7 +336,7 @@ jobs:
       matrix: ${{ fromJson(needs.test-matrix.outputs.matrix) }}
     services:
       postgres:
-        image: circleci/postgres:13.5-ram
+        image: postgres:16
         ports: ["5432:5432"]
         options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
         env:
diff --git a/.github/workflows/erlang.yml b/.github/workflows/erlang.yml
index 2b4d235d..a68c8e21 100644
--- a/.github/workflows/erlang.yml
+++ b/.github/workflows/erlang.yml
@@ -16,7 +16,7 @@ concurrency:
 
 jobs:
   test-matrix:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04
     outputs:
       matrix: ${{ steps.set-matrix.outputs.matrix }}
     steps:
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 6e2f46ab..2aa00afe 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -3,8 +3,8 @@ on: [pull_request_target]
 
 jobs:
   triage:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04
     steps:
-    - uses: actions/labeler@v4
-      with:
-        repo-token: "${{ secrets.GITHUB_TOKEN }}"
+      - uses: actions/labeler@v4
+        with:
+          repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/publish-mix-hex-release.yml b/.github/workflows/publish-mix-hex-release.yml
index 50607a03..9c238fcd 100644
--- a/.github/workflows/publish-mix-hex-release.yml
+++ b/.github/workflows/publish-mix-hex-release.yml
@@ -50,7 +50,7 @@ on:
 
 jobs:
   config:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04
     outputs:
       authorized_users: ${{ steps.set-config.outputs.authorized_users }}
       build_tool: ${{ steps.set-config.outputs.build_tool }}
@@ -94,13 +94,13 @@ jobs:
 
   authorized_publisher:
     needs: config
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04
     steps:
       - run: ${{ contains(fromJson(needs.config.outputs.authorized_users), github.actor) }}
 
   publish:
     needs: [authorized_publisher, config]
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04
 
     permissions:
       # write permission is required to create a github release