Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
581dfa3b15 |
@@ -21,6 +21,13 @@ fmt-check, and commit.
|
|||||||
|
|
||||||
# Completed Steps
|
# Completed Steps
|
||||||
|
|
||||||
|
- 2026-10-03: Fixed two defects in the canonical Go `Dockerfile` example (issue
|
||||||
|
73). The test phase now uses the Debian Go image, since `-race` needs cgo and
|
||||||
|
the alpine image has no C compiler, so the phase failed before running a test.
|
||||||
|
The stage that compiles runs `git config --system --add safe.directory /src`,
|
||||||
|
because a context sent as a tar stream keeps the sender's file owners and git
|
||||||
|
refuses that checkout, leaving the version empty. Both checklists state that
|
||||||
|
step in the same words.
|
||||||
- 2026-10-03: Brought the canonical `.gitignore` level with `.dockerignore` on
|
- 2026-10-03: Brought the canonical `.gitignore` level with `.dockerignore` on
|
||||||
secrets (issue 38): it now also ignores `prod.env`-style `*.env` files,
|
secrets (issue 38): it now also ignores `prod.env`-style `*.env` files,
|
||||||
`.envrc`, `*.p12`, `*.pfx` and the extensionless SSH private keys, written to
|
`.envrc`, `*.p12`, `*.pfx` and the extensionless SSH private keys, written to
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Existing Repo Checklist
|
title: Existing Repo Checklist
|
||||||
last_modified: 2026-10-02
|
last_modified: 2026-10-03
|
||||||
---
|
---
|
||||||
|
|
||||||
Use this checklist when beginning work in a repo that may not yet conform to our
|
Use this checklist when beginning work in a repo that may not yet conform to our
|
||||||
@@ -67,10 +67,14 @@ with your task.
|
|||||||
argument when one is given, otherwise from `git describe --tags --always`.
|
argument when one is given, otherwise from `git describe --tags --always`.
|
||||||
That gives the tag on a tagged commit; on a later commit, the tag, the
|
That gives the tag on a tagged commit; on a later commit, the tag, the
|
||||||
number of commits since it and the short commit (`v1.2.3-4-gabc1234`); and
|
number of commits since it and the short commit (`v1.2.3-4-gabc1234`); and
|
||||||
the short commit when no tag is reachable. `ARG VERSION` has no default,
|
the short commit when no tag is reachable. The stage that compiles also
|
||||||
and the build fails if the context carries `.git` and the version still
|
marks its working directory safe for git
|
||||||
comes out empty, `dev` or `unknown`. A plain `docker build .` with no
|
(`git config --system --add safe.directory /src`): a context sent as a tar
|
||||||
build arguments must succeed; a Dockerfile that refuses an empty build
|
stream keeps the sender's file owners, and git refuses a checkout owned by
|
||||||
|
another user, so the version would come out empty. `ARG VERSION` has no
|
||||||
|
default, and the build fails if the context carries `.git` and the version
|
||||||
|
still comes out empty, `dev` or `unknown`. A plain `docker build .` with
|
||||||
|
no build arguments must succeed; a Dockerfile that refuses an empty build
|
||||||
argument drops that refusal and keeps the argument. `script/docker` and
|
argument drops that refusal and keeps the argument. `script/docker` and
|
||||||
`script/cibuild` pass the version they compute on the host; it takes
|
`script/cibuild` pass the version they compute on the host; it takes
|
||||||
precedence. A tag-derived version additionally needs `fetch-depth: 0` on
|
precedence. A tag-derived version additionally needs `fetch-depth: 0` on
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: New Repo Checklist
|
title: New Repo Checklist
|
||||||
last_modified: 2026-10-02
|
last_modified: 2026-10-03
|
||||||
---
|
---
|
||||||
|
|
||||||
Use this checklist when creating a new repository from scratch. Follow the steps
|
Use this checklist when creating a new repository from scratch. Follow the steps
|
||||||
@@ -76,10 +76,14 @@ Template files can be fetched from:
|
|||||||
argument when one is given, otherwise from `git describe --tags --always`.
|
argument when one is given, otherwise from `git describe --tags --always`.
|
||||||
That gives the tag on a tagged commit; on a later commit, the tag, the
|
That gives the tag on a tagged commit; on a later commit, the tag, the
|
||||||
number of commits since it and the short commit (`v1.2.3-4-gabc1234`); and
|
number of commits since it and the short commit (`v1.2.3-4-gabc1234`); and
|
||||||
the short commit when no tag is reachable. `ARG VERSION` has no default,
|
the short commit when no tag is reachable. The stage that compiles also
|
||||||
and the build fails if the context carries `.git` and the version still
|
marks its working directory safe for git
|
||||||
comes out empty, `dev` or `unknown`. A plain `docker build .` with no
|
(`git config --system --add safe.directory /src`): a context sent as a tar
|
||||||
build arguments must succeed; a Dockerfile that refuses an empty build
|
stream keeps the sender's file owners, and git refuses a checkout owned by
|
||||||
|
another user, so the version would come out empty. `ARG VERSION` has no
|
||||||
|
default, and the build fails if the context carries `.git` and the version
|
||||||
|
still comes out empty, `dev` or `unknown`. A plain `docker build .` with
|
||||||
|
no build arguments must succeed; a Dockerfile that refuses an empty build
|
||||||
argument drops that refusal and keeps the argument.
|
argument drops that refusal and keeps the argument.
|
||||||
- The Dockerfile carries a `lint` phase and a `test` phase, each invoking
|
- The Dockerfile carries a `lint` phase and a `test` phase, each invoking
|
||||||
its tool directly rather than through `make` or `script/`, and the final
|
its tool directly rather than through `make` or `script/`, and the final
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Repository Policies
|
title: Repository Policies
|
||||||
last_modified: 2026-10-02
|
last_modified: 2026-10-03
|
||||||
---
|
---
|
||||||
|
|
||||||
This document covers repository structure, tooling, and workflow standards. Code
|
This document covers repository structure, tooling, and workflow standards. Code
|
||||||
@@ -160,7 +160,7 @@ style conventions are in separate documents:
|
|||||||
- **The gate phases are separate stages, and the build stage depends on both.**
|
- **The gate phases are separate stages, and the build stage depends on both.**
|
||||||
The lint phase is based on the `golangci/golangci-lint` image (pinned by
|
The lint phase is based on the `golangci/golangci-lint` image (pinned by
|
||||||
hash), so lint failures surface in seconds rather than after a full compile,
|
hash), so lint failures surface in seconds rather than after a full compile,
|
||||||
and the test phase is based on the Go image. The canonical Go repo
|
and the test phase is based on the Debian Go image. The canonical Go repo
|
||||||
`Dockerfile`:
|
`Dockerfile`:
|
||||||
|
|
||||||
```dockerfile
|
```dockerfile
|
||||||
@@ -173,8 +173,9 @@ style conventions are in separate documents:
|
|||||||
COPY . .
|
COPY . .
|
||||||
RUN golangci-lint run --config .golangci.yml ./...
|
RUN golangci-lint run --config .golangci.yml ./...
|
||||||
|
|
||||||
# Test phase
|
# Test phase. -race needs cgo and so a C compiler, which the Debian Go
|
||||||
# golang:1.x-alpine, YYYY-MM-DD
|
# image ships and the alpine one does not.
|
||||||
|
# golang:1.x, YYYY-MM-DD
|
||||||
FROM golang@sha256:... AS test
|
FROM golang@sha256:... AS test
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
COPY go.mod go.sum ./
|
COPY go.mod go.sum ./
|
||||||
@@ -192,6 +193,8 @@ style conventions are in separate documents:
|
|||||||
COPY --from=lint /src/go.sum /dev/null
|
COPY --from=lint /src/go.sum /dev/null
|
||||||
COPY --from=test /src/go.sum /dev/null
|
COPY --from=test /src/go.sum /dev/null
|
||||||
RUN apk add --no-cache git
|
RUN apk add --no-cache git
|
||||||
|
# A tar-stream context keeps the sender's file owners, which git refuses.
|
||||||
|
RUN git config --system --add safe.directory /src
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
COPY go.mod go.sum ./
|
COPY go.mod go.sum ./
|
||||||
RUN go mod download
|
RUN go mod download
|
||||||
@@ -244,11 +247,14 @@ style conventions are in separate documents:
|
|||||||
`git describe --tags --always`. That gives the tag on a tagged commit; on
|
`git describe --tags --always`. That gives the tag on a tagged commit; on
|
||||||
a later commit, the tag, the number of commits since it and the short
|
a later commit, the tag, the number of commits since it and the short
|
||||||
commit (`v1.2.3-4-gabc1234`); and the short commit when no tag is
|
commit (`v1.2.3-4-gabc1234`); and the short commit when no tag is
|
||||||
reachable. `ARG VERSION` has no default, and the build fails if the
|
reachable. The stage that compiles also marks its working directory safe
|
||||||
context carries `.git` and the version still comes out empty, `dev` or
|
for git (`git config --system --add safe.directory /src`): a context sent
|
||||||
`unknown`. A plain `docker build .` with no build arguments must succeed;
|
as a tar stream keeps the sender's file owners, and git refuses a checkout
|
||||||
a Dockerfile that refuses an empty build argument drops that refusal and
|
owned by another user, so the version would come out empty. `ARG VERSION`
|
||||||
keeps the argument.
|
has no default, and the build fails if the context carries `.git` and the
|
||||||
|
version still comes out empty, `dev` or `unknown`. A plain
|
||||||
|
`docker build .` with no build arguments must succeed; a Dockerfile that
|
||||||
|
refuses an empty build argument drops that refusal and keeps the argument.
|
||||||
|
|
||||||
- Every repo should have a Gitea Actions workflow (`.gitea/workflows/`) that
|
- Every repo should have a Gitea Actions workflow (`.gitea/workflows/`) that
|
||||||
runs `script/cibuild` on push, and checks out the repo as its only other step.
|
runs `script/cibuild` on push, and checks out the repo as its only other step.
|
||||||
|
|||||||
Reference in New Issue
Block a user