Rollouts agent

rollouts2.d.jpfennell.com

github.com/jamespfennell/rollouts

Projects

rollouts1.d.jpfennell.com

github.com/jamespfennell/rollouts

Last deployed 8 weeks ago.

No pending deployment.

Most recent deployments
Fix GitHub rate limit bug

Build #34. Deployed 8 weeks ago.

Deployment logs
Pull
$ docker compose pull
 Image jamespfennell/rollouts:latest Pulling 
 6546c1e3b4ce Pulling fs layer 
 a012e3bc64f2 Pulling fs layer 
 3cbe79578828 Pulling fs layer 
 a012e3bc64f2 Downloading [===============>                                   ]  5.243MB/16.47MB
 3cbe79578828 Downloading [=====================>                             ]  4.194MB/9.721MB
 6546c1e3b4ce Download complete 
 a012e3bc64f2 Download complete 
 3cbe79578828 Download complete 
 2c18d2d15aaf Download complete 
 a012e3bc64f2 Extracting 1 s
 a012e3bc64f2 Extracting 1 s
 a012e3bc64f2 Pull complete 
 3cbe79578828 Extracting 1 s
 3cbe79578828 Extracting 1 s
 3cbe79578828 Extracting 1 s
 6546c1e3b4ce Pull complete 
 3cbe79578828 Pull complete 
 Image jamespfennell/rollouts:latest Pulled 

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

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.d.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.d.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.d.jpfennell.com:443 was resolved.
* IPv6: (none)
* IPv4: 178.156.244.46
*   Trying 178.156.244.46: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):
{ [19 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.d.jpfennell.com
*  start date: Feb  8 23:23:40 2026 GMT
*  expire date: May  9 23:23:39 2026 GMT
*  subjectAltName: host "rollouts1.d.jpfennell.com" matched cert's "rollouts1.d.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.d.jpfennell.com (178.156.244.46) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://rollouts1.d.jpfennell.com/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: rollouts1.d.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.d.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:44:09 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< content-length: 15097
< 
} [5 bytes data]

100 15097  100 15097    0     0   620k      0 --:--:-- --:--:-- --:--:--  641k
* Connection #0 to host rollouts1.d.jpfennell.com left intact

Success
              
Add GitHub etag debugging

Build #33. Deployed 8 weeks ago.

Deployment logs
Pull
$ docker compose pull
 Image jamespfennell/rollouts:latest Pulling 
 d753285454a1 Pulling fs layer 
 708f69f5f4ed Pulling fs layer 
 b513af4fcd44 Pulling fs layer 
 d753285454a1 Download complete 
 708f69f5f4ed Downloading [======================================>            ]  12.58MB/16.47MB
 b513af4fcd44 Download complete 
 708f69f5f4ed Download complete 
 1f530a18bb73 Download complete 
 708f69f5f4ed Extracting 1 s
 708f69f5f4ed Extracting 1 s
 b513af4fcd44 Extracting 1 s
 708f69f5f4ed Pull complete 
 b513af4fcd44 Extracting 1 s
 b513af4fcd44 Extracting 1 s
 d753285454a1 Pull complete 
 b513af4fcd44 Pull complete 
 Image jamespfennell/rollouts:latest Pulled 

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

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.d.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.d.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.d.jpfennell.com:443 was resolved.
* IPv6: (none)
* IPv4: 178.156.244.46
*   Trying 178.156.244.46: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):
{ [19 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.d.jpfennell.com
*  start date: Feb  8 23:23:40 2026 GMT
*  expire date: May  9 23:23:39 2026 GMT
*  subjectAltName: host "rollouts1.d.jpfennell.com" matched cert's "rollouts1.d.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.d.jpfennell.com (178.156.244.46) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://rollouts1.d.jpfennell.com/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: rollouts1.d.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.d.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:29:05 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< content-length: 10637
< 
{ [5 bytes data]

100 10637  100 10637    0     0   156k      0 --:--:-- --:--:-- --:--:--  157k
* Connection #0 to host rollouts1.d.jpfennell.com left intact

Success
              
Make email sending best effort

Build #32. Deployed 8 weeks ago.

Deployment logs
Pull
$ docker compose pull
 Image jamespfennell/rollouts:latest Pulling 
 Image jamespfennell/rollouts:latest Pulled 

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

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts1.d.jpfennell.com
$ curl --fail-with-body -v https://rollouts1.d.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.d.jpfennell.com:443 was resolved.
* IPv6: (none)
* IPv4: 178.156.244.46
*   Trying 178.156.244.46: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):
{ [19 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.d.jpfennell.com
*  start date: Feb  8 23:23:40 2026 GMT
*  expire date: May  9 23:23:39 2026 GMT
*  subjectAltName: host "rollouts1.d.jpfennell.com" matched cert's "rollouts1.d.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.d.jpfennell.com (178.156.244.46) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://rollouts1.d.jpfennell.com/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: rollouts1.d.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.d.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 02:47:04 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< content-length: 6271
< 
{ [5 bytes data]

100  6271  100  6271    0     0  21790      0 --:--:-- --:--:-- --:--:-- 21850
* Connection #0 to host rollouts1.d.jpfennell.com left intact

Success
              
Project configuration
{
  "auth_token": "",
  "branch": "main",
  "name": "rollouts1.d.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.d.jpfennell.com",
      "run": "curl --fail-with-body -v https://rollouts1.d.jpfennell.com --output /dev/null"
    }
  ],
  "wait_minutes": 0,
  "working_directory": "/home/james/rollouts-d"
}

GitHub client

Rate limiting data

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