Review Makefile
This commit is contained in:
parent
0779c6a139
commit
fa2c57f7cb
6 changed files with 110 additions and 172 deletions
|
@ -24,7 +24,7 @@ before_deploy:
|
||||||
sudo -E apt-get -yq update;
|
sudo -E apt-get -yq update;
|
||||||
sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install docker-ce=${DOCKER_VERSION}*;
|
sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install docker-ce=${DOCKER_VERSION}*;
|
||||||
docker version;
|
docker version;
|
||||||
make image;
|
make build-image;
|
||||||
if [ "$TRAVIS_TAG" ]; then
|
if [ "$TRAVIS_TAG" ]; then
|
||||||
make release-packages;
|
make release-packages;
|
||||||
fi;
|
fi;
|
||||||
|
|
176
Makefile
176
Makefile
|
@ -1,4 +1,22 @@
|
||||||
.PHONY: all docs docs-serve clear-static
|
.PHONY: all docs docs-serve
|
||||||
|
|
||||||
|
SRCS = $(shell git ls-files '*.go' | grep -v '^vendor/')
|
||||||
|
|
||||||
|
TAG_NAME := $(shell git tag -l --contains HEAD)
|
||||||
|
SHA := $(shell git rev-parse HEAD)
|
||||||
|
VERSION_GIT := $(if $(TAG_NAME),$(TAG_NAME),$(SHA))
|
||||||
|
VERSION := $(if $(VERSION),$(VERSION),$(VERSION_GIT))
|
||||||
|
|
||||||
|
BIND_DIR := "dist"
|
||||||
|
|
||||||
|
GIT_BRANCH := $(subst heads/,,$(shell git rev-parse --abbrev-ref HEAD 2>/dev/null))
|
||||||
|
TRAEFIK_DEV_IMAGE := traefik-dev$(if $(GIT_BRANCH),:$(subst /,-,$(GIT_BRANCH)))
|
||||||
|
|
||||||
|
REPONAME := $(shell echo $(REPO) | tr '[:upper:]' '[:lower:]')
|
||||||
|
TRAEFIK_IMAGE := $(if $(REPONAME),$(REPONAME),"containous/traefik")
|
||||||
|
|
||||||
|
INTEGRATION_OPTS := $(if $(MAKE_DOCKER_HOST),-e "DOCKER_HOST=$(MAKE_DOCKER_HOST)", -e "TEST_CONTAINER=1" -v "/var/run/docker.sock:/var/run/docker.sock")
|
||||||
|
DOCKER_BUILD_ARGS := $(if $(DOCKER_VERSION), "--build-arg=DOCKER_VERSION=$(DOCKER_VERSION)",)
|
||||||
|
|
||||||
TRAEFIK_ENVS := \
|
TRAEFIK_ENVS := \
|
||||||
-e OS_ARCH_ARG \
|
-e OS_ARCH_ARG \
|
||||||
|
@ -11,93 +29,33 @@ TRAEFIK_ENVS := \
|
||||||
-e CI \
|
-e CI \
|
||||||
-e CONTAINER=DOCKER # Indicator for integration tests that we are running inside a container.
|
-e CONTAINER=DOCKER # Indicator for integration tests that we are running inside a container.
|
||||||
|
|
||||||
SRCS = $(shell git ls-files '*.go' | grep -v '^vendor/')
|
|
||||||
|
|
||||||
TAG_NAME := $(shell git tag -l --contains HEAD)
|
|
||||||
SHA := $(shell git rev-parse HEAD)
|
|
||||||
VERSION_GIT := $(if $(TAG_NAME),$(TAG_NAME),$(SHA))
|
|
||||||
VERSION := $(if $(VERSION),$(VERSION),$(VERSION_GIT))
|
|
||||||
|
|
||||||
BIND_DIR := "dist"
|
|
||||||
TRAEFIK_MOUNT := -v "$(CURDIR)/$(BIND_DIR):/go/src/github.com/containous/traefik/$(BIND_DIR)"
|
TRAEFIK_MOUNT := -v "$(CURDIR)/$(BIND_DIR):/go/src/github.com/containous/traefik/$(BIND_DIR)"
|
||||||
|
|
||||||
GIT_BRANCH := $(subst heads/,,$(shell git rev-parse --abbrev-ref HEAD 2>/dev/null))
|
|
||||||
TRAEFIK_DEV_IMAGE := traefik-dev$(if $(GIT_BRANCH),:$(subst /,-,$(GIT_BRANCH)))
|
|
||||||
REPONAME := $(shell echo $(REPO) | tr '[:upper:]' '[:lower:]')
|
|
||||||
TRAEFIK_IMAGE := $(if $(REPONAME),$(REPONAME),"containous/traefik")
|
|
||||||
INTEGRATION_OPTS := $(if $(MAKE_DOCKER_HOST),-e "DOCKER_HOST=$(MAKE_DOCKER_HOST)", -e "TEST_CONTAINER=1" -v "/var/run/docker.sock:/var/run/docker.sock")
|
|
||||||
|
|
||||||
DOCKER_BUILD_ARGS := $(if $(DOCKER_VERSION), "--build-arg=DOCKER_VERSION=$(DOCKER_VERSION)",)
|
|
||||||
DOCKER_RUN_OPTS := $(TRAEFIK_ENVS) $(TRAEFIK_MOUNT) "$(TRAEFIK_DEV_IMAGE)"
|
DOCKER_RUN_OPTS := $(TRAEFIK_ENVS) $(TRAEFIK_MOUNT) "$(TRAEFIK_DEV_IMAGE)"
|
||||||
DOCKER_RUN_TRAEFIK := docker run $(INTEGRATION_OPTS) -it $(DOCKER_RUN_OPTS)
|
DOCKER_RUN_TRAEFIK := docker run $(INTEGRATION_OPTS) -it $(DOCKER_RUN_OPTS)
|
||||||
DOCKER_RUN_TRAEFIK_NOTTY := docker run $(INTEGRATION_OPTS) -i $(DOCKER_RUN_OPTS)
|
DOCKER_RUN_TRAEFIK_NOTTY := docker run $(INTEGRATION_OPTS) -i $(DOCKER_RUN_OPTS)
|
||||||
|
|
||||||
print-%: ; @echo $*=$($*)
|
PRE_TARGET ?= build-dev-image
|
||||||
|
|
||||||
default: binary
|
default: binary
|
||||||
|
|
||||||
all: generate-webui build ## validate all checks, build linux binary, run all tests\ncross non-linux binaries
|
## Build Dev Docker image
|
||||||
$(DOCKER_RUN_TRAEFIK) ./script/make.sh
|
build-dev-image: dist
|
||||||
|
|
||||||
binary: generate-webui build ## build the linux binary
|
|
||||||
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate binary
|
|
||||||
|
|
||||||
crossbinary-default: generate-webui build
|
|
||||||
$(DOCKER_RUN_TRAEFIK_NOTTY) ./script/make.sh generate crossbinary-default
|
|
||||||
|
|
||||||
crossbinary-default-parallel:
|
|
||||||
$(MAKE) generate-webui
|
|
||||||
$(MAKE) build crossbinary-default
|
|
||||||
|
|
||||||
test: build ## run the unit and integration tests
|
|
||||||
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate test-unit binary test-integration
|
|
||||||
|
|
||||||
test-unit: build ## run the unit tests
|
|
||||||
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate test-unit
|
|
||||||
|
|
||||||
test-integration: build ## run the integration tests
|
|
||||||
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate binary test-integration
|
|
||||||
TEST_HOST=1 ./script/make.sh test-integration
|
|
||||||
|
|
||||||
validate: build ## validate code, vendor
|
|
||||||
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate validate-lint validate-misspell validate-vendor
|
|
||||||
|
|
||||||
build: dist
|
|
||||||
docker build $(DOCKER_BUILD_ARGS) -t "$(TRAEFIK_DEV_IMAGE)" -f build.Dockerfile .
|
docker build $(DOCKER_BUILD_ARGS) -t "$(TRAEFIK_DEV_IMAGE)" -f build.Dockerfile .
|
||||||
|
|
||||||
build-no-cache: dist
|
## Build Dev Docker image without cache
|
||||||
|
build-dev-image-no-cache: dist
|
||||||
docker build --no-cache -t "$(TRAEFIK_DEV_IMAGE)" -f build.Dockerfile .
|
docker build --no-cache -t "$(TRAEFIK_DEV_IMAGE)" -f build.Dockerfile .
|
||||||
|
|
||||||
shell: build ## start a shell inside the build env
|
## Create the "dist" directory
|
||||||
$(DOCKER_RUN_TRAEFIK) /bin/bash
|
|
||||||
|
|
||||||
image-dirty: binary ## build a docker traefik image
|
|
||||||
docker build -t $(TRAEFIK_IMAGE) .
|
|
||||||
|
|
||||||
image: clear-static binary ## clean up static directory and build a docker traefik image
|
|
||||||
docker build -t $(TRAEFIK_IMAGE) .
|
|
||||||
|
|
||||||
docs:
|
|
||||||
make -C ./docs docs
|
|
||||||
|
|
||||||
docs-serve:
|
|
||||||
make -C ./docs docs-serve
|
|
||||||
|
|
||||||
dist:
|
dist:
|
||||||
mkdir dist
|
mkdir dist
|
||||||
|
|
||||||
run-dev:
|
## Build WebUI Docker image
|
||||||
go generate
|
build-webui-image:
|
||||||
go build ./cmd/traefik
|
|
||||||
./traefik
|
|
||||||
|
|
||||||
clear-static:
|
|
||||||
rm -rf static
|
|
||||||
|
|
||||||
build-webui:
|
|
||||||
docker build -t traefik-webui -f webui/Dockerfile webui
|
docker build -t traefik-webui -f webui/Dockerfile webui
|
||||||
|
|
||||||
generate-webui: build-webui
|
## Generate WebUI
|
||||||
|
generate-webui: build-webui-image
|
||||||
if [ ! -d "static" ]; then \
|
if [ ! -d "static" ]; then \
|
||||||
mkdir -p static; \
|
mkdir -p static; \
|
||||||
docker run --rm -v "$$PWD/static":'/src/static' traefik-webui npm run build; \
|
docker run --rm -v "$$PWD/static":'/src/static' traefik-webui npm run build; \
|
||||||
|
@ -105,29 +63,76 @@ generate-webui: build-webui
|
||||||
echo 'For more informations show `webui/readme.md`' > $$PWD/static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md; \
|
echo 'For more informations show `webui/readme.md`' > $$PWD/static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
generate-crd:
|
## Build the linux binary
|
||||||
./script/update-generated-crd-code.sh
|
binary: generate-webui $(PRE_TARGET)
|
||||||
|
$(if $(PRE_TARGET),$(DOCKER_RUN_TRAEFIK)) ./script/make.sh generate binary
|
||||||
|
|
||||||
lint:
|
## Build the binary for the standard plaforms (linux, darwin, windows)
|
||||||
script/validate-lint
|
crossbinary-default: generate-webui build-dev-image
|
||||||
|
$(DOCKER_RUN_TRAEFIK_NOTTY) ./script/make.sh generate crossbinary-default
|
||||||
|
|
||||||
fmt:
|
## Build the binary for the standard plaforms (linux, darwin, windows) in parallel
|
||||||
gofmt -s -l -w $(SRCS)
|
crossbinary-default-parallel:
|
||||||
|
$(MAKE) generate-webui
|
||||||
|
$(MAKE) build-dev-image crossbinary-default
|
||||||
|
|
||||||
|
## Run the unit and integration tests
|
||||||
|
test: build-dev-image
|
||||||
|
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate test-unit binary test-integration
|
||||||
|
|
||||||
|
## Run the unit tests
|
||||||
|
test-unit: $(PRE_TARGET)
|
||||||
|
$(if $(PRE_TARGET),$(DOCKER_RUN_TRAEFIK)) ./script/make.sh generate test-unit
|
||||||
|
|
||||||
|
## Pull all images for integration tests
|
||||||
pull-images:
|
pull-images:
|
||||||
grep --no-filename -E '^\s+image:' ./integration/resources/compose/*.yml | awk '{print $$2}' | sort | uniq | xargs -P 6 -n 1 docker pull
|
grep --no-filename -E '^\s+image:' ./integration/resources/compose/*.yml | awk '{print $$2}' | sort | uniq | xargs -P 6 -n 1 docker pull
|
||||||
|
|
||||||
|
## Run the integration tests
|
||||||
|
test-integration: $(PRE_TARGET)
|
||||||
|
$(if $(PRE_TARGET),$(DOCKER_RUN_TRAEFIK),TEST_CONTAINER=1) ./script/make.sh generate binary test-integration
|
||||||
|
TEST_HOST=1 ./script/make.sh test-integration
|
||||||
|
|
||||||
|
## Validate code, vendor
|
||||||
|
validate: $(PRE_TARGET)
|
||||||
|
$(if $(PRE_TARGET),$(DOCKER_RUN_TRAEFIK)) ./script/make.sh generate validate-lint validate-misspell validate-vendor
|
||||||
|
|
||||||
|
## Clean up static directory and build a Docker Traefik image
|
||||||
|
build-image: binary
|
||||||
|
rm -rf static
|
||||||
|
docker build -t $(TRAEFIK_IMAGE) .
|
||||||
|
|
||||||
|
## Build a Docker Traefik image
|
||||||
|
build-image-dirty: binary
|
||||||
|
docker build -t $(TRAEFIK_IMAGE) .
|
||||||
|
|
||||||
|
## Start a shell inside the build env
|
||||||
|
shell: build-dev-image
|
||||||
|
$(DOCKER_RUN_TRAEFIK) /bin/bash
|
||||||
|
|
||||||
|
## Build documentation site
|
||||||
|
docs:
|
||||||
|
make -C ./docs docs
|
||||||
|
|
||||||
|
## Serve the documentation site localy
|
||||||
|
docs-serve:
|
||||||
|
make -C ./docs docs-serve
|
||||||
|
|
||||||
|
## Generate CRD clientset
|
||||||
|
generate-crd:
|
||||||
|
./script/update-generated-crd-code.sh
|
||||||
|
|
||||||
|
## Download dependencies
|
||||||
dep-ensure:
|
dep-ensure:
|
||||||
dep ensure -v
|
dep ensure -v
|
||||||
./script/prune-dep.sh
|
./script/prune-dep.sh
|
||||||
|
|
||||||
|
## Clean vendor directory
|
||||||
dep-prune:
|
dep-prune:
|
||||||
./script/prune-dep.sh
|
./script/prune-dep.sh
|
||||||
|
|
||||||
help: ## this help
|
## Create packages for the release
|
||||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
release-packages: generate-webui build-dev-image
|
||||||
|
|
||||||
release-packages: generate-webui build
|
|
||||||
rm -rf dist
|
rm -rf dist
|
||||||
$(DOCKER_RUN_TRAEFIK_NOTTY) goreleaser release --skip-publish
|
$(DOCKER_RUN_TRAEFIK_NOTTY) goreleaser release --skip-publish
|
||||||
$(DOCKER_RUN_TRAEFIK_NOTTY) tar cfz dist/traefik-${VERSION}.src.tar.gz \
|
$(DOCKER_RUN_TRAEFIK_NOTTY) tar cfz dist/traefik-${VERSION}.src.tar.gz \
|
||||||
|
@ -138,3 +143,12 @@ release-packages: generate-webui build
|
||||||
--exclude .github \
|
--exclude .github \
|
||||||
--exclude dist .
|
--exclude dist .
|
||||||
$(DOCKER_RUN_TRAEFIK_NOTTY) chown -R $(shell id -u):$(shell id -g) dist/
|
$(DOCKER_RUN_TRAEFIK_NOTTY) chown -R $(shell id -u):$(shell id -g) dist/
|
||||||
|
|
||||||
|
## Format the Code
|
||||||
|
fmt:
|
||||||
|
gofmt -s -l -w $(SRCS)
|
||||||
|
|
||||||
|
run-dev:
|
||||||
|
go generate
|
||||||
|
go build ./cmd/traefik
|
||||||
|
./traefik
|
||||||
|
|
|
@ -43,6 +43,19 @@ $ ls dist/
|
||||||
traefik*
|
traefik*
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The following targets can be executed outside Docker (we don't recommend that):
|
||||||
|
|
||||||
|
- `test-unit`
|
||||||
|
- `test-integration`
|
||||||
|
- `validate`
|
||||||
|
- `binary` (the webUI is still generated by using Docker)
|
||||||
|
|
||||||
|
ex:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PRE_TARGET= make test-unit
|
||||||
|
```
|
||||||
|
|
||||||
### Method 2: Using `go`
|
### Method 2: Using `go`
|
||||||
|
|
||||||
You need `go` v1.9+.
|
You need `go` v1.9+.
|
||||||
|
|
|
@ -5,14 +5,9 @@ if [ -z "${VALIDATE_UPSTREAM:-}" ]; then
|
||||||
# are running more than one validate bundlescript
|
# are running more than one validate bundlescript
|
||||||
|
|
||||||
VALIDATE_REPO='https://github.com/containous/traefik.git'
|
VALIDATE_REPO='https://github.com/containous/traefik.git'
|
||||||
|
## FIXME wrong assumption
|
||||||
VALIDATE_BRANCH='master'
|
VALIDATE_BRANCH='master'
|
||||||
|
|
||||||
# Should not be needed for now O:)
|
|
||||||
# if [ "$TRAVIS" = 'true' -a "$TRAVIS_PULL_REQUEST" != 'false' ]; then
|
|
||||||
# VALIDATE_REPO="https://github.com/${TRAVIS_REPO_SLUG}.git"
|
|
||||||
# VALIDATE_BRANCH="${TRAVIS_BRANCH}"
|
|
||||||
# fi
|
|
||||||
|
|
||||||
VALIDATE_HEAD="$(git rev-parse --verify HEAD)"
|
VALIDATE_HEAD="$(git rev-parse --verify HEAD)"
|
||||||
|
|
||||||
git fetch -q "$VALIDATE_REPO" "refs/heads/$VALIDATE_BRANCH"
|
git fetch -q "$VALIDATE_REPO" "refs/heads/$VALIDATE_BRANCH"
|
||||||
|
@ -26,9 +21,4 @@ if [ -z "${VALIDATE_UPSTREAM:-}" ]; then
|
||||||
git diff "$VALIDATE_COMMIT_DIFF" "$@"
|
git diff "$VALIDATE_COMMIT_DIFF" "$@"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
validate_log() {
|
|
||||||
if [ "$VALIDATE_UPSTREAM" != "$VALIDATE_HEAD" ]; then
|
|
||||||
git log "$VALIDATE_COMMIT_LOG" "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
./script/crossbinary-default
|
|
||||||
./script/crossbinary-others
|
|
|
@ -1,74 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if ! test -e autogen/genstatic/gen.go; then
|
|
||||||
echo >&2 'error: generate must be run before crossbinary'
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$VERSION" ]; then
|
|
||||||
VERSION=$(git rev-parse HEAD)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$CODENAME" ]; then
|
|
||||||
CODENAME=cheddar
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$DATE" ]; then
|
|
||||||
DATE=$(date -u '+%Y-%m-%d_%I:%M:%S%p')
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Building ${VERSION} ${CODENAME} ${DATE}"
|
|
||||||
|
|
||||||
GIT_REPO_URL='github.com/containous/traefik/pkg/version'
|
|
||||||
GO_BUILD_CMD="go build -ldflags"
|
|
||||||
GO_BUILD_OPT="-s -w -X ${GIT_REPO_URL}.Version=${VERSION} -X ${GIT_REPO_URL}.Codename=${CODENAME} -X ${GIT_REPO_URL}.BuildDate=${DATE}"
|
|
||||||
|
|
||||||
# Build arm binaries
|
|
||||||
OS_PLATFORM_ARG=(linux windows darwin)
|
|
||||||
OS_ARCH_ARG=(386)
|
|
||||||
for OS in ${OS_PLATFORM_ARG[@]}; do
|
|
||||||
BIN_EXT=''
|
|
||||||
if [ "$OS" == "windows" ]; then
|
|
||||||
BIN_EXT='.exe'
|
|
||||||
fi
|
|
||||||
for ARCH in ${OS_ARCH_ARG[@]}; do
|
|
||||||
echo "Building binary for ${OS}/${ARCH}..."
|
|
||||||
GOARCH=${ARCH} GOOS=${OS} CGO_ENABLED=0 ${GO_BUILD_CMD} "${GO_BUILD_OPT}" -o "dist/traefik_${OS}-${ARCH}${BIN_EXT}" ./cmd/traefik/
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
# Build Bsd binaries
|
|
||||||
OS_PLATFORM_ARG=(freebsd openbsd)
|
|
||||||
OS_ARCH_ARG=(386 amd64)
|
|
||||||
for OS in ${OS_PLATFORM_ARG[@]}; do
|
|
||||||
for ARCH in ${OS_ARCH_ARG[@]}; do
|
|
||||||
# Get rid of existing binaries
|
|
||||||
rm -f dist/traefik_${OS}-${ARCH}
|
|
||||||
echo "Building binary for $OS/$ARCH..."
|
|
||||||
GOARCH=${ARCH} GOOS=${OS} CGO_ENABLED=0 ${GO_BUILD_CMD} "$GO_BUILD_OPT" -o "dist/traefik_$OS-$ARCH" ./cmd/traefik/
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
# Build arm binaries
|
|
||||||
OS_PLATFORM_ARG=(linux)
|
|
||||||
OS_ARCH_ARG=(arm)
|
|
||||||
ARM_ARG=(6)
|
|
||||||
for OS in ${OS_PLATFORM_ARG[@]}; do
|
|
||||||
for ARCH in ${OS_ARCH_ARG[@]}; do
|
|
||||||
for ARM in ${ARM_ARG[@]}; do
|
|
||||||
echo "Building binary for $OS/${ARCH}32v${ARM}..."
|
|
||||||
GOARCH=${ARCH} GOOS=${OS} GOARM=${ARM} CGO_ENABLED=0 ${GO_BUILD_CMD} "$GO_BUILD_OPT" -o "dist/traefik_$OS-${ARCH}" ./cmd/traefik/
|
|
||||||
done
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
# Build ppc64le binaries
|
|
||||||
OS_PLATFORM_ARG=(linux)
|
|
||||||
OS_ARCH_ARG=(ppc64le)
|
|
||||||
for OS in ${OS_PLATFORM_ARG[@]}; do
|
|
||||||
for ARCH in ${OS_ARCH_ARG[@]}; do
|
|
||||||
echo "Building binary for ${OS}/${ARCH}..."
|
|
||||||
GOARCH=${ARCH} GOOS=${OS} CGO_ENABLED=0 ${GO_BUILD_CMD} "${GO_BUILD_OPT}" -o "dist/traefik_${OS}-${ARCH}" ./cmd/traefik/
|
|
||||||
done
|
|
||||||
done
|
|
Loading…
Reference in a new issue