Rollouts agent

rollouts2.a.jpfennell.com

github.com/jamespfennell/rollouts

Projects

rollouts1.a.jpfennell.com

github.com/jamespfennell/rollouts

Last deployed 11 days ago.

No pending deployment.

Most recent deployments
Fix GitHub rate limit bug

Build #34. Deployed 11 days ago.

Deployment logs
Pull
$ docker compose pull
 rollouts2 Skipped - Image is already being pulled by rollouts1 
 rollouts1 Pulling 
 ef235bf1a09a Already exists 
 a012e3bc64f2 Pulling fs layer 
 3cbe79578828 Pulling fs layer 
 6546c1e3b4ce Pulling fs layer 
 6546c1e3b4ce Downloading [>                                                  ]  25.18kB/2.383MB
 3cbe79578828 Downloading [>                                                  ]  99.63kB/9.721MB
 a012e3bc64f2 Downloading [>                                                  ]  166.4kB/16.47MB
 6546c1e3b4ce Verifying Checksum 
 6546c1e3b4ce Download complete 
 3cbe79578828 Downloading [========================>                          ]  4.846MB/9.721MB
 a012e3bc64f2 Downloading [=============>                                     ]  4.391MB/16.47MB
 3cbe79578828 Verifying Checksum 
 3cbe79578828 Download complete 
 a012e3bc64f2 Downloading [================================>                  ]  10.58MB/16.47MB
 a012e3bc64f2 Downloading [========================================>          ]  13.36MB/16.47MB
 a012e3bc64f2 Download complete 
 a012e3bc64f2 Extracting [>                                                  ]  196.6kB/16.47MB
 a012e3bc64f2 Extracting [=================>                                 ]  5.898MB/16.47MB
 a012e3bc64f2 Extracting [=====================================>             ]  12.19MB/16.47MB
 a012e3bc64f2 Extracting [==================================================>]  16.47MB/16.47MB
 a012e3bc64f2 Pull complete 
 3cbe79578828 Extracting [>                                                  ]   98.3kB/9.721MB
 3cbe79578828 Extracting [==========>                                        ]  1.966MB/9.721MB
 3cbe79578828 Extracting [=============================>                     ]    5.8MB/9.721MB
 3cbe79578828 Extracting [==============================>                    ]  5.997MB/9.721MB
 3cbe79578828 Extracting [====================================>              ]  7.176MB/9.721MB
 3cbe79578828 Extracting [============================================>      ]  8.749MB/9.721MB
 3cbe79578828 Extracting [==================================================>]  9.721MB/9.721MB
 3cbe79578828 Pull complete 
 6546c1e3b4ce Extracting [>                                                  ]  32.77kB/2.383MB
 6546c1e3b4ce Extracting [==================================================>]  2.383MB/2.383MB
 6546c1e3b4ce Pull complete 
 rollouts1 Pulled 

Success
              
Redeploy
$ docker compose up -d rollouts1
 Container rollouts-a-rollouts1-1  Recreate
 Container rollouts-a-rollouts1-1  Recreated
 Container rollouts-a-rollouts1-1  Starting
 Container rollouts-a-rollouts1-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host rollouts1.a.jpfennell.com:443 was resolved.
