Merge pull request #47 from stevedylandev/chore/update-go-workflows
e3f3b6e9
5 file(s) · +52 −10
| 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 |
| 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 |
| 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 |
|
| 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 . |
| 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 . |