Merge pull request #47 from stevedylandev/chore/update-go-workflows e3f3b6e9
Steve Simkins · 2026-05-16 19:51 5 file(s) · +52 −10
.github/workflows/ci.yml +36 −0
55 55
56 56
      - name: cargo test
57 57
        run: cargo test --workspace
58 +
59 +
  go:
60 +
    name: Go checks
61 +
    runs-on: ubuntu-latest
62 +
    steps:
63 +
      - uses: actions/checkout@v6
64 +
65 +
      - name: Set up Go
66 +
        uses: actions/setup-go@v6
67 +
        with:
68 +
          go-version: '1.25.x'
69 +
          cache-dependency-path: |
70 +
            apps/*-go/go.sum
71 +
            crates-go/*/go.sum
72 +
73 +
      - name: go test all modules
74 +
        run: |
75 +
          set -euo pipefail
76 +
          for mod in crates-go/* apps/*-go; do
77 +
            if [ -f "$mod/go.mod" ]; then
78 +
              echo "::group::$mod"
79 +
              (cd "$mod" && go test ./...)
80 +
              echo "::endgroup::"
81 +
            fi
82 +
          done
83 +
84 +
      - name: go vet all modules
85 +
        run: |
86 +
          set -euo pipefail
87 +
          for mod in crates-go/* apps/*-go; do
88 +
            if [ -f "$mod/go.mod" ]; then
89 +
              echo "::group::$mod"
90 +
              (cd "$mod" && go vet ./...)
91 +
              echo "::endgroup::"
92 +
            fi
93 +
          done
.github/workflows/docker-test.yml +3 −3
19 19
      - name: Determine which apps to build
20 20
        id: filter
21 21
        run: |
22 -
          ALL='["cellar","sipp","feeds","parcels","jotts","og","shrink","backup","posts","library","bookmarks","easel"]'
22 +
          ALL='["cellar","sipp","feeds","parcels","jotts","og","shrink","backup","posts","library","bookmarks","easel","bookmarks-go","cellar-go","easel-go","feeds-go","jotts-go","library-go","og-go","posts-go","shrink-go","sipp-go"]'
23 23
24 24
          changed=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)
25 25
26 -
          if echo "$changed" | grep -qE '^(Cargo\.(toml|lock)|crates/|\.github/workflows/docker(-test)?\.yml)'; then
26 +
          if echo "$changed" | grep -qE '^(Cargo\.(toml|lock)|crates/|crates-go/|\.github/workflows/docker(-test)?\.yml)'; then
27 27
            echo "apps=${ALL}" >> "$GITHUB_OUTPUT"
28 28
            exit 0
29 29
          fi
30 30
31 31
          apps=()
32 -
          for app in cellar sipp feeds parcels jotts og shrink backup posts library bookmarks easel; do
32 +
          for app in cellar sipp feeds parcels jotts og shrink backup posts library bookmarks easel bookmarks-go cellar-go easel-go feeds-go jotts-go library-go og-go posts-go shrink-go sipp-go; do
33 33
            if echo "$changed" | grep -q "^apps/${app}/"; then
34 34
              apps+=("\"${app}\"")
35 35
            fi
.github/workflows/docker.yml +4 −4
25 25
      - name: Determine which apps to build
26 26
        id: filter
27 27
        run: |
28 -
          ALL='["cellar","sipp","feeds","parcels","jotts","og","shrink","backup","posts","library","bookmarks","easel"]'
28 +
          ALL='["cellar","sipp","feeds","parcels","jotts","og","shrink","backup","posts","library","bookmarks","easel","bookmarks-go","cellar-go","easel-go","feeds-go","jotts-go","library-go","og-go","posts-go","shrink-go","sipp-go"]'
29 29
30 30
          # Map cargo package names to directory names
31 31
          pkg_to_dir() {
54 54
55 55
          changed=$(git diff --name-only HEAD~1 HEAD)
56 56
57 -
          # Workspace-level changes (shared deps, auth crate, CI) rebuild all
58 -
          if echo "$changed" | grep -qE '^(Cargo\.(toml|lock)|crates/|\.github/workflows/docker\.yml)'; then
57 +
          # Workspace-level changes (shared deps, CI) rebuild all
58 +
          if echo "$changed" | grep -qE '^(Cargo\.(toml|lock)|crates/|crates-go/|\.github/workflows/docker\.yml)'; then
59 59
            echo "apps=${ALL}" >> "$GITHUB_OUTPUT"
60 60
            exit 0
61 61
          fi
62 62
63 63
          apps=()
64 -
          for app in cellar sipp feeds parcels jotts og shrink backup posts library bookmarks easel; do
64 +
          for app in cellar sipp feeds parcels jotts og shrink backup posts library bookmarks easel bookmarks-go cellar-go easel-go feeds-go jotts-go library-go og-go posts-go shrink-go sipp-go; do
65 65
            if echo "$changed" | grep -q "^apps/${app}/"; then
66 66
              apps+=("\"${app}\"")
67 67
            fi
apps/feeds-go/Dockerfile +4 −1
1 +
# Build from repo root: docker build -t feeds-go -f apps/feeds-go/Dockerfile .
1 2
FROM golang:1.24-bookworm AS builder
2 3
WORKDIR /app
3 -
COPY apps/feeds-go/go.mod apps/feeds-go/go.sum ./
4 +
COPY crates-go/ ./crates-go/
5 +
COPY apps/feeds-go/go.mod apps/feeds-go/go.sum ./apps/feeds-go/
6 +
WORKDIR /app/apps/feeds-go
4 7
RUN go mod download
5 8
COPY apps/feeds-go/ ./
6 9
RUN CGO_ENABLED=0 go build -o /feeds-go .
apps/jotts-go/Dockerfile +5 −2
1 -
FROM golang:1.24-bookworm AS builder
1 +
# Build from repo root: docker build -t jotts-go -f apps/jotts-go/Dockerfile .
2 +
FROM golang:1.25-bookworm AS builder
2 3
WORKDIR /app
3 -
COPY apps/jotts-go/go.mod apps/jotts-go/go.sum ./
4 +
COPY crates-go/ ./crates-go/
5 +
COPY apps/jotts-go/go.mod apps/jotts-go/go.sum ./apps/jotts-go/
6 +
WORKDIR /app/apps/jotts-go
4 7
RUN go mod download
5 8
COPY apps/jotts-go/ ./
6 9
RUN CGO_ENABLED=0 go build -o /jotts-go .