diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..b0f0caa --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,25 @@ +name: deploy +on: + push: + branches: + - "main" + workflow_dispatch: + repository_dispatch: + types: [deploy] + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + deploy: + runs-on: ubuntu-latest + environment: production + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: superfly/flyctl-actions/setup-flyctl@master + - run: flyctl -c cmd/gomfweb/fly.toml deploy --remote-only + env: + FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} diff --git a/cmd/gomfweb/Dockerfile b/cmd/gomfweb/Dockerfile new file mode 100644 index 0000000..ea438ea --- /dev/null +++ b/cmd/gomfweb/Dockerfile @@ -0,0 +1,21 @@ +FROM --platform=$BUILDPLATFORM cgr.dev/chainguard/wolfi-base:latest as build +RUN apk update && apk add build-base git openssh go-1.21 + +WORKDIR /work + +COPY go.mod go.sum ./ +RUN go mod download && go mod verify + +COPY . . +ARG TARGETOS TARGETARCH +RUN GOOS=${TARGETOS} GOARCH="${TARGETARCH}" CGO_ENABLED=0 go build -v ./cmd/gomfweb + +FROM cgr.dev/chainguard/static:latest + +COPY --from=build /work/gomfweb /gomfweb + +WORKDIR / +ENTRYPOINT ["/gomfweb"] +CMD [] + +EXPOSE 4001 diff --git a/cmd/gomfweb/fly.toml b/cmd/gomfweb/fly.toml new file mode 100644 index 0000000..8906d16 --- /dev/null +++ b/cmd/gomfweb/fly.toml @@ -0,0 +1,19 @@ +# To deploy, run this from the repo root: +# +# fly deploy -c cmd/gomfweb/fly.toml + +app = 'microformats-go' +primary_region = 'sjc' + +[build] + dockerfile = "Dockerfile" + +[http_service] + internal_port = 4001 + force_https = true + auto_stop_machines = true + auto_start_machines = true + min_machines_running = 0 + +[[vm]] + size = 'shared-cpu-1x'