* IPv6: (none)
* IPv4: 162.243.34.11
*   Trying 162.243.34.11:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [1580 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [1210 bytes data]
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2071 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519MLKEM768 / id-ecPublicKey
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts1.a.jpfennell.com
*  start date: Dec 22 22:29:16 2025 GMT
*  expire date: Mar 22 22:29:15 2026 GMT
*  subjectAltName: host "rollouts1.a.jpfennell.com" matched cert's "rollouts1.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 1: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to rollouts1.a.jpfennell.com (162.243.34.11) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://rollouts1.a.jpfennell.com/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: rollouts1.a.jpfennell.com]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts1.a.jpfennell.com
> User-Agent: curl/8.14.1
> Accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
* Request completely sent off
{ [5 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Mon, 09 Feb 2026 03:43:54 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< 
{ [5 bytes data]

100  207k    0  207k    0     0  7713k      0 --:--:-- --:--:-- --:--:-- 7997k
* Connection #0 to host rollouts1.a.jpfennell.com left intact

Success
              
Add GitHub etag debugging

Build #33. Deployed 11 days ago.

Deployment logs
Pull
$ docker compose pull
 rollouts2 Skipped - Image is already being pulled by rollouts1 
 rollouts1 Pulling 
 ef235bf1a09a Already exists 
 708f69f5f4ed Pulling fs layer 
 b513af4fcd44 Pulling fs layer 
 d753285454a1 Pulling fs layer 
 d753285454a1 Downloading [>                                                  ]  24.44kB/2.384MB
 708f69f5f4ed Downloading [>                                                  ]    165kB/16.47MB
 b513af4fcd44 Downloading [>                                                  ]  101.3kB/9.721MB
 d753285454a1 Verifying Checksum 
 d753285454a1 Download complete 
 b513af4fcd44 Verifying Checksum 
 b513af4fcd44 Download complete 
 708f69f5f4ed Downloading [=============================>                     ]  9.695MB/16.47MB
 708f69f5f4ed Verifying Checksum 
 708f69f5f4ed Download complete 
 708f69f5f4ed Extracting [>                                                  ]  196.6kB/16.47MB
 708f69f5f4ed Extracting [=================>                                 ]  5.702MB/16.47MB
 708f69f5f4ed Extracting [=========================================>         ]  13.57MB/16.47MB
 708f69f5f4ed Extracting [==================================================>]  16.47MB/16.47MB
 708f69f5f4ed Pull complete 
 b513af4fcd44 Extracting [>                                                  ]   98.3kB/9.721MB
 b513af4fcd44 Extracting [=============>                                     ]  2.556MB/9.721MB
 b513af4fcd44 Extracting [=============================>                     ]    5.8MB/9.721MB
 b513af4fcd44 Extracting [==============================>                    ]  5.997MB/9.721MB
 b513af4fcd44 Extracting [=========================================>         ]  8.061MB/9.721MB
 b513af4fcd44 Extracting [================================================>  ]  9.339MB/9.721MB
 b513af4fcd44 Extracting [==================================================>]  9.721MB/9.721MB
 b513af4fcd44 Pull complete 
 d753285454a1 Extracting [>                                                  ]  32.77kB/2.384MB
 d753285454a1 Extracting [==================================================>]  2.384MB/2.384MB
 d753285454a1 Extracting [==================================================>]  2.384MB/2.384MB
 d753285454a1 Pull complete 
 rollouts1 Pulled 

Success
              
Redeploy
$ docker compose up -d rollouts1
 Container rollouts-a-rollouts1-1  Recreate
 Container rollouts-a-rollouts1-1  Recreated
 Container rollouts-a-rollouts1-1  Starting
 Container rollouts-a-rollouts1-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host rollouts1.a.jpfennell.com:443 was resolved.
* IPv6: (none)
* IPv4: 162.243.34.11
*   Trying 162.243.34.11:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [1580 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [1210 bytes data]
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2071 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519MLKEM768 / id-ecPublicKey
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts1.a.jpfennell.com
*  start date: Dec 22 22:29:16 2025 GMT
*  expire date: Mar 22 22:29:15 2026 GMT
*  subjectAltName: host "rollouts1.a.jpfennell.com" matched cert's "rollouts1.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 1: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to rollouts1.a.jpfennell.com (162.243.34.11) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://rollouts1.a.jpfennell.com/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: rollouts1.a.jpfennell.com]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts1.a.jpfennell.com
> User-Agent: curl/8.14.1
> Accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
* Request completely sent off
{ [5 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Mon, 09 Feb 2026 03:28:49 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< 
{ [5 bytes data]

100  203k    0  203k    0     0  4872k      0 --:--:-- --:--:-- --:--:-- 4965k
* Connection #0 to host rollouts1.a.jpfennell.com left intact

Success
              
Make email sending best effort

Build #32. Deployed 11 days ago.

Deployment logs
Pull
$ docker compose pull
 rollouts2 Skipped - Image is already being pulled by rollouts1 
 rollouts1 Pulling 
 ef235bf1a09a Already exists 
 e7fbeedf6cdc Pulling fs layer 
 a644225ef67e Pulling fs layer 
 a41ead1fbfa4 Pulling fs layer 
 e7fbeedf6cdc Downloading [>                                                  ]  168.3kB/16.47MB
 a644225ef67e Downloading [>                                                  ]  101.2kB/9.721MB
 a41ead1fbfa4 Downloading [>                                                  ]  24.44kB/2.384MB
 a41ead1fbfa4 Downloading [==================================================>]  2.384MB/2.384MB
 a41ead1fbfa4 Verifying Checksum 
 a41ead1fbfa4 Download complete 
 e7fbeedf6cdc Downloading [==========================>                        ]  8.761MB/16.47MB
 a644225ef67e Downloading [==============================================>    ]  9.116MB/9.721MB
 a644225ef67e Verifying Checksum 
 a644225ef67e Download complete 
 e7fbeedf6cdc Verifying Checksum 
 e7fbeedf6cdc Download complete 
 e7fbeedf6cdc Extracting [>                                                  ]  196.6kB/16.47MB
 e7fbeedf6cdc Extracting [=============>                                     ]  4.522MB/16.47MB
 e7fbeedf6cdc Extracting [=======================>                           ]  7.864MB/16.47MB
 e7fbeedf6cdc Extracting [====================================>              ]  11.99MB/16.47MB
 e7fbeedf6cdc Extracting [===============================================>   ]  15.53MB/16.47MB
 e7fbeedf6cdc Extracting [==================================================>]  16.47MB/16.47MB
 e7fbeedf6cdc Pull complete 
 a644225ef67e Extracting [>                                                  ]   98.3kB/9.721MB
 a644225ef67e Extracting [============>                                      ]  2.359MB/9.721MB
 a644225ef67e Extracting [==========================>                        ]  5.112MB/9.721MB
 a644225ef67e Extracting [=============================>                     ]    5.8MB/9.721MB
 a644225ef67e Extracting [==============================>                    ]  5.997MB/9.721MB
 a644225ef67e Extracting [=========================================>         ]  8.159MB/9.721MB
 a644225ef67e Extracting [================================================>  ]  9.339MB/9.721MB
 a644225ef67e Extracting [==================================================>]  9.721MB/9.721MB
 a644225ef67e Pull complete 
 a41ead1fbfa4 Extracting [>                                                  ]  32.77kB/2.384MB
 a41ead1fbfa4 Extracting [==================================================>]  2.384MB/2.384MB
 a41ead1fbfa4 Extracting [==================================================>]  2.384MB/2.384MB
 a41ead1fbfa4 Pull complete 
 rollouts1 Pulled 

Success
              
Redeploy
$ docker compose up -d rollouts1
 Container rollouts-a-rollouts1-1  Recreate
 Container rollouts-a-rollouts1-1  Recreated
 Container rollouts-a-rollouts1-1  Starting
 Container rollouts-a-rollouts1-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host rollouts1.a.jpfennell.com:443 was resolved.
* IPv6: (none)
* IPv4: 162.243.34.11
*   Trying 162.243.34.11:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [1580 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [1210 bytes data]
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2071 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519MLKEM768 / id-ecPublicKey
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts1.a.jpfennell.com
*  start date: Dec 22 22:29:16 2025 GMT
*  expire date: Mar 22 22:29:15 2026 GMT
*  subjectAltName: host "rollouts1.a.jpfennell.com" matched cert's "rollouts1.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 1: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption
* Connected to rollouts1.a.jpfennell.com (162.243.34.11) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://rollouts1.a.jpfennell.com/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: rollouts1.a.jpfennell.com]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.14.1]
* [HTTP/2] [1] [accept: */*]
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts1.a.jpfennell.com
> User-Agent: curl/8.14.1
> Accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
* Request completely sent off
{ [5 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Mon, 09 Feb 2026 01:42:44 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< 
} [5 bytes data]

100  199k    0  199k    0     0  4687k      0 --:--:-- --:--:-- --:--:-- 4743k
* Connection #0 to host rollouts1.a.jpfennell.com left intact

Success
              
Fix stall/deadlock

Build #31. Deployed 14 days ago.

Deployment logs
Pull
$ docker compose pull
 rollouts2 Skipped - Image is already being pulled by rollouts1 
 rollouts1 Pulling 
 ef235bf1a09a Already exists 
 ae1e1e95d63e Pulling fs layer 
 28092fc77b15 Pulling fs layer 
 f7982ae831da Pulling fs layer 
 f7982ae831da Downloading [>                                                  ]   24.4kB/2.385MB
 ae1e1e95d63e Downloading [>                                                  ]  168.1kB/16.47MB
 f7982ae831da Verifying Checksum 
 f7982ae831da Download complete 
 28092fc77b15 Downloading [>                                                  ]   98.3kB/9.721MB
 ae1e1e95d63e Downloading [===============>                                   ]  5.079MB/16.47MB
 28092fc77b15 Downloading [================================================>  ]   9.38MB/9.721MB
 28092fc77b15 Verifying Checksum 
 28092fc77b15 Download complete 
 ae1e1e95d63e Verifying Checksum 
 ae1e1e95d63e Download complete 
 ae1e1e95d63e Extracting [>                                                  ]  196.6kB/16.47MB
 ae1e1e95d63e Extracting [=====================>                             ]  7.078MB/16.47MB
 ae1e1e95d63e Extracting [=========================>                         ]  8.454MB/16.47MB
 ae1e1e95d63e Extracting [================================>                  ]  10.62MB/16.47MB
 ae1e1e95d63e Extracting [========================================>          ]  13.37MB/16.47MB
 ae1e1e95d63e Extracting [=================================================> ]  16.32MB/16.47MB
 ae1e1e95d63e Extracting [==================================================>]  16.47MB/16.47MB
 ae1e1e95d63e Pull complete 
 28092fc77b15 Extracting [>                                                  ]   98.3kB/9.721MB
 28092fc77b15 Extracting [==>                                                ]  491.5kB/9.721MB
 28092fc77b15 Extracting [=========>                                         ]  1.868MB/9.721MB
 28092fc77b15 Extracting [===================>                               ]  3.736MB/9.721MB
 28092fc77b15 Extracting [========================>                          ]  4.719MB/9.721MB
 28092fc77b15 Extracting [=============================>                     ]    5.8MB/9.721MB
 28092fc77b15 Extracting [==============================>                    ]  5.898MB/9.721MB
 28092fc77b15 Extracting [===============================>                   ]  6.095MB/9.721MB
 28092fc77b15 Extracting [===================================>               ]   6.98MB/9.721MB
 28092fc77b15 Extracting [========================================>          ]  7.963MB/9.721MB
 28092fc77b15 Extracting [===========================================>       ]  8.454MB/9.721MB
 28092fc77b15 Extracting [=============================================>     ]  8.847MB/9.721MB
 28092fc77b15 Extracting [===============================================>   ]  9.241MB/9.721MB
 28092fc77b15 Extracting [==================================================>]  9.721MB/9.721MB
 28092fc77b15 Pull complete 
 f7982ae831da Extracting [>                                                  ]  32.77kB/2.385MB
 f7982ae831da Extracting [==================================================>]  2.385MB/2.385MB
 f7982ae831da Extracting [==================================================>]  2.385MB/2.385MB
 f7982ae831da Pull complete 
 rollouts1 Pulled 

Success
              
Redeploy
$ docker compose up -d rollouts1
 Container rollouts-a-rollouts1-1  Recreate
 Container rollouts-a-rollouts1-1  Recreated
 Container rollouts-a-rollouts1-1  Starting
 Container rollouts-a-rollouts1-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to rollouts1.a.jpfennell.com (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2071 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts1.a.jpfennell.com
*  start date: Dec 22 22:29:16 2025 GMT
*  expire date: Mar 22 22:29:15 2026 GMT
*  subjectAltName: host "rollouts1.a.jpfennell.com" matched cert's "rollouts1.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: rollouts1.a.jpfennell.com]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x55ade2f4d780)
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts1.a.jpfennell.com
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Fri, 06 Feb 2026 04:11:38 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< 
{ [5 bytes data]

100  194k    0  194k    0     0  3582k      0 --:--:-- --:--:-- --:--:-- 3609k
* Connection #0 to host rollouts1.a.jpfennell.com left intact

Success
              
fix the default poll interval

Build #30. Deployed 42 weeks ago.

Deployment logs
Pull
$ docker compose pull
 rollouts2 Skipped - Image is already being pulled by rollouts1 
 rollouts1 Pulling 
 cf05a52c0235 Already exists 
 82ffabbd5616 Pulling fs layer 
 c1014a70d2ef Pulling fs layer 
 8bbb1478317f Pulling fs layer 
 8bbb1478317f Downloading [>                                                  ]     24kB/2.385MB
 82ffabbd5616 Downloading [>                                                  ]  155.7kB/15.16MB
 8bbb1478317f Verifying Checksum 
 8bbb1478317f Download complete 
 c1014a70d2ef Downloading [>                                                  ]  79.09kB/7.87MB
 82ffabbd5616 Downloading [===============================>                   ]  9.692MB/15.16MB
 c1014a70d2ef Downloading [===>                                               ]  570.1kB/7.87MB
 82ffabbd5616 Download complete 
 82ffabbd5616 Extracting [>                                                  ]  163.8kB/15.16MB
 82ffabbd5616 Extracting [======================>                            ]  6.717MB/15.16MB
 c1014a70d2ef Downloading [======>                                            ]  979.7kB/7.87MB
 82ffabbd5616 Extracting [==============================================>    ]  14.25MB/15.16MB
 82ffabbd5616 Extracting [==================================================>]  15.16MB/15.16MB
 82ffabbd5616 Pull complete 
 c1014a70d2ef Downloading [========>                                          ]  1.389MB/7.87MB
 c1014a70d2ef Downloading [==========>                                        ]  1.635MB/7.87MB
 c1014a70d2ef Downloading [============>                                      ]  1.979MB/7.87MB
 c1014a70d2ef Downloading [===============>                                   ]  2.389MB/7.87MB
 c1014a70d2ef Downloading [=================>                                 ]  2.716MB/7.87MB
 c1014a70d2ef Downloading [===================>                               ]  3.126MB/7.87MB
 c1014a70d2ef Downloading [======================>                            ]  3.617MB/7.87MB
 c1014a70d2ef Downloading [==========================>                        ]  4.109MB/7.87MB
 c1014a70d2ef Downloading [============================>                      ]  4.535MB/7.87MB
 c1014a70d2ef Downloading [===============================>                   ]  4.949MB/7.87MB
 c1014a70d2ef Downloading [==================================>                ]  5.453MB/7.87MB
 c1014a70d2ef Downloading [=====================================>             ]  5.944MB/7.87MB
 c1014a70d2ef Downloading [========================================>          ]  6.436MB/7.87MB
 c1014a70d2ef Downloading [============================================>      ]  7.025MB/7.87MB
 c1014a70d2ef Downloading [================================================>  ]  7.599MB/7.87MB
 c1014a70d2ef Verifying Checksum 
 c1014a70d2ef Download complete 
 c1014a70d2ef Extracting [>                                                  ]   98.3kB/7.87MB
 c1014a70d2ef Extracting [===========>                                       ]  1.868MB/7.87MB
 c1014a70d2ef Extracting [=================================>                 ]   5.21MB/7.87MB
 c1014a70d2ef Extracting [===========================================>       ]  6.881MB/7.87MB
 c1014a70d2ef Extracting [==================================================>]   7.87MB/7.87MB
 c1014a70d2ef Pull complete 
 8bbb1478317f Extracting [>                                                  ]  32.77kB/2.385MB
 8bbb1478317f Extracting [==================================================>]  2.385MB/2.385MB
 8bbb1478317f Extracting [==================================================>]  2.385MB/2.385MB
 8bbb1478317f Pull complete 
 rollouts1 Pulled 

Success
              
Redeploy
$ docker compose up -d rollouts1
 Container rollouts-a-rollouts1-1  Recreate
 Container rollouts-a-rollouts1-1  Recreated
 Container rollouts-a-rollouts1-1  Starting
 Container rollouts-a-rollouts1-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to rollouts1.a.jpfennell.com (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2097 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts1.a.jpfennell.com
*  start date: Apr 28 14:14:24 2025 GMT
*  expire date: Jul 27 14:14:23 2025 GMT
*  subjectAltName: host "rollouts1.a.jpfennell.com" matched cert's "rollouts1.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E6
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: rollouts1.a.jpfennell.com]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x57894e75d780)
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts1.a.jpfennell.com
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Wed, 30 Apr 2025 13:25:57 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 44172    0 44172    0     0   609k      0 --:--:-- --:--:-- --:--:--  616k
* Connection #0 to host rollouts1.a.jpfennell.com left intact

Success
              
Change how wait_minutes behaves on new rollouts agents

Build #29. Deployed 42 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
 rollouts1 Skipped - Image is already being pulled by rollouts2 
 rollouts2 Pulling 
 rollouts2 Pulled 

Success
              
Redeploy
$ /mount/docker compose up -d rollouts1
 Container rollouts-a-rollouts1-1  Running

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to rollouts1.a.jpfennell.com (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2097 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [78 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts1.a.jpfennell.com
*  start date: Apr 28 14:14:24 2025 GMT
*  expire date: Jul 27 14:14:23 2025 GMT
*  subjectAltName: host "rollouts1.a.jpfennell.com" matched cert's "rollouts1.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E6
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: rollouts1.a.jpfennell.com]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x55aaaf020780)
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts1.a.jpfennell.com
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Wed, 30 Apr 2025 13:10:56 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 43418    0 43418    0     0   602k      0 --:--:-- --:--:-- --:--:--  605k
* Connection #0 to host rollouts1.a.jpfennell.com left intact

Success
              
Change how wait_minutes behaves on new rollouts agents

Build #29. Failed 42 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
 rollouts1 Skipped - Image is already being pulled by rollouts2 
 rollouts2 Pulling 
 cf05a52c0235 Already exists 
 4012d49cd1e6 Pulling fs layer 
 71d683275af4 Pulling fs layer 
 053a978d738a Pulling fs layer 
 4012d49cd1e6 Downloading [>                                                  ]  155.5kB/15.16MB
 71d683275af4 Downloading [>                                                  ]  81.72kB/7.87MB
 053a978d738a Downloading [>                                                  ]  25.21kB/2.385MB
 053a978d738a Verifying Checksum 
 053a978d738a Download complete 
 4012d49cd1e6 Downloading [==============>                                    ]  4.535MB/15.16MB
 71d683275af4 Downloading [=====================>                             ]  3.421MB/7.87MB
 71d683275af4 Verifying Checksum 
 71d683275af4 Download complete 
 4012d49cd1e6 Downloading [===============================>                   ]   9.54MB/15.16MB
 4012d49cd1e6 Download complete 
 4012d49cd1e6 Extracting [>                                                  ]  163.8kB/15.16MB
 4012d49cd1e6 Extracting [============>                                      ]  3.768MB/15.16MB
 4012d49cd1e6 Extracting [===========================>                       ]  8.192MB/15.16MB
 4012d49cd1e6 Extracting [=======================================>           ]  12.12MB/15.16MB
 4012d49cd1e6 Extracting [==================================================>]  15.16MB/15.16MB
 4012d49cd1e6 Pull complete 
 71d683275af4 Extracting [>                                                  ]   98.3kB/7.87MB
 71d683275af4 Extracting [=============>                                     ]  2.163MB/7.87MB
 71d683275af4 Extracting [=================================>                 ]  5.308MB/7.87MB
 71d683275af4 Extracting [===========================================>       ]  6.881MB/7.87MB
 71d683275af4 Extracting [==================================================>]   7.87MB/7.87MB
 71d683275af4 Pull complete 
 053a978d738a Extracting [>                                                  ]  32.77kB/2.385MB
 053a978d738a Extracting [==================================================>]  2.385MB/2.385MB
 053a978d738a Extracting [==================================================>]  2.385MB/2.385MB
 053a978d738a Pull complete 
 rollouts2 Pulled 

Success
              
Redeploy
$ /mount/docker compose up -d rollouts1
 Container rollouts-a-rollouts1-1  Recreate
 Container rollouts-a-rollouts1-1  Recreated
 Container rollouts-a-rollouts1-1  Starting
 Container rollouts-a-rollouts1-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to rollouts1.a.jpfennell.com (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2097 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts1.a.jpfennell.com
*  start date: Apr 28 14:14:24 2025 GMT
*  expire date: Jul 27 14:14:23 2025 GMT
*  subjectAltName: host "rollouts1.a.jpfennell.com" matched cert's "rollouts1.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E6
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: rollouts1.a.jpfennell.com]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x64559ceab780)
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts1.a.jpfennell.com
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 502 
< alt-svc: h3=":443"; ma=2592000
< server: Caddy
< content-length: 0
< date: Wed, 30 Apr 2025 13:02:19 GMT
< 
{ [0 bytes data]

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Connection #0 to host rollouts1.a.jpfennell.com left intact
curl: (22) The requested URL returned error: 502

Failure
              
Fix the build

Build #28. Deployed 42 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
 rollouts2 Skipped - Image is already being pulled by rollouts1 
 rollouts1 Pulling 
 cf05a52c0235 Pulling fs layer 
 2b55471b9931 Pulling fs layer 
 d674a98a67ab Pulling fs layer 
 c2f5475c2fb7 Pulling fs layer 
 c2f5475c2fb7 Waiting 
 2b55471b9931 Downloading [>                                                  ]  155.6kB/15.16MB
 cf05a52c0235 Downloading [>                                                  ]  490.7kB/48.49MB
 d674a98a67ab Downloading [>                                                  ]  81.72kB/7.87MB
 2b55471b9931 Downloading [===================>                               ]   6.01MB/15.16MB
 cf05a52c0235 Downloading [=========>                                         ]  8.854MB/48.49MB
 d674a98a67ab Downloading [==================================>                ]  5.428MB/7.87MB
 d674a98a67ab Verifying Checksum 
 d674a98a67ab Download complete 
 2b55471b9931 Downloading [========================================>          ]  12.33MB/15.16MB
 2b55471b9931 Verifying Checksum 
 2b55471b9931 Download complete 
 cf05a52c0235 Downloading [===============>                                   ]  15.25MB/48.49MB
 cf05a52c0235 Downloading [=========================>                         ]  25.11MB/48.49MB
 c2f5475c2fb7 Downloading [>                                                  ]  23.87kB/2.383MB
 c2f5475c2fb7 Verifying Checksum 
 c2f5475c2fb7 Download complete 
 cf05a52c0235 Downloading [==============================>                    ]  30.05MB/48.49MB
 cf05a52c0235 Downloading [=====================================>             ]  35.95MB/48.49MB
 cf05a52c0235 Downloading [===============================================>   ]  46.29MB/48.49MB
 cf05a52c0235 Verifying Checksum 
 cf05a52c0235 Download complete 
 cf05a52c0235 Extracting [>                                                  ]  491.5kB/48.49MB
 cf05a52c0235 Extracting [==>                                                ]  1.966MB/48.49MB
 cf05a52c0235 Extracting [====>                                              ]  4.424MB/48.49MB
 cf05a52c0235 Extracting [=====>                                             ]  5.407MB/48.49MB
 cf05a52c0235 Extracting [=======>                                           ]  7.373MB/48.49MB
 cf05a52c0235 Extracting [=========>                                         ]  8.847MB/48.49MB
 cf05a52c0235 Extracting [=========>                                         ]  9.339MB/48.49MB
 cf05a52c0235 Extracting [==========>                                        ]   9.83MB/48.49MB
 cf05a52c0235 Extracting [===========>                                       ]  10.81MB/48.49MB
 cf05a52c0235 Extracting [============>                                      ]   11.8MB/48.49MB
 cf05a52c0235 Extracting [==============>                                    ]  13.76MB/48.49MB
 cf05a52c0235 Extracting [=================>                                 ]   17.2MB/48.49MB
 cf05a52c0235 Extracting [=====================>                             ]  20.64MB/48.49MB
 cf05a52c0235 Extracting [======================>                            ]  22.12MB/48.49MB
 cf05a52c0235 Extracting [========================>                          ]  23.59MB/48.49MB
 cf05a52c0235 Extracting [========================>                          ]  24.08MB/48.49MB
 cf05a52c0235 Extracting [==========================>                        ]  26.05MB/48.49MB
 cf05a52c0235 Extracting [===========================>                       ]  27.03MB/48.49MB
 cf05a52c0235 Extracting [=============================>                     ]  28.51MB/48.49MB
 cf05a52c0235 Extracting [==============================>                    ]  29.49MB/48.49MB
 cf05a52c0235 Extracting [===============================>                   ]  30.97MB/48.49MB
 cf05a52c0235 Extracting [================================>                  ]  31.95MB/48.49MB
 cf05a52c0235 Extracting [==================================>                ]  33.42MB/48.49MB
 cf05a52c0235 Extracting [===================================>               ]  34.41MB/48.49MB
 cf05a52c0235 Extracting [====================================>              ]  35.39MB/48.49MB
 cf05a52c0235 Extracting [=====================================>             ]  36.37MB/48.49MB
 cf05a52c0235 Extracting [======================================>            ]  36.86MB/48.49MB
 cf05a52c0235 Extracting [=======================================>           ]  37.85MB/48.49MB
 cf05a52c0235 Extracting [========================================>          ]  38.83MB/48.49MB
 cf05a52c0235 Extracting [=========================================>         ]  39.81MB/48.49MB
 cf05a52c0235 Extracting [==========================================>        ]   40.8MB/48.49MB
 cf05a52c0235 Extracting [===========================================>       ]  41.78MB/48.49MB
 cf05a52c0235 Extracting [============================================>      ]  42.76MB/48.49MB
 cf05a52c0235 Extracting [=============================================>     ]  44.24MB/48.49MB
 cf05a52c0235 Extracting [==============================================>    ]  45.22MB/48.49MB
 cf05a52c0235 Extracting [===============================================>   ]   46.2MB/48.49MB
 cf05a52c0235 Extracting [=================================================> ]  47.68MB/48.49MB
 cf05a52c0235 Extracting [==================================================>]  48.49MB/48.49MB
 cf05a52c0235 Pull complete 
 2b55471b9931 Extracting [>                                                  ]  163.8kB/15.16MB
 2b55471b9931 Extracting [=========>                                         ]  2.785MB/15.16MB
 2b55471b9931 Extracting [==================>                                ]  5.571MB/15.16MB
 2b55471b9931 Extracting [===========================>                       ]  8.192MB/15.16MB
 2b55471b9931 Extracting [===============================>                   ]  9.503MB/15.16MB
 2b55471b9931 Extracting [====================================>              ]  11.14MB/15.16MB
 2b55471b9931 Extracting [==========================================>        ]  12.94MB/15.16MB
 2b55471b9931 Extracting [=================================================> ]  14.91MB/15.16MB
 2b55471b9931 Extracting [==================================================>]  15.16MB/15.16MB
 2b55471b9931 Pull complete 
 d674a98a67ab Extracting [>                                                  ]   98.3kB/7.87MB
 d674a98a67ab Extracting [===>                                               ]  491.5kB/7.87MB
 d674a98a67ab Extracting [===========>                                       ]  1.868MB/7.87MB
 d674a98a67ab Extracting [==========================>                        ]  4.227MB/7.87MB
 d674a98a67ab Extracting [==================================>                ]  5.407MB/7.87MB
 d674a98a67ab Extracting [=========================================>         ]  6.488MB/7.87MB
 d674a98a67ab Extracting [==============================================>    ]  7.274MB/7.87MB
 d674a98a67ab Extracting [================================================>  ]  7.569MB/7.87MB
 d674a98a67ab Extracting [==================================================>]   7.87MB/7.87MB
 d674a98a67ab Pull complete 
 c2f5475c2fb7 Extracting [>                                                  ]  32.77kB/2.383MB
 c2f5475c2fb7 Extracting [==================================================>]  2.383MB/2.383MB
 c2f5475c2fb7 Extracting [==================================================>]  2.383MB/2.383MB
 c2f5475c2fb7 Pull complete 
 rollouts1 Pulled 

Success
              
Redeploy
$ /mount/docker compose up -d rollouts1
 Container rollouts-a-rollouts1-1  Recreate
 Container rollouts-a-rollouts1-1  Recreated
 Container rollouts-a-rollouts1-1  Starting
 Container rollouts-a-rollouts1-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to rollouts1.a.jpfennell.com (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2097 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [78 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts1.a.jpfennell.com
*  start date: Apr 28 14:14:24 2025 GMT
*  expire date: Jul 27 14:14:23 2025 GMT
*  subjectAltName: host "rollouts1.a.jpfennell.com" matched cert's "rollouts1.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E6
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: rollouts1.a.jpfennell.com]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x63ed4db1d780)
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts1.a.jpfennell.com
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Tue, 29 Apr 2025 13:07:13 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 39590    0 39590    0     0   692k      0 --:--:-- --:--:-- --:--:--  702k
* Connection #0 to host rollouts1.a.jpfennell.com left intact

Success
              
Update Docker image

Build #26. Deployed 42 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
 rollouts2 Skipped - Image is already being pulled by rollouts1 
 rollouts1 Pulling 
 rollouts1 Pulled 

Success
              
Redeploy
$ /mount/docker compose up -d rollouts1
 Container rollouts-a-rollouts1-1  Running

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to rollouts1.a.jpfennell.com (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2097 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [78 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts1.a.jpfennell.com
*  start date: Apr 28 14:14:24 2025 GMT
*  expire date: Jul 27 14:14:23 2025 GMT
*  subjectAltName: host "rollouts1.a.jpfennell.com" matched cert's "rollouts1.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E6
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: rollouts1.a.jpfennell.com]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x64f1f7366780)
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts1.a.jpfennell.com
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Tue, 29 Apr 2025 12:57:03 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 39085    0 39085    0     0   413k      0 --:--:-- --:--:-- --:--:--  414k
* Connection #0 to host rollouts1.a.jpfennell.com left intact

Success
              
Project configuration
{
  "auth_token": "",
  "branch": "main",
  "name": "rollouts1.a.jpfennell.com",
  "paused": false,
  "repo": "github.com/jamespfennell/rollouts",
  "retention": 10,
  "steps": [
    {
      "name": "Pull",
      "run": "docker compose pull"
    },
    {
      "name": "Redeploy",
      "run": "docker compose up -d rollouts1"
    },
    {
      "name": "Wait for 5 seconds",
      "run": "sleep 5"
    },
    {
      "name": "Ping rollouts1.a.jpfennell.com",
      "run": "curl --fail-with-body -v https://rollouts1.a.jpfennell.com --output /dev/null"
    }
  ],
  "wait_minutes": 0,
  "working_directory": "/home/james/rollouts-a"
}

GitHub client

Rate limiting data

resource used/limit resetting
core 0/60 in 6 minutes