Skip to content

Commit b68fcfa

Browse files
Merge branch 'main' into blobless-checkout-as-default
2 parents 2f56587 + 4509ceb commit b68fcfa

File tree

8 files changed

+327
-362
lines changed

8 files changed

+327
-362
lines changed
198 KB
Loading
157 KB
Loading

docs/guides/modules/security/pages/audit-logs.adoc

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,86 @@ After setting up audit log streaming follow these steps to validate the setup wa
199199
. Set up appropriate alerts for connection failures or delivery interruptions.
200200

201201

202+
=== Stream to S3-compatible storage
203+
204+
TIP: Select btn:[Other S3-compatible service] in the streaming dialog to connect to an S3-compatible endpoint such as MinIO.
205+
206+
207+
The setup steps vary by provider. At a high level you will:
208+
209+
==== 1. Prepare your S3-compatible destination
210+
211+
. Create a bucket for audit logs in your S3-compatible service.
212+
. Create or identify a role/principal that CircleCI can assume using OIDC. The exact process and identifier format depend on your provider. Examples include an AWS-style ARN (for example, `arn:aws:iam::...:role/...`) or a provider-specific role identifier (for example, MinIO `arn:minio:iam:::role/...`).
213+
. Grant the role/principal permission to write objects to your bucket (minimum required: `s3:PutObject` on `<your-bucket>/*`). For example:
214+
+
215+
[source,json]
216+
----
217+
// minio S3 example policy
218+
{
219+
"Version": "2012-10-17",
220+
"Statement": [
221+
{
222+
"Effect": "Allow",
223+
"Action": [
224+
"s3:PutObject"
225+
],
226+
"Resource": [
227+
"arn:minio:s3:::<bucket-name>/*"
228+
]
229+
}
230+
]
231+
}
232+
----
233+
+
234+
235+
236+
==== 2. Authentication and authorization considerations
237+
238+
**Key OIDC configuration details**:
239+
240+
When setting up the OIDC Identity Provider to trust CircleCI, use these parameters:
241+
242+
* **OpenID Configuration URL (Issuer URL):**
243+
`https://oidc.circleci.com/org/**<ORG_ID>/**.well-known/openid-configuration`
244+
*(Remember to substitute your actual CircleCI Organization ID.)*
245+
246+
* **OpenID Client ID (Audience):**
247+
Your **CircleCI Organization ID** (the `<ORG_ID>` value).
248+
249+
* **Scope:**
250+
Use the standard required scope: `openid`.
251+
252+
**Validation and network requirements**:
253+
254+
* **Server Endpoint Connectivity:**
255+
The **AWS S3 compatible server**, acting as the token validator, **must be able to reach** the CircleCI OIDC Provider endpoint to fetch the public keys required to **validate the token's cryptographic signature**.
256+
257+
* **Provider Validation:**
258+
Your OIDC provider configuration must be set up to accept and successfully validate CircleCI's OIDC tokens for the configured **role or principal** you intend to grant access to within your storage solution.
259+
260+
NOTE: Ensure your **AWS S3 compatible server's** network configuration allows necessary outgoing connections to the internet, specifically to `oidc.circleci.com`, for token validation to succeed.
261+
262+
==== 3. Configure CircleCI to stream to your S3-compatible service
263+
264+
. Go to the link:https://app.circleci.com/[CircleCI web app] and navigate to menu:Organization Settings[Security].
265+
. In menu:Audit Logs[Streaming audit logs], select btn:[Stream audit logs].
266+
. Choose btn:[Other S3-compatible service].
267+
. Confirm that you have completed the prerequisites by selecting btn:[Continue].
268+
+
269+
image::guides:ROOT:setup-s3-compatible-audit-logs.png[Set up S3-compatible storage for streaming]
270+
. Fill out the fields as follows:
271+
.. **Region**: Optional. Many S3-compatible providers default to `us-east-1` if not set.
272+
.. **S3 Bucket Name**: The exact name of the bucket you created.
273+
.. **Role ARN**: The role identifier recognized by your provider (for example, a provider-specific role ID/ARN).
274+
.. **Endpoint**: The HTTPS endpoint of your S3-compatible API (for example, `https://s3.<region>.<provider-domain>` or your custom host and port).
275+
. The configuration form appears as follows:
276+
+
277+
image::guides:ROOT:form-s3-compatible-audit-logs.png[Connect CircleCI to S3-compatible storage]
278+
. Select btn:[Connect CircleCI to S3-compatible service].
279+
280+
When the connection is validated, the **Status** will show image:guides:ROOT:icons/passed.svg[passed icon, role="no-border"] **Connected**. Creating a streaming configuration pushes an empty file named `circleci_connectivity_test_<timestamp>` to the configured bucket to verify permissions.
281+
202282
=== Manage active streams
203283

