docs: add deploy-static-site README
This commit is contained in:
parent
4b1bbce9af
commit
52015863a8
1 changed files with 75 additions and 0 deletions
75
deploy-static-site/README.md
Normal file
75
deploy-static-site/README.md
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
# deploy-static-site
|
||||
|
||||
Builds a Nix flake site, uploads a tarball to S3, and deploys it via Nomad using a shared `static-server` container image. Content is fetched from S3 at container startup — nothing is baked into the image.
|
||||
|
||||
## Usage
|
||||
|
||||
```yaml
|
||||
- uses: https://git.toph.so/toph/ci-actions/deploy-static-site@main
|
||||
with:
|
||||
domain: example.com
|
||||
env:
|
||||
NOMAD_TOKEN: ${{ secrets.NOMAD_TOKEN }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_KEY }}
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
| Input | Required | Default | Description |
|
||||
|---|---|---|---|
|
||||
| `domain` | yes | — | Domain the site is served at (e.g. `toph.so`) |
|
||||
| `flake-output` | no | `default` | Flake output to build (e.g. `docs`) |
|
||||
| `nomad-addr` | no | `http://172.17.0.1:4646` | Nomad API address |
|
||||
| `server-image` | no | `registry.toph.so/static-server:latest` | OCI image for the static server |
|
||||
| `datacenter` | no | `contabo` | Nomad datacenter |
|
||||
| `s3-endpoint` | no | `https://s3.toph.so` | S3 endpoint URL |
|
||||
| `s3-bucket` | no | `nix-cache` | S3 bucket for site tarballs |
|
||||
| `smoke-test` | no | `true` | Run a smoke test after deploy |
|
||||
|
||||
## Environment Variables
|
||||
|
||||
| Variable | Required | Description |
|
||||
|---|---|---|
|
||||
| `NOMAD_TOKEN` | yes | Nomad ACL token with deploy access to `static-sites` namespace |
|
||||
| `AWS_ACCESS_KEY_ID` | yes | S3 access key |
|
||||
| `AWS_SECRET_ACCESS_KEY` | yes | S3 secret key |
|
||||
| `NIX_SIGNING_KEY` | no | If set, signs and pushes the Nix closure to the S3 binary cache (speeds up future builds) |
|
||||
|
||||
## Infrastructure Requirements
|
||||
|
||||
- Nomad namespace `static-sites` must exist
|
||||
- `registry.toph.so/static-server:latest` must be pushed (see `images/flake.nix` and the `build-static-server` workflow)
|
||||
- S3 bucket (`nix-cache` by default) must exist and be writable with the supplied credentials
|
||||
|
||||
## Site Flake Requirements
|
||||
|
||||
The site repo's flake must expose a package output that produces a directory of static files:
|
||||
|
||||
```nix
|
||||
packages.x86_64-linux.default = # derivation whose $out contains static files
|
||||
```
|
||||
|
||||
Use `site-lib` from this repo to set this up with minimal boilerplate:
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
site-lib = {
|
||||
url = "git+https://git.toph.so/toph/ci-actions?dir=site-lib";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, site-lib }:
|
||||
site-lib.lib.mkSite {
|
||||
inherit self nixpkgs;
|
||||
src = ./.;
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r dist/. $out/
|
||||
'';
|
||||
};
|
||||
}
|
||||
```
|
||||
Loading…
Add table
Reference in a new issue