Etapa G (go): re-alimenta la granja — tanda go-refeed (51 recetas) a incoming-go
Prioridad: el worker VPS nunca idle. Import de 108 candidatos Go nuevos (listas fuel-go menos el corpus); 2 olas → 51 recetas importadas (yield ~47%), pusheadas a la cola incoming-go del VPS. El worker las está moliendo (load ~17). Incluye proyectos Go grandes (dolt/etcd/dagger/crane/gitlab-runner/forgejo) que vendorean cientos de deps ⇒ builds largos. Crudas de nixpkgs (tag sin pin, algún misimport Python que falla inocuo); la cosecha promueve sólo las que sellan + pasan smoke. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "apko"
|
||||
version = "0.9.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/chainguard-dev/apko/archive/v0.9.0/apko-0.9.0.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "c8883955a99811762c3d358549d041c464a1dfe67f24b63666664c72dc2d0bb10b8ff517a8205c14d56a826bd0d02770aa254eefa06c50026e91833319387f24"
|
||||
sha256 = "65f248fecf72ef36303e6c61c5599272f1a0d3eb1fa287a6f021917001e29a0b"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
mkdir build
|
||||
go build -o build/ -tags -tags=pivkey,pkcs11key "$builddir"/...
|
||||
|
||||
for i in bash fish zsh; do
|
||||
"$builddir"/build/apko completion $i > "$builddir"/apko.$i
|
||||
done
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
install -Dm755 "$builddir"/build/apko "/out"/usr/bin/apko
|
||||
|
||||
install -Dm644 "$builddir"/apko.bash "/out"/usr/share/bash-completion/completions/apko
|
||||
install -Dm644 "$builddir"/apko.fish "/out"/usr/share/fish/vendor_completions.d/apko.fish
|
||||
install -Dm644 "$builddir"/apko.zsh "/out"/usr/share/zsh/site-functions/_apko
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "assetfinder"
|
||||
version = "0.1.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/tomnomnom/assetfinder"
|
||||
commit = "v0.1.1"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "atlas"
|
||||
version = "1.2.3"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/ariga/atlas"
|
||||
commit = "v1.2.3"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "aws-vault"
|
||||
version = "7.12.3"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/ByteNess/aws-vault"
|
||||
commit = "v7.12.3"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "go-containerregistry"
|
||||
version = "0.21.6"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/google/go-containerregistry"
|
||||
commit = "v0.21.6"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,16 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "dbgate"
|
||||
version = "7.2.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/dbgate/dbgate/releases/download/v7.2.1/dbgate-7.2.1-linux_x86_64.AppImage"
|
||||
sha256 = "411e38419e50373feaf427e9fdde44623946f386660ad0457bc6b868c1448634"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
@@ -0,0 +1,41 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -179,20 +179,20 @@
|
||||
(cd web/; pnpm lint --quiet)
|
||||
|
||||
test-agent: ## Test agent code
|
||||
- go test -race -cover -coverprofile agent-coverage.out -timeout 60s -tags 'test $(TAGS)' go.woodpecker-ci.org/woodpecker/v3/cmd/agent go.woodpecker-ci.org/woodpecker/v3/agent/...
|
||||
+ go test -cover -coverprofile agent-coverage.out -timeout 60s -tags 'test $(TAGS)' go.woodpecker-ci.org/woodpecker/v3/cmd/agent go.woodpecker-ci.org/woodpecker/v3/agent/...
|
||||
|
||||
test-server: ## Test server code
|
||||
- go test -race -cover -coverprofile server-coverage.out -timeout 60s -tags 'test $(TAGS)' go.woodpecker-ci.org/woodpecker/v3/cmd/server $(shell go list go.woodpecker-ci.org/woodpecker/v3/server/... | grep -v '/store')
|
||||
+ go test -cover -coverprofile server-coverage.out -timeout 60s -tags 'test $(TAGS)' go.woodpecker-ci.org/woodpecker/v3/cmd/server $(shell go list go.woodpecker-ci.org/woodpecker/v3/server/... | grep -v '/store')
|
||||
|
||||
test-cli: ## Test cli code
|
||||
- go test -race -cover -coverprofile cli-coverage.out -timeout 60s -tags 'test $(TAGS)' go.woodpecker-ci.org/woodpecker/v3/cmd/cli go.woodpecker-ci.org/woodpecker/v3/cli/...
|
||||
+ go test -cover -coverprofile cli-coverage.out -timeout 60s -tags 'test $(TAGS)' go.woodpecker-ci.org/woodpecker/v3/cmd/cli go.woodpecker-ci.org/woodpecker/v3/cli/...
|
||||
|
||||
test-server-datastore: ## Test server datastore
|
||||
go test -timeout 300s -tags 'test $(TAGS)' -run TestMigrate go.woodpecker-ci.org/woodpecker/v3/server/store/...
|
||||
- go test -race -timeout 120s -tags 'test $(TAGS)' -skip TestMigrate go.woodpecker-ci.org/woodpecker/v3/server/store/...
|
||||
+ go test -timeout 120s -tags 'test $(TAGS)' -skip TestMigrate go.woodpecker-ci.org/woodpecker/v3/server/store/...
|
||||
|
||||
test-server-datastore-coverage: ## Test server datastore with coverage report
|
||||
- go test -race -cover -coverprofile datastore-coverage.out -timeout 300s -tags 'test $(TAGS)' go.woodpecker-ci.org/woodpecker/v3/server/store/...
|
||||
+ go test -cover -coverprofile datastore-coverage.out -timeout 300s -tags 'test $(TAGS)' go.woodpecker-ci.org/woodpecker/v3/server/store/...
|
||||
|
||||
test-ui: ui-dependencies ## Test UI code
|
||||
(cd web/; pnpm run lint)
|
||||
@@ -201,10 +201,10 @@
|
||||
(cd web/; pnpm run test)
|
||||
|
||||
test-lib: ## Test lib code
|
||||
- go test -race -cover -coverprofile coverage.out -timeout 60s -tags 'test $(TAGS)' $(shell go list ./... | grep -v '/cmd\|/agent\|/cli\|/server')
|
||||
+ go test -cover -coverprofile coverage.out -timeout 60s -tags 'test $(TAGS)' $(shell go list ./... | grep -v '/cmd\|/agent\|/cli\|/server')
|
||||
|
||||
test-e2e: ## Test by running yaml config and compare expected result
|
||||
- go test -race -cover -coverpkg=./... -coverprofile e2e-coverage.out -timeout 60s -tags 'test $(TAGS)' ./e2e/...
|
||||
+ go test -cover -coverpkg=./... -coverprofile e2e-coverage.out -timeout 60s -tags 'test $(TAGS)' ./e2e/...
|
||||
|
||||
.PHONY: test
|
||||
test: test-agent test-server test-server-datastore test-cli test-lib test-e2e ## Run all tests
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -214,7 +214,7 @@
|
||||
build-ui: ## Build UI
|
||||
(cd web/; pnpm install --frozen-lockfile; pnpm build)
|
||||
|
||||
-build-server: build-ui generate-openapi ## Build server
|
||||
+build-server: ## Build server
|
||||
CGO_ENABLED=${CGO_ENABLED} GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags '$(TAGS)' -ldflags '${LDFLAGS}' -o ${DIST_DIR}/woodpecker-server${BIN_SUFFIX} go.woodpecker-ci.org/woodpecker/v3/cmd/server
|
||||
|
||||
build-agent: ## Build agent
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "dolt"
|
||||
version = "2.1.9"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/dolthub/dolt"
|
||||
commit = "v2.1.9"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go, icu4c
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,50 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "etcd"
|
||||
version = "3.6.11"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/etcd-io/etcd/archive/refs/tags/v3.6.11.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "56423c42443d9d1d2d06ff28aff389a381ed9b726cbee0d3523ac34fe2a8e22029377a42aa808077bb985f524a153c5fe63fd6166857749e8217b705fdf41910"
|
||||
sha256 = "bdc9b21505f4587c81f33235b53b3cb02f28158eb3487ae158f90b9534f0c0f3"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
export GOCACHE="${GOCACHE:-"$srcdir/go-cache"}"
|
||||
export GOTMPDIR="${GOTMPDIR:-"$srcdir"}"
|
||||
export GOMODCACHE="${GOMODCACHE:-"$srcdir/go"}"
|
||||
export GOFLAGS="$GOFLAGS -mod=mod"
|
||||
export CGO_ENABLED=1
|
||||
export FORCE_HOST_GO=1
|
||||
|
||||
GIT_SHA="$(git ls-remote https://github.com/coreos/etcd.git refs/tags/v3.6.11 | awk '{print $1}')" \
|
||||
make
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
install -d -o "$pkgusers" -g "$pkggroups" -m 700 "/out"/var/lib/etcd
|
||||
install -Dm755 bin/etcd "/out"/usr/bin/etcd
|
||||
install -Dm755 bin/etcdctl "/out"/usr/bin/etcdctl
|
||||
install -Dm644 $srcdir/etcd.yaml "/out"/etc/etcd/conf.yml
|
||||
install -Dm644 $srcdir/etcd.confd "/out"/etc/conf.d/etcd
|
||||
install -Dm755 $srcdir/etcd.initd "/out"/etc/init.d/etcd
|
||||
install -Dm644 LICENSE "/out"/usr/share/licenses/etcd/LICENSE
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
|
||||
[deps]
|
||||
build = ["bash"]
|
||||
@@ -0,0 +1,16 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "flux"
|
||||
version = "2013-09-20"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/deniskropp/flux"
|
||||
commit = "e45758aa9384b9740ff021ea952399fd113eb0e9"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "fluxcd"
|
||||
version = "2.8.8"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/fluxcd/flux2"
|
||||
commit = "v2.8.8"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,67 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "forgejo"
|
||||
version = "15.0.3"
|
||||
|
||||
[source]
|
||||
tarball = "https://codeberg.org/forgejo/forgejo/archive/v15.0.3.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "c1ebd90bc1c8ce9a0cbbf88451078691d7f272927a8208328f9ba26786200347ca0d9f25bf87a256d825c0c6a63a0a022082f21c2871c45ac1710394c9385f1b"
|
||||
sha256 = "a73bb36caebf15925c00d46abce2adbd38b810a86610a0202a928c0a746e5742"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
# XXX: LARGEFILE64
|
||||
export CGO_CFLAGS="$CFLAGS -O2 -D_LARGEFILE64_SOURCE"
|
||||
export TAGS="bindata sqlite sqlite_unlock_notify"
|
||||
export GITEA_VERSION="15.0.3"
|
||||
export EXTRA_GOFLAGS="$GOFLAGS"
|
||||
export CGO_LDFLAGS="$LDFLAGS"
|
||||
unset LDFLAGS
|
||||
## make FHS compliant
|
||||
local setting="forgejo.org/modules/setting"
|
||||
export LDFLAGS="$LDFLAGS -X $setting.CustomConf=/etc/forgejo/app.ini"
|
||||
export LDFLAGS="$LDFLAGS -X $setting.AppWorkPath=/var/lib/forgejo/"
|
||||
|
||||
make -j1 build
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
for dir in forgejo forgejo/git forgejo/data forgejo/db forgejo/custom; do
|
||||
install -dm750 -o forgejo -g www-data \
|
||||
"/out"/var/lib/$dir
|
||||
done
|
||||
|
||||
install -dm755 -o forgejo -g www-data "/out"/var/log/forgejo
|
||||
|
||||
# TODO: rename when upstream does: https://codeberg.org/forgejo/forgejo/issues/5174
|
||||
install -Dm755 -g www-data gitea "/out"/usr/bin/forgejo
|
||||
|
||||
install -Dm644 -o forgejo -g www-data "$srcdir"/forgejo.ini \
|
||||
"/out"/etc/forgejo/app.ini
|
||||
chown forgejo:www-data "/out"/etc/forgejo
|
||||
|
||||
install -Dm755 "$srcdir"/forgejo.initd \
|
||||
"/out"/etc/init.d/forgejo
|
||||
install -Dm644 contrib/systemd/forgejo.service \
|
||||
-t "/out"/usr/lib/systemd/system/
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
|
||||
# depends de runtime de Alpine (NO build-deps): git, git-lfs, gnupg
|
||||
|
||||
[deps]
|
||||
build = ["nodejs", "npm"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "frp"
|
||||
version = "0.69.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/fatedier/frp"
|
||||
commit = "v0.69.1"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,26 @@
|
||||
Based on: https://codeberg.org/bizdelnick/gross/commit/5a27b077d1b34b64687d1e3b717175280337aa22#diff-09c2d15e9648a6e088b053b7d71a3b532ce5b61b
|
||||
---
|
||||
diff -ruN a/include/thread_pool.h b/include/thread_pool.h
|
||||
--- a/include/thread_pool.h 2025-07-30 17:19:45.060000000 +0000
|
||||
+++ b/include/thread_pool.h 2025-07-30 17:26:12.140000000 +0000
|
||||
@@ -22,6 +20,10 @@
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
+#ifdef HAVE_STDBOOL_H
|
||||
+# include <stdbool.h>
|
||||
+#endif
|
||||
+
|
||||
typedef int mseconds_t;
|
||||
|
||||
typedef struct thread_pool_s
|
||||
@@ -109,8 +110,7 @@
|
||||
int submit_job(thread_pool_t *pool, edict_t *edict);
|
||||
thread_pool_t *create_thread_pool(const char *name, int (*routine) (thread_pool_t *, thread_ctx_t *,
|
||||
edict_t *), pool_limits_t *limits, void *arg);
|
||||
-edict_t *edict_get();
|
||||
-edict_t *edict_get();
|
||||
+edict_t *edict_get(bool forget);
|
||||
void send_result(edict_t *edict, void *result);
|
||||
void edict_unlink(edict_t *edict);
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
diff -ruN a/include/syncmgr.h b/include/syncmgr.h
|
||||
--- a/include/syncmgr.h 2023-12-26 23:43:03.000000000 +0000
|
||||
+++ b/include/syncmgr.h 2025-07-30 17:38:33.930000000 +0000
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
int send_startup_sync(peer_t *peer, startup_sync_t *sync);
|
||||
int send_oper_sync(peer_t *peer, oper_sync_t *sync);
|
||||
-int force_peer_aggregate();
|
||||
+int force_peer_aggregate(peer_t *peer);
|
||||
void send_filters(peer_t *peer);
|
||||
|
||||
void *recv_syncs(void *arg);
|
||||
diff -ruN a/include/thread_pool.h b/include/thread_pool.h
|
||||
--- a/include/thread_pool.h 2025-07-30 17:19:45.060000000 +0000
|
||||
+++ b/include/thread_pool.h 2025-07-30 17:50:05.690000000 +0000
|
||||
@@ -68,7 +70,7 @@
|
||||
typedef struct
|
||||
{
|
||||
void *state;
|
||||
- int (*cleanup) ();
|
||||
+ int (*cleanup) (void *state);
|
||||
watchdog_t watchdog;
|
||||
} thread_ctx_t;
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "gf"
|
||||
version = "0-unstable-2026-06-16"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/nakst/gf"
|
||||
commit = "1c04ed95d45d49fb4b06cbc620c61acd58818977"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[deps]
|
||||
build = ["libx11", "gdb", "freetype"]
|
||||
@@ -0,0 +1,61 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "gitlab-runner"
|
||||
version = "19.0.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://gitlab.com/gitlab-org/gitlab-runner/-/archive/v19.0.1/gitlab-runner-v19.0.1.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "fa07957baa4f89141f9cbe342e10afb3f202312db4ba3edd28c904ad9acb65b64d0a5dcae0e2d46920d06d2c990c83d5546c523b464389c5976d28745d1c59a5"
|
||||
sha256 = "c44d94d9a5bcc0298ac5c61b9fbb49c10ee3ccf7f622a7c5684ea74040c38af6"
|
||||
patches = ["syslog-log-format.patch", "use-logrus-syslog-hook.patch"]
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
# This is used to determine what version of
|
||||
# https://hub.docker.com/r/gitlab/gitlab-runner-helper/tags to use.
|
||||
local gitrev
|
||||
gitrev="$(jq -r '.commit.short_id' "$srcdir/gitlab-runner-19.0.1-tags.json")"
|
||||
echo "Tag v19.0.1 resolved to SHA $gitrev" >&2
|
||||
|
||||
local ldflags="
|
||||
-X gitlab.com/gitlab-org/gitlab-runner/common.NAME=gitlab-runner
|
||||
-X gitlab.com/gitlab-org/gitlab-runner/common.VERSION=19.0.1
|
||||
-X gitlab.com/gitlab-org/gitlab-runner/common.REVISION=$gitrev
|
||||
-X gitlab.com/gitlab-org/gitlab-runner/common.BUILT=$(date -d @"$SOURCE_DATE_EPOCH" -u +%Y-%m-%dT%H:%M:%S%z)
|
||||
-X gitlab.com/gitlab-org/gitlab-runner/common.BRANCH=master
|
||||
"
|
||||
# required for github.com/docker/docker
|
||||
export GO111MODULE=auto
|
||||
go build -ldflags "$ldflags" -o bin/gitlab-runner
|
||||
go build -ldflags "$ldflags" -o bin/gitlab-runner-helper \
|
||||
./apps/gitlab-runner-helper
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
install -Dm755 bin/gitlab-runner -t "/out"/usr/bin/
|
||||
|
||||
install -Dm755 "$srcdir"/gitlab-runner.initd "/out"/etc/init.d/gitlab-runner
|
||||
install -Dm644 "$srcdir"/gitlab-runner.confd "/out"/etc/conf.d/gitlab-runner
|
||||
install -Dm644 "$srcdir"/gitlab-runner.logrotate "/out"/etc/logrotate.d/gitlab-runner
|
||||
|
||||
install -d -m750 -o "$pkgusers" -g "$pkggroups" "/out"/etc/gitlab-runner
|
||||
install -d -m700 -o "$pkgusers" -g "$pkggroups" "/out"/var/lib/gitlab-runner
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
|
||||
[deps]
|
||||
build = ["jq"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "gocron"
|
||||
version = "0.9.14"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/flohoss/gocron"
|
||||
commit = "v0.9.14"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "gotop"
|
||||
version = "4.2.0"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/xxxserxxx/gotop"
|
||||
commit = "v4.2.0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,17 @@
|
||||
diff -ru gross-1.0.1.orig/doc/examples/grossd.conf gross-1.0.1/doc/examples/grossd.conf
|
||||
--- gross-1.0.1.orig/doc/examples/grossd.conf 2008-06-03 09:27:37 +0000
|
||||
+++ gross-1.0.1/doc/examples/grossd.conf 2008-06-03 09:31:33 +0000
|
||||
@@ -71,11 +71,13 @@
|
||||
# 'statefile' is the full path of the file that the server will use to
|
||||
# store the state information.
|
||||
# statefile = /var/db/grossd.state
|
||||
+statefile = /var/db/gross/state
|
||||
|
||||
# 'pidfile' is the full path of the file grossd writes its pid into.
|
||||
# You can set parameter 'check', if you want to keep grossd
|
||||
# from starting if pidfile already exists.
|
||||
# pidfile = /var/run/grossd.pid;check
|
||||
+pidfile = /var/run/gross/grossd.pid
|
||||
|
||||
# 'log_method' is used to list all the possible logging facilities.
|
||||
# currently only syslog is implemented
|
||||
@@ -0,0 +1,146 @@
|
||||
Index: include/conf.h
|
||||
===================================================================
|
||||
--- a/include/conf.h (revision 519)
|
||||
+++ b/include/conf.h (working copy)
|
||||
@@ -41,6 +41,7 @@
|
||||
"stat_type", "status", \
|
||||
"grey_mask", "24", \
|
||||
"grey_delay", "10", \
|
||||
+ "grey_tuple", "user", \
|
||||
"syslog_facility", "mail", \
|
||||
"blocker_port", "4466", \
|
||||
"blocker_weight", "1", \
|
||||
@@ -80,6 +81,7 @@
|
||||
"log_level", \
|
||||
"grey_mask", \
|
||||
"grey_delay", \
|
||||
+ "grey_tuple", \
|
||||
"check", \
|
||||
"protocol", \
|
||||
"syslog_facility", \
|
||||
Index: include/common.h
|
||||
===================================================================
|
||||
--- a/include/common.h (revision 519)
|
||||
+++ b/include/common.h (working copy)
|
||||
@@ -151,6 +151,12 @@
|
||||
# endif /* bool */
|
||||
#endif /* HAVE_BOOL */
|
||||
|
||||
+typedef enum
|
||||
+{
|
||||
+ GREY_TUPLE_USER = 0,
|
||||
+ GREY_TUPLE_SERVER,
|
||||
+} greytupletype_t;
|
||||
+
|
||||
typedef struct peer_s
|
||||
{
|
||||
struct sockaddr_in peer_addr;
|
||||
@@ -207,6 +213,7 @@
|
||||
int grey_mask;
|
||||
int protocols;
|
||||
int greylist_delay;
|
||||
+ greytupletype_t grey_tuple;
|
||||
postfix_config_t postfix;
|
||||
sjsms_config_t sjsms;
|
||||
blocker_config_t blocker;
|
||||
Index: src/gross.c
|
||||
===================================================================
|
||||
--- a/src/gross.c (revision 519)
|
||||
+++ b/src/gross.c (working copy)
|
||||
@@ -112,7 +112,7 @@
|
||||
{
|
||||
int ret;
|
||||
configlist_t *cp;
|
||||
- const char *updatestr;
|
||||
+ const char *updatestr, *greytuplestr;
|
||||
struct hostent *host = NULL;
|
||||
char buffer[MAXLINELEN] = { '\0' };
|
||||
params_t *pp;
|
||||
@@ -214,6 +214,17 @@
|
||||
daemon_shutdown(EXIT_CONFIG, "Invalid updatestyle: %s", updatestr);
|
||||
}
|
||||
|
||||
+ greytuplestr = CONF("grey_tuple");
|
||||
+ if ((greytuplestr == NULL) || (strcmp(greytuplestr, "user") == 0)) {
|
||||
+ logstr(GLOG_DEBUG, "grey_tuple: USER");
|
||||
+ ctx->config.grey_tuple = GREY_TUPLE_USER;
|
||||
+ } else if (strcmp(greytuplestr, "server") == 0) {
|
||||
+ logstr(GLOG_DEBUG, "grey_tuple: SERVER");
|
||||
+ ctx->config.grey_tuple = GREY_TUPLE_SERVER;
|
||||
+ } else {
|
||||
+ daemon_shutdown(EXIT_CONFIG, "Invalid grey_tuple: %s", greytuplestr);
|
||||
+ }
|
||||
+
|
||||
/* we must reset errno because strtol returns 0 if it fails */
|
||||
errno = 0;
|
||||
ctx->config.grey_mask = strtol(CONF("grey_mask"), (char **)NULL, 10);
|
||||
Index: src/worker.c
|
||||
===================================================================
|
||||
--- a/src/worker.c (revision 519)
|
||||
+++ b/src/worker.c (working copy)
|
||||
@@ -186,6 +186,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
+static const char *domain_part(const char *email)
|
||||
+{
|
||||
+ char *p = strchr(email, '@');
|
||||
+ if (p == NULL)
|
||||
+ return email;
|
||||
+ return p + 1;
|
||||
+}
|
||||
+
|
||||
int
|
||||
test_tuple(final_status_t *final, grey_tuple_t *request, tmout_action_t *ta)
|
||||
{
|
||||
@@ -233,7 +241,14 @@
|
||||
}
|
||||
|
||||
/* greylist */
|
||||
- snprintf(maskedtuple, MSGSZ, "%s %s %s", chkipstr, request->sender, request->recipient);
|
||||
+ switch (ctx->config.grey_tuple) {
|
||||
+ case GREY_TUPLE_USER:
|
||||
+ snprintf(maskedtuple, MSGSZ, "%s %s %s", chkipstr, request->sender, request->recipient);
|
||||
+ break;
|
||||
+ case GREY_TUPLE_SERVER:
|
||||
+ snprintf(maskedtuple, MSGSZ, "%s %s %s", chkipstr, domain_part(request->sender), request->helo_name);
|
||||
+ break;
|
||||
+ }
|
||||
digest = sha256_string(maskedtuple);
|
||||
|
||||
querylog_entry = &final->querylog_entry;
|
||||
Index: doc/examples/grossd.conf
|
||||
===================================================================
|
||||
--- a/doc/examples/grossd.conf (revision 519)
|
||||
+++ b/doc/examples/grossd.conf (working copy)
|
||||
@@ -93,6 +93,13 @@
|
||||
# only if response is STATUS_GREY
|
||||
# DEFAULT: update = grey
|
||||
|
||||
+# 'grey_tuple' is the way greylisting tuples are created. Valid options are
|
||||
+# 'normal' and 'loose'. If 'grey_tuple = user' the tuple for grey listing
|
||||
+# will be: masked client-ip, sender email, recipient email. If 'grey_tuple =
|
||||
+# server' the tuple for greylisting will be client-ip, domain of sender email
|
||||
+# and helo.
|
||||
+# DEFAULT: grey_tuple = normal
|
||||
+
|
||||
# 'grey_mask' is the mask for grossd to use when matching client_ip
|
||||
# against the database. Default is 24, so grossd treats addresses
|
||||
# like a.b.c.d as a.b.c.0. Setting this to 32 makes grossd to
|
||||
Index: man/grossd.conf.5.in
|
||||
===================================================================
|
||||
--- a/man/grossd.conf.5.in (revision 519)
|
||||
+++ b/man/grossd.conf.5.in (working copy)
|
||||
@@ -66,6 +66,12 @@
|
||||
\fIgrossd\fP\|(8) will update the database only if the response is
|
||||
`\s-1STATUS_GREY\s+1'. Setting it to `always' may reduce the impact on
|
||||
\s-1DNS\s+1 servers.
|
||||
+.IP "\fBgrey_tuple\fP" 4
|
||||
+is the greylisting tuple. Valid options are `user' and `server'. If set to
|
||||
+`user', which is the default, \fIgrossd\fP\|(8) will create the tuple from
|
||||
+the masked `smtp\-client\-ip', sender email and recipient email. If set to
|
||||
+`server' it will create the tuple from the masked `smtp\-client\-ip', the sender
|
||||
+email domain and helo message.
|
||||
.IP "\fBgrey_mask\fP" 4
|
||||
is the mask for \fIgrossd\fP\|(8) to use when matching the
|
||||
`smtp\-client\-ip' against the database. Default is 24, which makes \fIgrossd\fP\|(8)
|
||||
@@ -0,0 +1,48 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "gross"
|
||||
version = "1.0.4"
|
||||
|
||||
[source]
|
||||
tarball = "https://codeberg.org/bizdelnick/gross/releases/download/v1.0.4/gross-1.0.4.tar.xz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "28126ed65ca82b9826b04f6210a95865fc514b924c0f14123e822923d2ce44f2c5c80d41f5b23c3ff845f9734a8e6ca3424fa165e7955d0fa99d52ae45bb30ea"
|
||||
sha256 = "0ee4fb368151558dc962328f2e99d9b6b61ddede44ead606fec8131774a5d174"
|
||||
patches = ["gross-1.0.1-default-conf.patch", "gross-grey_tuple.patch", "gcc15-bool.patch", "gcc15-conflicting-types.patch"]
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
./configure \
|
||||
--build=$CBUILD \
|
||||
--host=$CHOST \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--mandir=/usr/share/man \
|
||||
--infodir=/usr/share/info
|
||||
make -j1
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
make -j1 DESTDIR="/out" install
|
||||
|
||||
install -dD "/out"/var/run/gross
|
||||
install -m755 -D "$srcdir"/grossd.initd "/out"/etc/init.d/grossd
|
||||
install -m644 -D "$srcdir"/grossd.confd "/out"/etc/conf.d/grossd
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
|
||||
[deps]
|
||||
build = ["c-ares", "autoconf", "automake", "libtool", "sed"]
|
||||
@@ -0,0 +1,45 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "grype"
|
||||
version = "0.111.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/anchore/grype/archive/v0.111.0/grype-0.111.0.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "109662075d13ed6b397c3624679b52f49c2713d9bfc5562750ff2892c6f81810f616ffbb218bdfa31a8beae7331b0ff3d446de4cd9f295033afb527e74be1a0f"
|
||||
sha256 = "01d60c3e785f635da8f060712df2a901025386b740eb173e365ae0c263e66792"
|
||||
patches = ["disable-update-check.patch"]
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
go build -ldflags "
|
||||
-X main.version=0.111.0
|
||||
" \
|
||||
-o bin/grype ./cmd/grype
|
||||
|
||||
./bin/grype completion bash >grype.bash
|
||||
./bin/grype completion fish >grype.fish
|
||||
./bin/grype completion zsh >grype.zsh
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
install -Dm755 bin/grype -t "/out"/usr/bin/
|
||||
|
||||
install -Dm644 grype.bash "/out"/usr/share/bash-completion/completions/grype
|
||||
install -Dm644 grype.fish "/out"/usr/share/fish/vendor_completions.d/grype.fish
|
||||
install -Dm644 grype.zsh "/out"/usr/share/zsh/site-functions/_grype
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "gtt"
|
||||
version = "10"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/eeeXun/gtt"
|
||||
commit = "v10"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go, alsa-lib, xclip, wl-clipboard
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "httpstat"
|
||||
version = "1.3.2"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/reorx/httpstat"
|
||||
commit = "1.3.2"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[deps]
|
||||
build = ["python3", "setuptools", "glibc-locales"]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "jc"
|
||||
version = "1.25.7"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/kellyjonbrazil/jc"
|
||||
commit = "v1.25.7"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[deps]
|
||||
build = ["python3"]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "jsonnet"
|
||||
version = "0.21.0"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/google/jsonnet"
|
||||
commit = "v0.21.0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[deps]
|
||||
build = ["jekyll", "cmake", "gtest"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "kics"
|
||||
version = "2.1.19"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/Checkmarx/kics"
|
||||
commit = "v2.1.19"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,16 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "kubetail"
|
||||
version = "1.6.22"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/johanhaleby/kubetail"
|
||||
commit = "1.6.22"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
@@ -0,0 +1,19 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "kubie"
|
||||
version = "0.26.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/sbstp/kubie"
|
||||
commit = "v0.26.1"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = ["--bin", "kubie"]
|
||||
|
||||
[build.phases]
|
||||
install = "mkdir -p /out/usr/bin && cp target/release/kubie /out/usr/bin/kubie"
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "lego"
|
||||
version = "4.35.2"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/go-acme/lego"
|
||||
commit = "v4.35.2"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,99 @@
|
||||
diff --git a/pkg/observability/logs/aws_test.go b/pkg/observability/logs/aws_test.go
|
||||
index 36a970d..b315f8b 100644
|
||||
--- a/pkg/observability/logs/aws_test.go
|
||||
+++ b/pkg/observability/logs/aws_test.go
|
||||
@@ -21,5 +21,5 @@ func TestNewAWSWrapper(t *testing.T) {
|
||||
|
||||
logger.Logf(logging.Debug, "%s", "foo")
|
||||
|
||||
- assert.Equal(t, "<nil> DBG aws_test.go:22 > foo\n", buf.String())
|
||||
+ assert.Equal(t, "<nil> DBG github.com/traefik/traefik/v3/pkg/observability/logs/aws_test.go:22 > foo\n", buf.String())
|
||||
}
|
||||
diff --git a/pkg/observability/logs/datadog_test.go b/pkg/observability/logs/datadog_test.go
|
||||
index 41c6df4..47eadad 100644
|
||||
--- a/pkg/observability/logs/datadog_test.go
|
||||
+++ b/pkg/observability/logs/datadog_test.go
|
||||
@@ -20,5 +20,5 @@ func TestNewDatadogLogger(t *testing.T) {
|
||||
|
||||
logger.Log("foo")
|
||||
|
||||
- assert.Equal(t, "<nil> DBG datadog_test.go:21 > foo\n", buf.String())
|
||||
+ assert.Equal(t, "<nil> DBG github.com/traefik/traefik/v3/pkg/observability/logs/datadog_test.go:21 > foo\n", buf.String())
|
||||
}
|
||||
diff --git a/pkg/observability/logs/elastic_test.go b/pkg/observability/logs/elastic_test.go
|
||||
index e00604d..16e1304 100644
|
||||
--- a/pkg/observability/logs/elastic_test.go
|
||||
+++ b/pkg/observability/logs/elastic_test.go
|
||||
@@ -20,5 +20,5 @@ func TestNewElasticLogger(t *testing.T) {
|
||||
|
||||
logger.Errorf("foo")
|
||||
|
||||
- assert.Equal(t, "<nil> ERR elastic_test.go:21 > foo\n", buf.String())
|
||||
+ assert.Equal(t, "<nil> ERR github.com/traefik/traefik/v3/pkg/observability/logs/elastic_test.go:21 > foo\n", buf.String())
|
||||
}
|
||||
diff --git a/pkg/observability/logs/gokit_test.go b/pkg/observability/logs/gokit_test.go
|
||||
index 791157b..7531651 100644
|
||||
--- a/pkg/observability/logs/gokit_test.go
|
||||
+++ b/pkg/observability/logs/gokit_test.go
|
||||
@@ -20,5 +20,5 @@ func TestNewGoKitWrapper(t *testing.T) {
|
||||
|
||||
_ = logger.Log("foo")
|
||||
|
||||
- assert.Equal(t, "<nil> DBG gokit_test.go:21 > foo\n", buf.String())
|
||||
+ assert.Equal(t, "<nil> DBG github.com/traefik/traefik/v3/pkg/observability/logs/gokit_test.go:21 > foo\n", buf.String())
|
||||
}
|
||||
diff --git a/pkg/observability/logs/hclog_test.go b/pkg/observability/logs/hclog_test.go
|
||||
index 02681d7..50fe5e2 100644
|
||||
--- a/pkg/observability/logs/hclog_test.go
|
||||
+++ b/pkg/observability/logs/hclog_test.go
|
||||
@@ -20,5 +20,5 @@ func TestNewRetryableHTTPLogger(t *testing.T) {
|
||||
|
||||
logger.Info("foo")
|
||||
|
||||
- assert.Equal(t, "<nil> INF hclog_test.go:21 > Foo\n", buf.String())
|
||||
+ assert.Equal(t, "<nil> INF github.com/traefik/traefik/v3/pkg/observability/logs/hclog_test.go:21 > Foo\n", buf.String())
|
||||
}
|
||||
diff --git a/pkg/observability/logs/instana_test.go b/pkg/observability/logs/instana_test.go
|
||||
index 38b53f2..dc758f0 100644
|
||||
--- a/pkg/observability/logs/instana_test.go
|
||||
+++ b/pkg/observability/logs/instana_test.go
|
||||
@@ -20,5 +20,5 @@ func TestNewInstanaLogger(t *testing.T) {
|
||||
|
||||
logger.Info("foo")
|
||||
|
||||
- assert.Equal(t, "<nil> INF instana_test.go:21 > foo\n", buf.String())
|
||||
+ assert.Equal(t, "<nil> INF github.com/traefik/traefik/v3/pkg/observability/logs/instana_test.go:21 > foo\n", buf.String())
|
||||
}
|
||||
diff --git a/pkg/observability/logs/log_test.go b/pkg/observability/logs/log_test.go
|
||||
index 5c80e76..26fd44a 100644
|
||||
--- a/pkg/observability/logs/log_test.go
|
||||
+++ b/pkg/observability/logs/log_test.go
|
||||
@@ -20,5 +20,5 @@ func TestNoLevel(t *testing.T) {
|
||||
|
||||
logger.Info().Msg("foo")
|
||||
|
||||
- assert.Equal(t, "<nil> INF log_test.go:21 > foo\n", buf.String())
|
||||
+ assert.Equal(t, "<nil> INF github.com/traefik/traefik/v3/pkg/observability/logs/log_test.go:21 > foo\n", buf.String())
|
||||
}
|
||||
diff --git a/pkg/observability/logs/logrus_test.go b/pkg/observability/logs/logrus_test.go
|
||||
index af3c085..d30889a 100644
|
||||
--- a/pkg/observability/logs/logrus_test.go
|
||||
+++ b/pkg/observability/logs/logrus_test.go
|
||||
@@ -20,5 +20,5 @@ func TestNewLogrusStdWrapper(t *testing.T) {
|
||||
|
||||
logger.Println("foo")
|
||||
|
||||
- assert.Equal(t, "<nil> DBG logrus_test.go:21 > foo\n", buf.String())
|
||||
+ assert.Equal(t, "<nil> DBG github.com/traefik/traefik/v3/pkg/observability/logs/logrus_test.go:21 > foo\n", buf.String())
|
||||
}
|
||||
diff --git a/pkg/observability/logs/oxy_test.go b/pkg/observability/logs/oxy_test.go
|
||||
index 5645986..26f915c 100644
|
||||
--- a/pkg/observability/logs/oxy_test.go
|
||||
+++ b/pkg/observability/logs/oxy_test.go
|
||||
@@ -20,5 +20,5 @@ func TestNewOxyWrapper(t *testing.T) {
|
||||
|
||||
logger.Info("foo")
|
||||
|
||||
- assert.Equal(t, "<nil> INF oxy_test.go:21 > foo\n", buf.String())
|
||||
+ assert.Equal(t, "<nil> INF github.com/traefik/traefik/v3/pkg/observability/logs/oxy_test.go:21 > foo\n", buf.String())
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "mc"
|
||||
version = "4.8.33"
|
||||
|
||||
[source]
|
||||
tarball = "https://ftp.osuosl.org/pub/midnightcommander/mc-4.8.33.tar.xz"
|
||||
sha256 = "cae149d42f844e5185d8c81d7db3913a8fa214c65f852200a9d896b468af164c"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = "./configure --prefix=/usr PERL=/home/sergio/.nixstore/0x66x7027f00bgk414vbg05hfzp2f1l2-perl-5.42.0/bin/perl PERL_FOR_BUILD=/home/sergio/.nixstore/0x66x7027f00bgk414vbg05hfzp2f1l2-perl-5.42.0/bin/perl --disable-configure-args"
|
||||
|
||||
[deps]
|
||||
build = ["unzip", "file", "gettext", "glib", "libice", "libssh2", "openssl", "slang", "zip", "libx11", "e2fsprogs", "gpm"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "minikube"
|
||||
version = "1.38.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/kubernetes/minikube"
|
||||
commit = "v1.38.1"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go, which, libvirt
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "oh-my-posh"
|
||||
version = "29.19.0"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/jandedobbeleer/oh-my-posh"
|
||||
commit = "v29.19.0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "operator-sdk"
|
||||
version = "1.42.3"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/operator-framework/operator-sdk"
|
||||
commit = "v1.42.3"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go, gpgme
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "polaris"
|
||||
version = "0.14.3"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/agersant/polaris"
|
||||
commit = "0.14.3"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = ["--bin", "polaris"]
|
||||
|
||||
[build.phases]
|
||||
install = "mkdir -p /out/usr/bin && cp target/release/polaris /out/usr/bin/polaris"
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "blackbox_exporter"
|
||||
version = "0.28.0"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/prometheus/blackbox_exporter"
|
||||
commit = "v0.28.0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "node_exporter"
|
||||
version = "1.11.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/prometheus/node_exporter"
|
||||
commit = "v1.11.1"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,102 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -120,11 +120,11 @@
|
||||
.PHONY: generate
|
||||
generate: install-mockery generate-openapi ## Run all code generations
|
||||
mockery
|
||||
- CGO_ENABLED=0 go generate ./...
|
||||
+ CGO_ENABLED=${CGO_ENABLED} go generate ./...
|
||||
|
||||
generate-openapi: ## Run openapi code generation and format it
|
||||
- CGO_ENABLED=0 go run github.com/swaggo/swag/cmd/swag fmt --exclude rpc/proto
|
||||
- CGO_ENABLED=0 go generate cmd/server/openapi.go
|
||||
+ CGO_ENABLED=${CGO_ENABLED} go run github.com/swaggo/swag/cmd/swag fmt --exclude rpc/proto
|
||||
+ CGO_ENABLED=${CGO_ENABLED} go generate cmd/server/openapi.go
|
||||
|
||||
generate-license-header: install-addlicense
|
||||
addlicense -c "Woodpecker Authors" -l apache -ignore "vendor/**" -ignore cmd/server/openapi/docs.go **/*.go
|
||||
@@ -218,10 +218,10 @@
|
||||
CGO_ENABLED=${CGO_ENABLED} GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags '$(TAGS)' -ldflags '${LDFLAGS}' -o ${DIST_DIR}/woodpecker-server${BIN_SUFFIX} go.woodpecker-ci.org/woodpecker/v3/cmd/server
|
||||
|
||||
build-agent: ## Build agent
|
||||
- CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags '$(TAGS)' -ldflags '${LDFLAGS}' -o ${DIST_DIR}/woodpecker-agent${BIN_SUFFIX} go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
+ CGO_ENABLED=${CGO_ENABLED} GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags '$(TAGS)' -ldflags '${LDFLAGS}' -o ${DIST_DIR}/woodpecker-agent${BIN_SUFFIX} go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
|
||||
build-cli: ## Build cli
|
||||
- CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags '$(TAGS)' -ldflags '${LDFLAGS}' -o ${DIST_DIR}/woodpecker-cli${BIN_SUFFIX} go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
+ CGO_ENABLED=${CGO_ENABLED} GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags '$(TAGS)' -ldflags '${LDFLAGS}' -o ${DIST_DIR}/woodpecker-cli${BIN_SUFFIX} go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
|
||||
build-tarball: ## Build tar archive
|
||||
mkdir -p ${DIST_DIR} && tar chzvf ${DIST_DIR}/woodpecker-src.tar.gz \
|
||||
@@ -291,13 +291,13 @@
|
||||
|
||||
release-agent: ## Create agent binaries for release
|
||||
# compile
|
||||
- GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/linux_amd64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
- GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/linux_arm64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
- GOOS=linux GOARCH=riscv64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/linux_riscv64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
- GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/linux_arm/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
- GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/windows_amd64/woodpecker-agent.exe go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
- GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/darwin_amd64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
- GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/darwin_arm64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
+ GOOS=linux GOARCH=amd64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/linux_amd64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
+ GOOS=linux GOARCH=arm64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/linux_arm64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
+ GOOS=linux GOARCH=riscv64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/linux_riscv64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
+ GOOS=linux GOARCH=arm CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/linux_arm/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
+ GOOS=windows GOARCH=amd64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/windows_amd64/woodpecker-agent.exe go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
+ GOOS=darwin GOARCH=amd64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/darwin_amd64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
+ GOOS=darwin GOARCH=arm64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -tags 'grpcnotrace $(TAGS)' -o ${DIST_DIR}/agent/darwin_arm64/woodpecker-agent go.woodpecker-ci.org/woodpecker/v3/cmd/agent
|
||||
# tar binary files
|
||||
tar -cvzf ${DIST_DIR}/woodpecker-agent_linux_amd64.tar.gz -C ${DIST_DIR}/agent/linux_amd64 woodpecker-agent
|
||||
tar -cvzf ${DIST_DIR}/woodpecker-agent_linux_arm64.tar.gz -C ${DIST_DIR}/agent/linux_arm64 woodpecker-agent
|
||||
@@ -311,13 +311,13 @@
|
||||
|
||||
release-cli: ## Create cli binaries for release
|
||||
# compile
|
||||
- GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/linux_amd64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
- GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/linux_arm64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
- GOOS=linux GOARCH=riscv64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/linux_riscv64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
- GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/linux_arm/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
- GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/windows_amd64/woodpecker-cli.exe go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
- GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/darwin_amd64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
- GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/darwin_arm64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
+ GOOS=linux GOARCH=amd64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/linux_amd64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
+ GOOS=linux GOARCH=arm64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/linux_arm64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
+ GOOS=linux GOARCH=riscv64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/linux_riscv64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
+ GOOS=linux GOARCH=arm CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/linux_arm/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
+ GOOS=windows GOARCH=amd64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/windows_amd64/woodpecker-cli.exe go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
+ GOOS=darwin GOARCH=amd64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/darwin_amd64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
+ GOOS=darwin GOARCH=arm64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -o ${DIST_DIR}/cli/darwin_arm64/woodpecker-cli go.woodpecker-ci.org/woodpecker/v3/cmd/cli
|
||||
# tar binary files
|
||||
tar -cvzf ${DIST_DIR}/woodpecker-cli_linux_amd64.tar.gz -C ${DIST_DIR}/cli/linux_amd64 woodpecker-cli
|
||||
tar -cvzf ${DIST_DIR}/woodpecker-cli_linux_arm64.tar.gz -C ${DIST_DIR}/cli/linux_arm64 woodpecker-cli
|
||||
@@ -369,8 +369,8 @@
|
||||
|
||||
.PHONY: generate-docs
|
||||
generate-docs: ## Generate docs (currently only for the cli)
|
||||
- CGO_ENABLED=0 go generate cmd/cli/app.go
|
||||
- CGO_ENABLED=0 go generate cmd/server/openapi.go
|
||||
+ CGO_ENABLED=${CGO_ENABLED} go generate cmd/cli/app.go
|
||||
+ CGO_ENABLED=${CGO_ENABLED} go generate cmd/server/openapi.go
|
||||
|
||||
.PHONY: build-docs
|
||||
build-docs: generate-docs docs-dependencies ## Build the docs
|
||||
@@ -379,15 +379,15 @@
|
||||
##@ Man Pages
|
||||
.PHONY: man-cli
|
||||
man-cli: ## Generate man pages for cli
|
||||
- mkdir -p dist/ && CGO_ENABLED=0 go run -tags man cmd/cli/man.go cmd/cli/app.go > dist/woodpecker-cli.man.1 && gzip -9 -f dist/woodpecker-cli.man.1
|
||||
+ mkdir -p dist/ && CGO_ENABLED=${CGO_ENABLED} go run -tags man cmd/cli/man.go cmd/cli/app.go > dist/woodpecker-cli.man.1 && gzip -9 -f dist/woodpecker-cli.man.1
|
||||
|
||||
.PHONY: man-agent
|
||||
man-agent: ## Generate man pages for agent
|
||||
- mkdir -p dist/ && CGO_ENABLED=0 go run -tags man cmd/agent/man.go > dist/woodpecker-agent.man.1 && gzip -9 -f dist/woodpecker-agent.man.1
|
||||
+ mkdir -p dist/ && CGO_ENABLED=${CGO_ENABLED} go run -tags man cmd/agent/man.go > dist/woodpecker-agent.man.1 && gzip -9 -f dist/woodpecker-agent.man.1
|
||||
|
||||
.PHONY: man-server
|
||||
man-server: ## Generate man pages for server
|
||||
- mkdir -p dist/ && CGO_ENABLED=0 go run -tags man go.woodpecker-ci.org/woodpecker/v3/cmd/server > dist/woodpecker-server.man.1 && gzip -9 -f dist/woodpecker-server.man.1
|
||||
+ mkdir -p dist/ && CGO_ENABLED=${CGO_ENABLED} go run -tags man go.woodpecker-ci.org/woodpecker/v3/cmd/server > dist/woodpecker-server.man.1 && gzip -9 -f dist/woodpecker-server.man.1
|
||||
|
||||
.PHONY: man
|
||||
man: man-cli man-agent man-server ## Generate all man pages
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "skaffold"
|
||||
version = "2.23.0"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/GoogleContainerTools/skaffold"
|
||||
commit = "v2.23.0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,428 @@
|
||||
--- a/pipeline/backend/local/local_test.go
|
||||
+++ b/pipeline/backend/local/local_test.go
|
||||
@@ -19,14 +19,14 @@
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
- "io"
|
||||
+// "io"
|
||||
"os"
|
||||
- "os/exec"
|
||||
+// "os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
- "slices"
|
||||
+// "slices"
|
||||
"strings"
|
||||
- "sync"
|
||||
+// "sync"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -163,206 +163,206 @@
|
||||
}
|
||||
})
|
||||
}
|
||||
-
|
||||
-func TestRunStep(t *testing.T) {
|
||||
- if runtime.GOOS != "linux" {
|
||||
- t.Skip("skipping on non linux due to shell availability and symlink capability")
|
||||
- }
|
||||
-
|
||||
- // we lookup shell tools we use first and create the PATH var based on that
|
||||
- shBinary, err := exec.LookPath("sh")
|
||||
- require.NoError(t, err)
|
||||
- path := []string{filepath.Dir(shBinary)}
|
||||
- echoBinary, err := exec.LookPath("echo")
|
||||
- require.NoError(t, err)
|
||||
- if echoPath := filepath.Dir(echoBinary); !slices.Contains(path, echoPath) {
|
||||
- path = append(path, echoPath)
|
||||
- }
|
||||
- // we make a symlinc to have a posix but non default shell
|
||||
- altShellDir := t.TempDir()
|
||||
- altShellPath := filepath.Join(altShellDir, "altsh")
|
||||
- require.NoError(t, os.Symlink(shBinary, altShellPath))
|
||||
- path = append(path, altShellDir)
|
||||
-
|
||||
- prepairEnv(t)
|
||||
- //nolint:usetesting // reason: we use prepairEnv()
|
||||
- os.Setenv("PATH", strings.Join(path, ":"))
|
||||
-
|
||||
- backend, _ := New().(*local)
|
||||
- backend.tempDir = t.TempDir()
|
||||
- backend.isolatedHome = true
|
||||
- ctx := t.Context()
|
||||
- taskUUID := "test-run-tasks"
|
||||
-
|
||||
- // Setup workflow
|
||||
- require.NoError(t, backend.SetupWorkflow(ctx, &types.Config{}, taskUUID))
|
||||
-
|
||||
- t.Run("type commands", func(t *testing.T) {
|
||||
- step := &types.Step{
|
||||
- UUID: "step-1",
|
||||
- Name: "test-step",
|
||||
- Type: types.StepTypeCommands,
|
||||
- Image: "sh",
|
||||
- Commands: []string{"echo hello", "env"},
|
||||
- Environment: map[string]string{
|
||||
- "TEST_VAR": "test_value",
|
||||
- },
|
||||
- }
|
||||
-
|
||||
- t.Run("start successful", func(t *testing.T) {
|
||||
- err = backend.StartStep(ctx, step, taskUUID)
|
||||
- require.NoError(t, err)
|
||||
-
|
||||
- // Verify command was started
|
||||
- state, err := backend.getWorkflowState(taskUUID)
|
||||
- require.NoError(t, err)
|
||||
- stepStateWraped, contains := state.stepState.Load(step.UUID)
|
||||
- assert.True(t, contains)
|
||||
- stepState, _ := stepStateWraped.(*stepState)
|
||||
- assert.NotNil(t, stepState.cmd)
|
||||
-
|
||||
- var outputData []byte
|
||||
- outputDataMutex := sync.Mutex{}
|
||||
- go t.Run("TailStep", func(t *testing.T) {
|
||||
- outputDataMutex.Lock()
|
||||
- go outputDataMutex.Unlock()
|
||||
- output, err := backend.TailStep(ctx, step, taskUUID)
|
||||
- require.NoError(t, err)
|
||||
- assert.NotNil(t, output)
|
||||
-
|
||||
- // Read output
|
||||
- outputData, err = io.ReadAll(output)
|
||||
- require.NoError(t, err)
|
||||
- })
|
||||
-
|
||||
- // Wait for step to finish
|
||||
- t.Run("TestWaitStep", func(t *testing.T) {
|
||||
- time.Sleep(time.Second / 5) // needed to prevent race condition on outputData
|
||||
- state, err := backend.WaitStep(ctx, step, taskUUID)
|
||||
- require.NoError(t, err)
|
||||
- assert.True(t, state.Exited)
|
||||
- assert.Equal(t, 0, state.ExitCode)
|
||||
- })
|
||||
-
|
||||
- // Verify output
|
||||
- outputDataMutex.Lock()
|
||||
- go outputDataMutex.Unlock()
|
||||
- outputLines := strings.Split(strings.TrimSpace(string(outputData)), "\n")
|
||||
- require.Truef(t, len(outputLines) > 3, "output of lines must be bigger than 3 at least but we got: %#v", outputLines)
|
||||
- // we first test output without environments
|
||||
- wantBeforeEnvs := []string{
|
||||
- "+ echo hello",
|
||||
- "hello",
|
||||
- "+ env",
|
||||
- }
|
||||
- gotBeforeEnvs := outputLines[:len(wantBeforeEnvs)]
|
||||
- assert.Equal(t, wantBeforeEnvs, gotBeforeEnvs)
|
||||
- // we filter out nixos specific stuff catched up in env output
|
||||
- gotEnvs := slices.DeleteFunc(outputLines[len(wantBeforeEnvs):], func(s string) bool {
|
||||
- return strings.HasPrefix(s, "_=") || strings.HasPrefix(s, "SHLVL=")
|
||||
- })
|
||||
- assert.ElementsMatch(t, []string{
|
||||
- "PWD=" + state.baseDir + "/workspace",
|
||||
- "USERPROFILE=" + state.baseDir + "/home",
|
||||
- "TEST_VAR=test_value",
|
||||
- "HOME=" + state.baseDir + "/home",
|
||||
- "CI_WORKSPACE=" + state.baseDir + "/workspace",
|
||||
- "PATH=" + strings.Join(path, ":"),
|
||||
- }, gotEnvs)
|
||||
-
|
||||
- t.Run("TestDestroyStep", func(t *testing.T) {
|
||||
- err := backend.DestroyStep(ctx, step, taskUUID)
|
||||
- require.NoError(t, err)
|
||||
- })
|
||||
- })
|
||||
- })
|
||||
-
|
||||
- t.Run("run command in alternate unix shell", func(t *testing.T) {
|
||||
- step := &types.Step{
|
||||
- UUID: "step-altshell",
|
||||
- Name: "altshell",
|
||||
- Type: types.StepTypeCommands,
|
||||
- Image: "altsh",
|
||||
- Commands: []string{"echo success"},
|
||||
- }
|
||||
-
|
||||
- err = backend.StartStep(ctx, step, taskUUID)
|
||||
- require.NoError(t, err)
|
||||
-
|
||||
- state, err := backend.WaitStep(ctx, step, taskUUID)
|
||||
- require.NoError(t, err)
|
||||
- assert.True(t, state.Exited)
|
||||
- assert.Equal(t, 0, state.ExitCode)
|
||||
- })
|
||||
-
|
||||
- t.Run("command should fail", func(t *testing.T) {
|
||||
- step := &types.Step{
|
||||
- UUID: "step-fail",
|
||||
- Name: "fail-step",
|
||||
- Type: types.StepTypeCommands,
|
||||
- Image: "sh",
|
||||
- Commands: []string{"exit 1"},
|
||||
- }
|
||||
-
|
||||
- err = backend.StartStep(ctx, step, taskUUID)
|
||||
- require.NoError(t, err)
|
||||
-
|
||||
- state, err := backend.WaitStep(ctx, step, taskUUID)
|
||||
- require.NoError(t, err)
|
||||
- assert.True(t, state.Exited)
|
||||
- assert.Equal(t, 1, state.ExitCode)
|
||||
- })
|
||||
-
|
||||
- t.Run("WaitStep", func(t *testing.T) {
|
||||
- t.Run("step not found", func(t *testing.T) {
|
||||
- step := &types.Step{
|
||||
- UUID: "nonexistent-step",
|
||||
- Name: "missing",
|
||||
- }
|
||||
-
|
||||
- _, err = backend.WaitStep(ctx, step, taskUUID)
|
||||
- assert.Error(t, err)
|
||||
- assert.Contains(t, err.Error(), "not found")
|
||||
- })
|
||||
- })
|
||||
-
|
||||
- t.Run("type plugin", func(t *testing.T) {
|
||||
- step := &types.Step{
|
||||
- UUID: "step-plugin-1",
|
||||
- Name: "test-plugin",
|
||||
- Type: types.StepTypePlugin,
|
||||
- Image: "echo", // Use a binary that exists
|
||||
- Environment: map[string]string{},
|
||||
- }
|
||||
-
|
||||
- t.Run("start", func(t *testing.T) {
|
||||
- err = backend.StartStep(ctx, step, taskUUID)
|
||||
- require.NoError(t, err)
|
||||
-
|
||||
- // Verify command was started
|
||||
- state, err := backend.getStepState(taskUUID, step.UUID)
|
||||
- require.NoError(t, err)
|
||||
- assert.NotEqualf(t, 0, state.cmd.Process.Pid, "expect an pid of the process")
|
||||
- })
|
||||
- })
|
||||
-
|
||||
- t.Run("type unsupported", func(t *testing.T) {
|
||||
- step := &types.Step{
|
||||
- UUID: "step-unsupported",
|
||||
- Name: "test-unsupported",
|
||||
- Type: "unsupported-type",
|
||||
- }
|
||||
-
|
||||
- t.Run("start", func(t *testing.T) {
|
||||
- err = backend.StartStep(ctx, step, taskUUID)
|
||||
- assert.ErrorIs(t, err, ErrUnsupportedStepType)
|
||||
- })
|
||||
- })
|
||||
-
|
||||
- // Cleanup
|
||||
- assert.NoError(t, backend.DestroyWorkflow(ctx, &types.Config{}, taskUUID))
|
||||
-}
|
||||
-
|
||||
+//
|
||||
+//func TestRunStep(t *testing.T) {
|
||||
+// if runtime.GOOS != "linux" {
|
||||
+// t.Skip("skipping on non linux due to shell availability and symlink capability")
|
||||
+// }
|
||||
+//
|
||||
+// // we lookup shell tools we use first and create the PATH var based on that
|
||||
+// shBinary, err := exec.LookPath("sh")
|
||||
+// require.NoError(t, err)
|
||||
+// path := []string{filepath.Dir(shBinary)}
|
||||
+// echoBinary, err := exec.LookPath("echo")
|
||||
+// require.NoError(t, err)
|
||||
+// if echoPath := filepath.Dir(echoBinary); !slices.Contains(path, echoPath) {
|
||||
+// path = append(path, echoPath)
|
||||
+// }
|
||||
+// // we make a symlinc to have a posix but non default shell
|
||||
+// altShellDir := t.TempDir()
|
||||
+// altShellPath := filepath.Join(altShellDir, "altsh")
|
||||
+// require.NoError(t, os.Symlink(shBinary, altShellPath))
|
||||
+// path = append(path, altShellDir)
|
||||
+//
|
||||
+// prepairEnv(t)
|
||||
+// //nolint:usetesting // reason: we use prepairEnv()
|
||||
+// os.Setenv("PATH", strings.Join(path, ":"))
|
||||
+//
|
||||
+// backend, _ := New().(*local)
|
||||
+// backend.tempDir = t.TempDir()
|
||||
+// backend.isolatedHome = true
|
||||
+// ctx := t.Context()
|
||||
+// taskUUID := "test-run-tasks"
|
||||
+//
|
||||
+// // Setup workflow
|
||||
+// require.NoError(t, backend.SetupWorkflow(ctx, &types.Config{}, taskUUID))
|
||||
+//
|
||||
+// t.Run("type commands", func(t *testing.T) {
|
||||
+// step := &types.Step{
|
||||
+// UUID: "step-1",
|
||||
+// Name: "test-step",
|
||||
+// Type: types.StepTypeCommands,
|
||||
+// Image: "sh",
|
||||
+// Commands: []string{"echo hello", "env"},
|
||||
+// Environment: map[string]string{
|
||||
+// "TEST_VAR": "test_value",
|
||||
+// },
|
||||
+// }
|
||||
+//
|
||||
+// t.Run("start successful", func(t *testing.T) {
|
||||
+// err = backend.StartStep(ctx, step, taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+//
|
||||
+// // Verify command was started
|
||||
+// state, err := backend.getWorkflowState(taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+// stepStateWraped, contains := state.stepState.Load(step.UUID)
|
||||
+// assert.True(t, contains)
|
||||
+// stepState, _ := stepStateWraped.(*stepState)
|
||||
+// assert.NotNil(t, stepState.cmd)
|
||||
+//
|
||||
+// var outputData []byte
|
||||
+// outputDataMutex := sync.Mutex{}
|
||||
+// go t.Run("TailStep", func(t *testing.T) {
|
||||
+// outputDataMutex.Lock()
|
||||
+// go outputDataMutex.Unlock()
|
||||
+// output, err := backend.TailStep(ctx, step, taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+// assert.NotNil(t, output)
|
||||
+//
|
||||
+// // Read output
|
||||
+// outputData, err = io.ReadAll(output)
|
||||
+// require.NoError(t, err)
|
||||
+// })
|
||||
+//
|
||||
+// // Wait for step to finish
|
||||
+// t.Run("TestWaitStep", func(t *testing.T) {
|
||||
+// time.Sleep(time.Second / 5) // needed to prevent race condition on outputData
|
||||
+// state, err := backend.WaitStep(ctx, step, taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+// assert.True(t, state.Exited)
|
||||
+// assert.Equal(t, 0, state.ExitCode)
|
||||
+// })
|
||||
+//
|
||||
+// // Verify output
|
||||
+// outputDataMutex.Lock()
|
||||
+// go outputDataMutex.Unlock()
|
||||
+// outputLines := strings.Split(strings.TrimSpace(string(outputData)), "\n")
|
||||
+// require.Truef(t, len(outputLines) > 3, "output of lines must be bigger than 3 at least but we got: %#v", outputLines)
|
||||
+// // we first test output without environments
|
||||
+// wantBeforeEnvs := []string{
|
||||
+// "+ echo hello",
|
||||
+// "hello",
|
||||
+// "+ env",
|
||||
+// }
|
||||
+// gotBeforeEnvs := outputLines[:len(wantBeforeEnvs)]
|
||||
+// assert.Equal(t, wantBeforeEnvs, gotBeforeEnvs)
|
||||
+// // we filter out nixos specific stuff catched up in env output
|
||||
+// gotEnvs := slices.DeleteFunc(outputLines[len(wantBeforeEnvs):], func(s string) bool {
|
||||
+// return strings.HasPrefix(s, "_=") || strings.HasPrefix(s, "SHLVL=")
|
||||
+// })
|
||||
+// assert.ElementsMatch(t, []string{
|
||||
+// "PWD=" + state.baseDir + "/workspace",
|
||||
+// "USERPROFILE=" + state.baseDir + "/home",
|
||||
+// "TEST_VAR=test_value",
|
||||
+// "HOME=" + state.baseDir + "/home",
|
||||
+// "CI_WORKSPACE=" + state.baseDir + "/workspace",
|
||||
+// "PATH=" + strings.Join(path, ":"),
|
||||
+// }, gotEnvs)
|
||||
+//
|
||||
+// t.Run("TestDestroyStep", func(t *testing.T) {
|
||||
+// err := backend.DestroyStep(ctx, step, taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+// })
|
||||
+// })
|
||||
+// })
|
||||
+//
|
||||
+// t.Run("run command in alternate unix shell", func(t *testing.T) {
|
||||
+// step := &types.Step{
|
||||
+// UUID: "step-altshell",
|
||||
+// Name: "altshell",
|
||||
+// Type: types.StepTypeCommands,
|
||||
+// Image: "altsh",
|
||||
+// Commands: []string{"echo success"},
|
||||
+// }
|
||||
+//
|
||||
+// err = backend.StartStep(ctx, step, taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+//
|
||||
+// state, err := backend.WaitStep(ctx, step, taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+// assert.True(t, state.Exited)
|
||||
+// assert.Equal(t, 0, state.ExitCode)
|
||||
+// })
|
||||
+//
|
||||
+// t.Run("command should fail", func(t *testing.T) {
|
||||
+// step := &types.Step{
|
||||
+// UUID: "step-fail",
|
||||
+// Name: "fail-step",
|
||||
+// Type: types.StepTypeCommands,
|
||||
+// Image: "sh",
|
||||
+// Commands: []string{"exit 1"},
|
||||
+// }
|
||||
+//
|
||||
+// err = backend.StartStep(ctx, step, taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+//
|
||||
+// state, err := backend.WaitStep(ctx, step, taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+// assert.True(t, state.Exited)
|
||||
+// assert.Equal(t, 1, state.ExitCode)
|
||||
+// })
|
||||
+//
|
||||
+// t.Run("WaitStep", func(t *testing.T) {
|
||||
+// t.Run("step not found", func(t *testing.T) {
|
||||
+// step := &types.Step{
|
||||
+// UUID: "nonexistent-step",
|
||||
+// Name: "missing",
|
||||
+// }
|
||||
+//
|
||||
+// _, err = backend.WaitStep(ctx, step, taskUUID)
|
||||
+// assert.Error(t, err)
|
||||
+// assert.Contains(t, err.Error(), "not found")
|
||||
+// })
|
||||
+// })
|
||||
+//
|
||||
+// t.Run("type plugin", func(t *testing.T) {
|
||||
+// step := &types.Step{
|
||||
+// UUID: "step-plugin-1",
|
||||
+// Name: "test-plugin",
|
||||
+// Type: types.StepTypePlugin,
|
||||
+// Image: "echo", // Use a binary that exists
|
||||
+// Environment: map[string]string{},
|
||||
+// }
|
||||
+//
|
||||
+// t.Run("start", func(t *testing.T) {
|
||||
+// err = backend.StartStep(ctx, step, taskUUID)
|
||||
+// require.NoError(t, err)
|
||||
+//
|
||||
+// // Verify command was started
|
||||
+// state, err := backend.getStepState(taskUUID, step.UUID)
|
||||
+// require.NoError(t, err)
|
||||
+// assert.NotEqualf(t, 0, state.cmd.Process.Pid, "expect an pid of the process")
|
||||
+// })
|
||||
+// })
|
||||
+//
|
||||
+// t.Run("type unsupported", func(t *testing.T) {
|
||||
+// step := &types.Step{
|
||||
+// UUID: "step-unsupported",
|
||||
+// Name: "test-unsupported",
|
||||
+// Type: "unsupported-type",
|
||||
+// }
|
||||
+//
|
||||
+// t.Run("start", func(t *testing.T) {
|
||||
+// err = backend.StartStep(ctx, step, taskUUID)
|
||||
+// assert.ErrorIs(t, err, ErrUnsupportedStepType)
|
||||
+// })
|
||||
+// })
|
||||
+//
|
||||
+// // Cleanup
|
||||
+// assert.NoError(t, backend.DestroyWorkflow(ctx, &types.Config{}, taskUUID))
|
||||
+//}
|
||||
+//
|
||||
func TestStateManagement(t *testing.T) {
|
||||
backend, _ := New().(*local)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "skopeo"
|
||||
version = "1.23.0"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/containers/skopeo"
|
||||
commit = "v1.23.0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go, go-md2man, gpgme, lvm2, btrfs-progs
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,22 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "ssh-vault"
|
||||
version = "1.2.10"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/ssh-vault/ssh-vault"
|
||||
commit = "1.2.10"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = ["--bin", "ssh-vault"]
|
||||
|
||||
[build.phases]
|
||||
install = "mkdir -p /out/usr/bin && cp target/release/ssh-vault /out/usr/bin/ssh-vault"
|
||||
|
||||
# buildInputs de nix (NO deps de hammer — cargo vendorea; backend Rust por
|
||||
# defecto). Si algún sys-crate C falla, adaptá per-paquete (patch/feature): openssl
|
||||
@@ -0,0 +1,43 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "staticcheck"
|
||||
version = "2026.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/dominikh/go-tools/archive/refs/tags/2026.1.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "d0594069505f3a16cb0de51c92edf22d53c66ce42829575e29b72f1a83e9b929a2c7876d5af3d12321ead054cf525a9de6cdfbbd163e070314788f5aea20bcab"
|
||||
sha256 = "4b20d65194e5462264c784f2968de65fcd7aba8e9efa37aa9b1fadc13b29699b"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
export CGO_CPPFLAGS="$CPPFLAGS"
|
||||
export CGO_CFLAGS="$CFLAGS"
|
||||
export CGO_CXXFLAGS="$CXXFLAGS"
|
||||
export CGO_LDFLAGS="$LDFLAGS"
|
||||
|
||||
mkdir -p bin
|
||||
go build -o ./bin ./...
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
install -p -Dm755 -t "/out/usr/bin/" bin/*
|
||||
|
||||
install -Dm644 "LICENSE" "/out/usr/share/licenses/staticcheck/LICENSE"
|
||||
install -Dm644 "LICENSE-THIRD-PARTY" \
|
||||
"/out/usr/share/licenses/staticcheck/LICENSE-THIRD-PARTY"
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
@@ -0,0 +1,45 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "syft"
|
||||
version = "1.42.4"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/anchore/syft/archive/v1.42.4/syft-1.42.4.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "846637c7ced355722f86aee40a080383cd708f680216e83c664d3103af37ed4e205b2b64369cb61bd4f39233645ec3fa3694c527144e228b73b5c88b2f6242ba"
|
||||
sha256 = "8e84d456e253149d0e0c5a381a1cc4121a0e169c0608c73f99eed9ea56ed036d"
|
||||
patches = ["disable-update-check.patch"]
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
go build -ldflags "
|
||||
-X main.version=1.42.4
|
||||
" \
|
||||
-o bin/syft ./cmd/syft
|
||||
|
||||
bin/syft completion bash >syft.bash
|
||||
bin/syft completion fish >syft.fish
|
||||
bin/syft completion zsh >syft.zsh
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
install -Dm755 bin/syft -t "/out"/usr/bin/
|
||||
|
||||
install -Dm644 syft.bash "/out"/usr/share/bash-completion/completions/syft
|
||||
install -Dm644 syft.fish "/out"/usr/share/fish/vendor_completions.d/syft.fish
|
||||
install -Dm644 syft.zsh "/out"/usr/share/zsh/site-functions/_syft
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "syncthing"
|
||||
version = "2.1.0"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/syncthing/syncthing"
|
||||
commit = "v2.1.0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,98 @@
|
||||
Add "syslog" log format.
|
||||
|
||||
I didn't contribute this patch to the upstream because I don't wanna
|
||||
contribute to any Go projects. However, if you find this patch useful,
|
||||
feel free to send it to the upstream under your name.
|
||||
|
||||
diff --git a/log/configuration.go b/log/configuration.go
|
||||
index a756242b8..cbe4dabcd 100644
|
||||
--- a/log/configuration.go
|
||||
+++ b/log/configuration.go
|
||||
@@ -13,6 +13,7 @@ const (
|
||||
FormatRunner = "runner"
|
||||
FormatText = "text"
|
||||
FormatJSON = "json"
|
||||
+ FormatSyslog = "syslog"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -26,7 +27,7 @@ var (
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "log-format",
|
||||
- Usage: "Choose log format (options: runner, text, json)",
|
||||
+ Usage: "Choose log format (options: runner, text, json, syslog)",
|
||||
EnvVar: "LOG_FORMAT",
|
||||
},
|
||||
cli.StringFlag{
|
||||
@@ -44,6 +45,7 @@ var (
|
||||
FormatJSON: &logrus.JSONFormatter{
|
||||
TimestampFormat: time.RFC3339Nano,
|
||||
},
|
||||
+ FormatSyslog: new(SyslogFormatter),
|
||||
}
|
||||
)
|
||||
|
||||
diff --git a/log/syslog_formatter.go b/log/syslog_formatter.go
|
||||
new file mode 100644
|
||||
index 000000000..fe60e0fc7
|
||||
--- /dev/null
|
||||
+++ b/log/syslog_formatter.go
|
||||
@@ -0,0 +1,57 @@
|
||||
+package log
|
||||
+
|
||||
+import (
|
||||
+ "bytes"
|
||||
+ "fmt"
|
||||
+ "time"
|
||||
+
|
||||
+ "github.com/sirupsen/logrus"
|
||||
+)
|
||||
+
|
||||
+type SyslogFormatter struct {
|
||||
+}
|
||||
+
|
||||
+func (f *SyslogFormatter) Format(entry *logrus.Entry) ([]byte, error) {
|
||||
+ var b *bytes.Buffer
|
||||
+ if entry.Buffer != nil {
|
||||
+ b = entry.Buffer
|
||||
+ } else {
|
||||
+ b = &bytes.Buffer{}
|
||||
+ }
|
||||
+
|
||||
+ if entry.Message != "" {
|
||||
+ b.WriteString(entry.Message)
|
||||
+ }
|
||||
+ dataWritten := false
|
||||
+ for key, val := range entry.Data {
|
||||
+ if key == "now" {
|
||||
+ continue
|
||||
+ }
|
||||
+ var stringVal string
|
||||
+
|
||||
+ switch val := val.(type) {
|
||||
+ case time.Time:
|
||||
+ stringVal = val.Format(time.RFC3339)
|
||||
+ default:
|
||||
+ var ok bool
|
||||
+ if stringVal, ok = val.(string); !ok {
|
||||
+ stringVal = fmt.Sprint(val)
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // The format is inspired by RFC 5424 STRUCTURED-DATA.
|
||||
+ if dataWritten {
|
||||
+ b.WriteByte(' ')
|
||||
+ } else {
|
||||
+ b.WriteString(" [meta ")
|
||||
+ dataWritten = true
|
||||
+ }
|
||||
+ b.WriteString(fmt.Sprintf("%s=%q", key, stringVal))
|
||||
+ }
|
||||
+ if dataWritten {
|
||||
+ b.WriteByte(']')
|
||||
+ }
|
||||
+ b.WriteByte('\n')
|
||||
+
|
||||
+ return b.Bytes(), nil
|
||||
+}
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "talosctl"
|
||||
version = "1.13.5"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/siderolabs/talos"
|
||||
commit = "v1.13.5"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,36 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "tea"
|
||||
version = "0.9.2"
|
||||
|
||||
[source]
|
||||
tarball = "https://gitea.com/gitea/tea/archive/v0.9.2.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "05be2ea5f845773324c10fe8f0340c96f40f392b7ef8cafb44463b7a5492de2216799d8cc339e7dc42e921afcd3ba0e21be133a87385e907af47261733935e62"
|
||||
sha256 = "b5a944de8db7d5af4aa87e9640261c925f094d2b6d26c4faf2701773acab219b"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
local sdk=$(go list -f '{{.Version}}' -m code.gitea.io/sdk/gitea)
|
||||
|
||||
go build -ldflags "-X main.Version=0.9.2 -X main.SDK=$sdk" -o tea
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
install -Dm755 "$builddir"/tea "/out"/usr/bin/tea
|
||||
install -Dm644 "$srcdir"/bash_autocomplete "/out"/usr/share/bash-completion/completions/tea
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "terrascan"
|
||||
version = "1.19.9"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/accurics/terrascan"
|
||||
commit = "v1.19.9"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "tilt"
|
||||
version = "0.37.3"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/tilt-dev/tilt"
|
||||
commit = "v0.37.3"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,49 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "traefik"
|
||||
version = "3.7.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/traefik/traefik/releases/download/v3.7.1/traefik-v3.7.1.src.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "dd09d3e0a548c300a07c446c1b25f45f46c44c24eb214c899738ffa99ada80cd52e9493be0afdb793fcb57f52ac0b797c5a77f1cfd22a6e154af3cca4544083a"
|
||||
sha256 = "8d6e5b7bae2b255e42f0ff3a8cf3c7eb02e1a29778931e67d7b2cde1759336f5"
|
||||
patches = ["logs_tests.patch"]
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
local builddate="$(date -u "+%Y-%m-%dT%TZ" ${SOURCE_DATE_EPOCH:+-d @$SOURCE_DATE_EPOCH})"
|
||||
|
||||
go generate -v
|
||||
go build -v -ldflags "-s -w -extldflags \"$LDFLAGS\" \
|
||||
-X github.com/traefik/traefik/v3/pkg/version.Codename=cheddar \
|
||||
-X github.com/traefik/traefik/v3/pkg/version.Version=3.7.1 \
|
||||
-X github.com/traefik/traefik/v3/pkg/version.BuildDate=$builddate" \
|
||||
-o bin/ ./cmd/traefik
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
install -Dm755 bin/traefik "/out"/usr/sbin/traefik
|
||||
install -Dm644 LICENSE.md -t "/out"/usr/share/licenses/traefik/
|
||||
install -dm775 -o traefik -g traefik "/out"/var/log/traefik
|
||||
install -dm750 -o traefik -g traefik "/out"/etc/traefik
|
||||
install -m644 -o traefik -g traefik "$srcdir"/traefik.yaml \
|
||||
-t "/out"/etc/traefik/
|
||||
|
||||
install -Dm755 "$srcdir"/traefik.initd "/out"/etc/init.d/traefik
|
||||
install -Dm644 "$srcdir"/traefik.confd "/out"/etc/conf.d/traefik
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "trivy"
|
||||
version = "0.72.0"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/aquasecurity/trivy"
|
||||
commit = "v0.72.0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,43 @@
|
||||
Replace gitlab-runner/log/system_logger with standard logrus/hooks/syslog.
|
||||
There are two reasons:
|
||||
|
||||
1. gitlab-runner/log/system_logger delegates the syslog initialization
|
||||
(syslog.Dial) to kardianos/service, which doesn't set the syslog
|
||||
facility. This results in messages logged with the "kern" facility.
|
||||
2. gitlab-runner/log/system_logger maps Error, Panic, and Fatal levels
|
||||
to the syslog's "err" level, but Panic and Fatal could be mapped to
|
||||
the "crit" level.
|
||||
|
||||
I didn't contribute this patch to the upstream because I don't wanna
|
||||
contribute to any Go projects. However, if you find this patch useful,
|
||||
feel free to send it to the upstream under your name.
|
||||
|
||||
diff --git a/commands/multi.go b/commands/multi.go
|
||||
index e62594be6..a0c2d659b 100644
|
||||
--- a/commands/multi.go
|
||||
+++ b/commands/multi.go
|
||||
@@ -37,6 +37,9 @@ import (
|
||||
"gitlab.com/gitlab-org/gitlab-runner/log"
|
||||
"gitlab.com/gitlab-org/gitlab-runner/network"
|
||||
"gitlab.com/gitlab-org/gitlab-runner/session"
|
||||
+
|
||||
+ "log/syslog"
|
||||
+ lSyslog "github.com/sirupsen/logrus/hooks/syslog"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -1462,7 +1465,13 @@ func (mr *RunCommand) Execute(_ *cli.Context) {
|
||||
}
|
||||
|
||||
if mr.Syslog {
|
||||
- log.SetSystemLogger(logrus.StandardLogger(), svc)
|
||||
+ hook, err := lSyslog.NewSyslogHook("", "", syslog.LOG_DAEMON | syslog.LOG_INFO, mr.ServiceName)
|
||||
+ if err == nil {
|
||||
+ logrus.AddHook(hook)
|
||||
+ } else {
|
||||
+ logrus.WithError(err).
|
||||
+ Error("Error while setting up the system logger")
|
||||
+ }
|
||||
}
|
||||
|
||||
mr.sentryLogHookMutex.Lock()
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "vale"
|
||||
version = "3.15.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/errata-ai/vale"
|
||||
commit = "v3.15.1"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "werf"
|
||||
version = "2.72.1"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/werf/werf"
|
||||
commit = "v2.72.1"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go, btrfs-progs, glibc
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,65 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "woodpecker"
|
||||
version = "3.14.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/woodpecker-ci/woodpecker/releases/download/v3.14.1/woodpecker-src.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "6a8a7183f2a7ffaa9df6b4e23396153ceedfd08e666ec9aecd49de35ff75b09aff437c76452878769270e548fe4d564031a1fbe9dff84a217334e97214e4c510"
|
||||
sha256 = "dafba02f6a55f748a80d0fa4d66720c7436af446baf903e5187553834226f3a4"
|
||||
patches = ["respect-cgo-flags.patch", "disable-race-tests.patch", "disable-ui-openai-generation.patch", "skip-alternate-unix-sh-test.patch"]
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
export TARGETARCH="$(go env GOHOSTARCH)"
|
||||
make build -j1 STATIC_BUILD=false VERSION=3.14.1
|
||||
make docs
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
# Install server
|
||||
install -Dm755 "$builddir"/dist/woodpecker-server \
|
||||
"/out"/usr/bin/woodpecker-server
|
||||
|
||||
# Install initd & conf
|
||||
install -Dm755 "$srcdir"/woodpecker-server.initd \
|
||||
"/out"/etc/init.d/woodpecker-server
|
||||
install -Dm640 -o woodpecker -g woodpecker "$srcdir"/woodpecker-server.conf \
|
||||
"/out"/etc/woodpecker/server.conf
|
||||
|
||||
# Install web resources
|
||||
install -d -m 755 -o woodpecker -g woodpecker "/out"/usr/share/webapps/woodpecker
|
||||
cp -R "$builddir"/web/dist/* "/out"/usr/share/webapps/woodpecker/
|
||||
|
||||
# Create empty log & lib directories
|
||||
install -d -m0750 -o woodpecker -g woodpecker \
|
||||
"/out"/var/log/woodpecker "/out"/var/lib/woodpecker
|
||||
|
||||
# Install logrotate rules
|
||||
install -Dm644 "$srcdir"/woodpecker-server.logrotate \
|
||||
"/out"/etc/logrotate.d/woodpecker-server
|
||||
|
||||
# Install mandocs
|
||||
mkdir -p "/out"/usr/share/doc/woodpecker
|
||||
cp -R "$builddir"/docs/docs/* "/out"/usr/share/doc/woodpecker/
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
|
||||
# depends de runtime de Alpine (NO build-deps): openrc
|
||||
|
||||
[deps]
|
||||
build = ["go-swag", "sqlite", "pnpm"]
|
||||
@@ -0,0 +1,19 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "wtf"
|
||||
version = "0.5.7"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/0vercl0k/wtf"
|
||||
commit = "v0.5.7"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[deps]
|
||||
build = ["cmake", "ninja"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
||||
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
||||
# compiler/link/phases y adaptá hasta que compile.
|
||||
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
||||
name = "wuzz"
|
||||
version = "0.5.0"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/asciimoo/wuzz"
|
||||
commit = "v0.5.0"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
# buildInputs de nix (no usados con CGO off): go
|
||||
[deps]
|
||||
build = ["go"]
|
||||
@@ -0,0 +1,36 @@
|
||||
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
|
||||
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
|
||||
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
|
||||
name = "xq"
|
||||
version = "1.3.0"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/sibprogrammer/xq/archive/v1.3.0/xq-1.3.0.tar.gz"
|
||||
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
|
||||
# sha512 = "5f8678d566f0fbaf9466771b20dde42dca8ef3d6a6c828031dd608279e6b2cefe4090bcc22b4ac098b3cac5a8150e2dc4a6c37a296fd1243bb46948368d33284"
|
||||
sha256 = "6f75b4433ac83b9ddbc60e1106349e22654d14bb58e198f811b2f9d10181ee8f"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
|
||||
compile = '''
|
||||
_abuild_phase() {
|
||||
go build
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
# de package() de Alpine (traducido $pkgdir→/out):
|
||||
install = '''
|
||||
_abuild_phase() {
|
||||
install -Dm755 xq /out/usr/bin/xq
|
||||
install -Dm644 README.md "/out/usr/share/doc/xq/README"
|
||||
install -Dm644 LICENSE "/out"/usr/share/licenses/xq/LICENSE
|
||||
install -Dm644 docs/xq.man /out/usr/share/man/man1/xq.1
|
||||
}
|
||||
_abuild_phase
|
||||
'''
|
||||
@@ -0,0 +1,60 @@
|
||||
anew
|
||||
apko
|
||||
assetfinder
|
||||
atlas
|
||||
aws-vault
|
||||
bom
|
||||
chaos-client
|
||||
chartmuseum
|
||||
container-diff
|
||||
crane
|
||||
dagger
|
||||
dbgate
|
||||
dlv
|
||||
dnsprobe
|
||||
dolt
|
||||
dyff-cli
|
||||
etcd
|
||||
fabric
|
||||
falco
|
||||
flux
|
||||
fluxcd
|
||||
flyctl
|
||||
forgejo
|
||||
fortio
|
||||
frp
|
||||
fubectl
|
||||
gf
|
||||
gitlab-runner
|
||||
gitleaks2
|
||||
glow-cli
|
||||
glsh
|
||||
gocron
|
||||
godoc
|
||||
gohugo
|
||||
golang-migrate
|
||||
goldilocks
|
||||
gomi
|
||||
gotop
|
||||
gping-go
|
||||
gross
|
||||
grype
|
||||
grype2
|
||||
gtt
|
||||
htmlq-go
|
||||
httpstat
|
||||
inlets
|
||||
jb
|
||||
jc
|
||||
jnv-go
|
||||
jsonnet
|
||||
k0s
|
||||
kics
|
||||
krew
|
||||
kubescape
|
||||
kubetail
|
||||
kubie
|
||||
lego
|
||||
mc
|
||||
melange
|
||||
minikube
|
||||
@@ -0,0 +1,48 @@
|
||||
mockery
|
||||
mq
|
||||
nancy
|
||||
oh-my-posh
|
||||
opa
|
||||
operator-sdk
|
||||
pint
|
||||
polaris
|
||||
prometheus-blackbox-exporter
|
||||
prometheus-node-exporter
|
||||
puredns
|
||||
redpanda-connect
|
||||
rekor-cli
|
||||
restique
|
||||
revive
|
||||
sake
|
||||
scorecard
|
||||
scw
|
||||
sealed-secrets
|
||||
seaweedfs
|
||||
skaffold
|
||||
skopeo
|
||||
skopeo-go
|
||||
sops-cli
|
||||
ssh-vault
|
||||
sshs-go
|
||||
staticcheck
|
||||
step-ca
|
||||
stringer
|
||||
syft
|
||||
syncthing
|
||||
talosctl
|
||||
tea
|
||||
terrascan
|
||||
tilt
|
||||
timetrace
|
||||
traefik
|
||||
trivy
|
||||
trivy2
|
||||
usqlx
|
||||
vale
|
||||
werf
|
||||
woodpecker
|
||||
wtf
|
||||
wuzz
|
||||
xq
|
||||
yamllint-go
|
||||
yh
|
||||
Reference in New Issue
Block a user