hasMail
hasCorp的集中式电子邮件自动化服务。
在本地运行
一个完整的例子:
go run cmd/mailservice/main.go -bypass -port=2564
认证
SendGrid
将你的SendGrid API密钥存储在 repo根部的credentials.json (这在.gitignore )。看一下./credentials.json.template,作为一个例子。
{
"SENDGRID_API_KEY": "Your API key goes here",
"FROM_NAME": "Friendly Name",
"FROM_ADDR": "some-email@fake.dev"
}
如果你不想把凭证和配置存储在项目 repo 中的 JSON 文件中,你可以用相同的密钥名称暴露环境变量。
# for Linux/Unix systems
export SENDGRID_API_KEY="Your API key goes here",
export FROM_NAME="Friendly Name",
export FROM_ADDR="some-email@fake.dev"
# for Windows systems
set SENDGRID_API_KEY="Your API key goes here",
set FROM_NAME="Friendly Name",
set FROM_ADDR="some-email@fake.dev"
绕过客户端认证
对于本地开发,做一些测试是有意义的,不需要硬性依赖认证服务来验证传入的请求。 在本地运行时,传入-bypass 标志以忽略客户端认证验证
go run cmd/mailservice/main.go -bypass
侦听端口
默认情况下,HTTP服务器的监听端口是8000 。这可以在运行时通过-port 标志来改变:
go run cmd/mailservice/main.go -bypass -port=2564
构建
你可以通过运行在本地构建该项目:
go build .
或者你可以使用 repo 根目录下的Dockerfile 来构建一个镜像:
docker build -t hascorp/hasmail -f Dockerfile .
运行
你可以使用go 在本地运行该项目:
go run ./cmd/mailservice
或者你可以使用构建的Docker镜像来运行一个容器:
docker run -it -p 8000:8000 hascorp/hasmail
测试
用cURL或你喜欢的客户端平移服务器:
# ping healthcheck endpoint
发布
管线
TODO:这个
Dockerize
用生产的Dockerfile进行构建:
docker build -t hascorp/hasmail-prod -f Dockerfile.production .
这可以像常规Dockerfile一样在本地进行测试:
docker run -it -p 8000:8000 hascorp/hasmail-prod
测试
单元测试
在本地运行单元测试:
# ping healthcheck endpoint
curl localhost:8000/
# verify routes work with no-op endpoint
curl -d '{"a": "b"}' -H 'Content-Type: application/json' localhost:8000/mail/noop
# send a sample mail
curl -d '{"name": "Hank Pecker", "vars": {"foo": "bar"}, "recipient": "hank@hascorp.dev"}' -H 'Content-Type: application/json' localhost:8000/mail/sample