mirror of
https://github.com/dockersrc/go
synced 2026-06-24 20:01:07 -04:00
🔧 track exit codes and fix entrypoint invocation 🔧
- `go-workflow`: accumulate step exit codes into `GO_EXITCODE` and `exit $GO_EXITCODE` so failures propagate to the caller - `run_step`: capture and return each step's exit code instead of silently swallowing it - `entrypoint.sh`: replace `__exec_command go-workflow` with direct `go-workflow "$@"` so the process and args are passed correctly - Strip trailing whitespace from `@@Other` and `@@Resource` header fields rootfs/usr/local/bin/entrypoint.sh rootfs/usr/local/bin/go-workflow
This commit is contained in:
@@ -508,7 +508,7 @@ if [ "$START_SERVICES" = "yes" ] || [ -z "$1" ]; then
|
|||||||
CONTAINER_INIT="${CONTAINER_INIT:-no}"
|
CONTAINER_INIT="${CONTAINER_INIT:-no}"
|
||||||
# No user command: run default Go workflow instead of blocking
|
# No user command: run default Go workflow instead of blocking
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
go-workflow
|
go-workflow "$@"
|
||||||
exit $?
|
exit $?
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# Resolve the working directory — prefer /app if mounted, else cwd
|
# Resolve the working directory — prefer /app if mounted, else cwd
|
||||||
|
GO_EXITCODE=0
|
||||||
WORK_DIR="${GOWORKDIR:-${PWD}}"
|
WORK_DIR="${GOWORKDIR:-${PWD}}"
|
||||||
cd "$WORK_DIR"
|
cd "$WORK_DIR"
|
||||||
|
|
||||||
@@ -24,24 +25,35 @@ echo ""
|
|||||||
|
|
||||||
run_step() {
|
run_step() {
|
||||||
local label="$1"; shift
|
local label="$1"; shift
|
||||||
|
local exitCode=0
|
||||||
echo "── ${label}"
|
echo "── ${label}"
|
||||||
"$@"
|
"$@"
|
||||||
|
exitCode=$?
|
||||||
echo ""
|
echo ""
|
||||||
|
return $exitCode
|
||||||
}
|
}
|
||||||
|
|
||||||
# 1. Sync module graph and go.sum before anything reads them
|
# 1. Sync module graph and go.sum before anything reads them
|
||||||
run_step "go mod tidy" go mod tidy
|
run_step "go mod tidy" go mod tidy
|
||||||
|
retVal=$?
|
||||||
|
GO_EXITCODE=$((GO_EXITCODE + retVal))
|
||||||
# 2. Format all Go source files in place
|
# 2. Format all Go source files in place
|
||||||
run_step "gofmt -w ." gofmt -w .
|
run_step "gofmt -w ." gofmt -w .
|
||||||
|
retVal=$?
|
||||||
|
GO_EXITCODE=$((GO_EXITCODE + retVal))
|
||||||
# 3. Catch suspicious constructs
|
# 3. Catch suspicious constructs
|
||||||
run_step "go vet ./..." go vet ./...
|
run_step "go vet ./..." go vet ./...
|
||||||
|
retval=$?
|
||||||
|
GO_EXITCODE=$((GO_EXITCODE + retVal))
|
||||||
# 4. Run tests — fail fast before wasting time on a build
|
# 4. Run tests — fail fast before wasting time on a build
|
||||||
run_step "go test ./..." go test ./...
|
run_step "go test ./..." go test ./...
|
||||||
|
retVal=$?
|
||||||
|
GO_EXITCODE=$((GO_EXITCODE + retVal))
|
||||||
# 5. Build all main packages; output lands alongside source in each package dir
|
# 5. Build all main packages; output lands alongside source in each package dir
|
||||||
run_step "go build ./..." go build ./...
|
run_step "go build ./..." go build ./...
|
||||||
|
retVal=$?
|
||||||
|
GO_EXITCODE=$((GO_EXITCODE + retVal))
|
||||||
|
|
||||||
echo "✅ Done."
|
echo "✅ Done."
|
||||||
|
exit $GO_EXITCODE
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user