204284
Once configured, you can view and manage audit log streams. The following options are available to you in the CircleCI web app:

go.mod

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ module github.com/circleci/circleci-docs
33
go 1.24.4
44

55
require (
6-
github.com/aws/aws-sdk-go-v2 v1.39.2
7-
github.com/aws/aws-sdk-go-v2/config v1.31.12
8-
github.com/aws/aws-sdk-go-v2/service/s3 v1.88.4
6+
github.com/aws/aws-sdk-go-v2 v1.39.6
7+
github.com/aws/aws-sdk-go-v2/config v1.31.17
8+
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.2
99
github.com/goccy/go-yaml v1.18.0
1010
github.com/hashicorp/go-cleanhttp v0.5.2
1111
github.com/hashicorp/go-retryablehttp v0.7.8
@@ -40,21 +40,21 @@ require (
4040
github.com/alingse/nilnesserr v0.2.0 // indirect
4141
github.com/ashanbrown/forbidigo/v2 v2.1.0 // indirect
4242
github.com/ashanbrown/makezero/v2 v2.0.1 // indirect
43-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 // indirect
44-
github.com/aws/aws-sdk-go-v2/credentials v1.18.16 // indirect
45-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9 // indirect
46-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9 // indirect
47-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9 // indirect
48-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
49-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.9 // indirect
50-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 // indirect
51-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.0 // indirect
52-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9 // indirect
53-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9 // indirect
54-
github.com/aws/aws-sdk-go-v2/service/sso v1.29.6 // indirect
55-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1 // indirect
56-
github.com/aws/aws-sdk-go-v2/service/sts v1.38.6 // indirect
57-
github.com/aws/smithy-go v1.23.0 // indirect
43+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3 // indirect
44+
github.com/aws/aws-sdk-go-v2/credentials v1.18.21 // indirect
45+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 // indirect
46+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 // indirect
47+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 // indirect
48+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
49+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13 // indirect
50+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 // indirect
51+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.4 // indirect
52+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 // indirect
53+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.13 // indirect
54+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 // indirect
55+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 // indirect
56+
github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 // indirect
57+
github.com/aws/smithy-go v1.23.2 // indirect
5858
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
5959
github.com/badoux/checkmail v1.2.1 // indirect
6060
github.com/beorn7/perks v1.0.1 // indirect

go.sum

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -94,42 +94,42 @@ github.com/ashanbrown/forbidigo/v2 v2.1.0 h1:NAxZrWqNUQiDz19FKScQ/xvwzmij6BiOw3S
9494
github.com/ashanbrown/forbidigo/v2 v2.1.0/go.mod h1:0zZfdNAuZIL7rSComLGthgc/9/n2FqspBOH90xlCHdA=
9595
github.com/ashanbrown/makezero/v2 v2.0.1 h1:r8GtKetWOgoJ4sLyUx97UTwyt2dO7WkGFHizn/Lo8TY=
9696
github.com/ashanbrown/makezero/v2 v2.0.1/go.mod h1:kKU4IMxmYW1M4fiEHMb2vc5SFoPzXvgbMR9gIp5pjSw=
97-
github.com/aws/aws-sdk-go-v2 v1.39.2 h1:EJLg8IdbzgeD7xgvZ+I8M1e0fL0ptn/M47lianzth0I=
98-
github.com/aws/aws-sdk-go-v2 v1.39.2/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY=
99-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 h1:i8p8P4diljCr60PpJp6qZXNlgX4m2yQFpYk+9ZT+J4E=
100-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1/go.mod h1:ddqbooRZYNoJ2dsTwOty16rM+/Aqmk/GOXrK8cg7V00=
101-
github.com/aws/aws-sdk-go-v2/config v1.31.12 h1:pYM1Qgy0dKZLHX2cXslNacbcEFMkDMl+Bcj5ROuS6p8=
102-
github.com/aws/aws-sdk-go-v2/config v1.31.12/go.mod h1:/MM0dyD7KSDPR+39p9ZNVKaHDLb9qnfDurvVS2KAhN8=
103-
github.com/aws/aws-sdk-go-v2/credentials v1.18.16 h1:4JHirI4zp958zC026Sm+V4pSDwW4pwLefKrc0bF2lwI=
104-
github.com/aws/aws-sdk-go-v2/credentials v1.18.16/go.mod h1:qQMtGx9OSw7ty1yLclzLxXCRbrkjWAM7JnObZjmCB7I=
105-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9 h1:Mv4Bc0mWmv6oDuSWTKnk+wgeqPL5DRFu5bQL9BGPQ8Y=
106-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9/go.mod h1:IKlKfRppK2a1y0gy1yH6zD+yX5uplJ6UuPlgd48dJiQ=
107-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9 h1:se2vOWGD3dWQUtfn4wEjRQJb1HK1XsNIt825gskZ970=
108-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9/go.mod h1:hijCGH2VfbZQxqCDN7bwz/4dzxV+hkyhjawAtdPWKZA=
109-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9 h1:6RBnKZLkJM4hQ+kN6E7yWFveOTg8NLPHAkqrs4ZPlTU=
110-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9/go.mod h1:V9rQKRmK7AWuEsOMnHzKj8WyrIir1yUJbZxDuZLFvXI=
111-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
112-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
113-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.9 h1:w9LnHqTq8MEdlnyhV4Bwfizd65lfNCNgdlNC6mM5paE=
114-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.9/go.mod h1:LGEP6EK4nj+bwWNdrvX/FnDTFowdBNwcSPuZu/ouFys=
115-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM=
116-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8=
117-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.0 h1:X0FveUndcZ3lKbSpIC6rMYGRiQTcUVRNH6X4yYtIrlU=
118-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.0/go.mod h1:IWjQYlqw4EX9jw2g3qnEPPWvCE6bS8fKzhMed1OK7c8=
119-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9 h1:5r34CgVOD4WZudeEKZ9/iKpiT6cM1JyEROpXjOcdWv8=
120-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9/go.mod h1:dB12CEbNWPbzO2uC6QSWHteqOg4JfBVJOojbAoAUb5I=
121-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9 h1:wuZ5uW2uhJR63zwNlqWH2W4aL4ZjeJP3o92/W+odDY4=
122-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9/go.mod h1:/G58M2fGszCrOzvJUkDdY8O9kycodunH4VdT5oBAqls=
123-
github.com/aws/aws-sdk-go-v2/service/s3 v1.88.4 h1:mUI3b885qJgfqKDUSj6RgbRqLdX0wGmg8ruM03zNfQA=
124-
github.com/aws/aws-sdk-go-v2/service/s3 v1.88.4/go.mod h1:6v8ukAxc7z4x4oBjGUsLnH7KGLY9Uhcgij19UJNkiMg=
125-
github.com/aws/aws-sdk-go-v2/service/sso v1.29.6 h1:A1oRkiSQOWstGh61y4Wc/yQ04sqrQZr1Si/oAXj20/s=
126-
github.com/aws/aws-sdk-go-v2/service/sso v1.29.6/go.mod h1:5PfYspyCU5Vw1wNPsxi15LZovOnULudOQuVxphSflQA=
127-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1 h1:5fm5RTONng73/QA73LhCNR7UT9RpFH3hR6HWL6bIgVY=
128-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1/go.mod h1:xBEjWD13h+6nq+z4AkqSfSvqRKFgDIQeaMguAJndOWo=
129-
github.com/aws/aws-sdk-go-v2/service/sts v1.38.6 h1:p3jIvqYwUZgu/XYeI48bJxOhvm47hZb5HUQ0tn6Q9kA=
130-
github.com/aws/aws-sdk-go-v2/service/sts v1.38.6/go.mod h1:WtKK+ppze5yKPkZ0XwqIVWD4beCwv056ZbPQNoeHqM8=
131-
github.com/aws/smithy-go v1.23.0 h1:8n6I3gXzWJB2DxBDnfxgBaSX6oe0d/t10qGz7OKqMCE=
132-
github.com/aws/smithy-go v1.23.0/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
97+
github.com/aws/aws-sdk-go-v2 v1.39.6 h1:2JrPCVgWJm7bm83BDwY5z8ietmeJUbh3O2ACnn+Xsqk=
98+
github.com/aws/aws-sdk-go-v2 v1.39.6/go.mod h1:c9pm7VwuW0UPxAEYGyTmyurVcNrbF6Rt/wixFqDhcjE=
99+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3 h1:DHctwEM8P8iTXFxC/QK0MRjwEpWQeM9yzidCRjldUz0=
100+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.3/go.mod h1:xdCzcZEtnSTKVDOmUZs4l/j3pSV6rpo1WXl5ugNsL8Y=
101+
github.com/aws/aws-sdk-go-v2/config v1.31.17 h1:QFl8lL6RgakNK86vusim14P2k8BFSxjvUkcWLDjgz9Y=
102+
github.com/aws/aws-sdk-go-v2/config v1.31.17/go.mod h1:V8P7ILjp/Uef/aX8TjGk6OHZN6IKPM5YW6S78QnRD5c=
103+
github.com/aws/aws-sdk-go-v2/credentials v1.18.21 h1:56HGpsgnmD+2/KpG0ikvvR8+3v3COCwaF4r+oWwOeNA=
104+
github.com/aws/aws-sdk-go-v2/credentials v1.18.21/go.mod h1:3YELwedmQbw7cXNaII2Wywd+YY58AmLPwX4LzARgmmA=
105+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13 h1:T1brd5dR3/fzNFAQch/iBKeX07/ffu/cLu+q+RuzEWk=
106+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.13/go.mod h1:Peg/GBAQ6JDt+RoBf4meB1wylmAipb7Kg2ZFakZTlwk=
107+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13 h1:a+8/MLcWlIxo1lF9xaGt3J/u3yOZx+CdSveSNwjhD40=
108+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.13/go.mod h1:oGnKwIYZ4XttyU2JWxFrwvhF6YKiK/9/wmE3v3Iu9K8=
109+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13 h1:HBSI2kDkMdWz4ZM7FjwE7e/pWDEZ+nR95x8Ztet1ooY=
110+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.13/go.mod h1:YE94ZoDArI7awZqJzBAZ3PDD2zSfuP7w6P2knOzIn8M=
111+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk=
112+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc=
113+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13 h1:eg/WYAa12vqTphzIdWMzqYRVKKnCboVPRlvaybNCqPA=
114+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.13/go.mod h1:/FDdxWhz1486obGrKKC1HONd7krpk38LBt+dutLcN9k=
115+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3 h1:x2Ibm/Af8Fi+BH+Hsn9TXGdT+hKbDd5XOTZxTMxDk7o=
116+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.3/go.mod h1:IW1jwyrQgMdhisceG8fQLmQIydcT/jWY21rFhzgaKwo=
117+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.4 h1:NvMjwvv8hpGUILarKw7Z4Q0w1H9anXKsesMxtw++MA4=
118+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.4/go.mod h1:455WPHSwaGj2waRSpQp7TsnpOnBfw8iDfPfbwl7KPJE=
119+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13 h1:kDqdFvMY4AtKoACfzIGD8A0+hbT41KTKF//gq7jITfM=
120+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.13/go.mod h1:lmKuogqSU3HzQCwZ9ZtcqOc5XGMqtDK7OIc2+DxiUEg=
121+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.13 h1:zhBJXdhWIFZ1acfDYIhu4+LCzdUS2Vbcum7D01dXlHQ=
122+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.13/go.mod h1:JaaOeCE368qn2Hzi3sEzY6FgAZVCIYcC2nwbro2QCh8=
123+
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.2 h1:xgBWsgaeUESl8A8k80p6yBdexMWDVeiDmJ/pkjohJ7c=
124+
github.com/aws/aws-sdk-go-v2/service/s3 v1.89.2/go.mod h1:+wArOOrcHUevqdto9k1tKOF5++YTe9JEcPSc9Tx2ZSw=
125+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.1 h1:0JPwLz1J+5lEOfy/g0SURC9cxhbQ1lIMHMa+AHZSzz0=
126+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.1/go.mod h1:fKvyjJcz63iL/ftA6RaM8sRCtN4r4zl4tjL3qw5ec7k=
127+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5 h1:OWs0/j2UYR5LOGi88sD5/lhN6TDLG6SfA7CqsQO9zF0=
128+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.5/go.mod h1:klO+ejMvYsB4QATfEOIXk8WAEwN4N0aBfJpvC+5SZBo=
129+
github.com/aws/aws-sdk-go-v2/service/sts v1.39.1 h1:mLlUgHn02ue8whiR4BmxxGJLR2gwU6s6ZzJ5wDamBUs=
130+
github.com/aws/aws-sdk-go-v2/service/sts v1.39.1/go.mod h1:E19xDjpzPZC7LS2knI9E6BaRFDK43Eul7vd6rSq2HWk=
131+
github.com/aws/smithy-go v1.23.2 h1:Crv0eatJUQhaManss33hS5r40CG3ZFH+21XSkqMrIUM=
132+
github.com/aws/smithy-go v1.23.2/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
133133
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
134134
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
135135
github.com/badoux/checkmail v1.2.1 h1:TzwYx5pnsV6anJweMx2auXdekBwGr/yt1GgalIx9nBQ=

0 commit comments

Comments
 (0)