From ce7b6b816767646e7b7d97f14a6e3a016741e37e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Michaud?= Date: Fri, 17 Jan 2020 20:46:51 +0100 Subject: [PATCH] Build docker image upfront in CI and use it in integration tests. (#555) * Build docker image upfront in CI and use it in integration tests. Previously, the development workflow was broken because the container generated from Dockerfile.CI was used in dev environments but the binary was not pre-built as it is on buildkite. I propose to just remove that image and use the "to be published" image instead in integration tests. This will have several advantages: - Fix the dev workflow. - Remove CI arch from authelia-scripts build command - Optimize CI time in buildkite since we'll cache a way small artifact - We don't build authelia more than once for earch arch. * Fix suites and only build ARM images on master or tagged commits * Optimise pipeline dependencies and Kubernetes suite to utilise cache * Run unit tests and docker image build in parallel. * Fix suite trying to write on read only fs. Co-authored-by: Amir Zarrinkafsh --- .buildkite/hooks/pre-artifact | 9 +- .buildkite/hooks/pre-command | 11 +- .buildkite/pipeline.yml | 33 +-- .buildkite/steps/buildimages.sh | 5 + Dockerfile | 4 +- Dockerfile.CI | 17 -- Dockerfile.arm32v7 | 2 +- Dockerfile.arm64v8 | 2 +- cmd/authelia-scripts/cmd_docker.go | 2 +- example/compose/authelia/Dockerfile.backend | 4 +- ...end.yml => docker-compose.backend.dev.yml} | 1 - ...st.yml => docker-compose.backend.dist.yml} | 4 +- ...nd.yml => docker-compose.frontend.dev.yml} | 2 - ...t.yml => docker-compose.frontend.dist.yml} | 0 .../authelia/resources/entrypoint-backend.sh | 18 +- .../authelia/resources/entrypoint-frontend.sh | 8 +- .../compose/authelia/resources/reflex.conf | 2 +- .../authelia/resources/run-backend-dev.sh | 11 + .../compose/authelia/resources/run-backend.sh | 8 - example/compose/duo-api/Dockerfile | 2 +- internal/suites/Standalone/configuration.yml | 2 +- internal/suites/Standalone/docker-compose.yml | 1 - internal/suites/docker.go | 10 + internal/suites/suite_bypass_all.go | 6 +- internal/suites/suite_docker.go | 4 +- internal/suites/suite_duo_push.go | 6 +- internal/suites/suite_haproxy.go | 6 +- internal/suites/suite_high_availability.go | 6 +- internal/suites/suite_kubernetes.go | 13 +- internal/suites/suite_ldap.go | 6 +- internal/suites/suite_mariadb.go | 6 +- internal/suites/suite_network_acl.go | 6 +- internal/suites/suite_postgres.go | 6 +- internal/suites/suite_short_timeouts.go | 6 +- internal/suites/suite_standalone.go | 6 +- internal/suites/suite_standalone_test.go | 2 +- internal/suites/suite_traefik.go | 6 +- web/yarn.lock | 216 +----------------- 38 files changed, 119 insertions(+), 340 deletions(-) delete mode 100644 Dockerfile.CI rename example/compose/authelia/{docker-compose.backend.yml => docker-compose.backend.dev.yml} (89%) rename example/compose/authelia/{docker-compose.backend-dist.yml => docker-compose.backend.dist.yml} (58%) rename example/compose/authelia/{docker-compose.frontend.yml => docker-compose.frontend.dev.yml} (87%) rename example/compose/authelia/{docker-compose.frontend-dist.yml => docker-compose.frontend.dist.yml} (100%) create mode 100755 example/compose/authelia/resources/run-backend-dev.sh delete mode 100755 example/compose/authelia/resources/run-backend.sh diff --git a/.buildkite/hooks/pre-artifact b/.buildkite/hooks/pre-artifact index f14eaf59d..8bfaab03f 100755 --- a/.buildkite/hooks/pre-artifact +++ b/.buildkite/hooks/pre-artifact @@ -4,13 +4,6 @@ set +u DOCKER_IMAGE=authelia/authelia -if [[ $BUILDKITE_COMMAND == "authelia-scripts --log-level debug ci" ]]; -then - echo "--- :go::node: Saving artifacts for :chrome::selenium: Integration tests" - tar -I 'zstdmt -T0 -12' -cf dist.tar.zst dist - tar -I 'zstdmt -T0 -12' -cf web.tar.zst web -fi - if [[ $BUILDKITE_LABEL =~ ":docker: Build Image" ]]; then echo "--- :docker: Saving artifacts for :buildkite: :docker: :github: releases" @@ -21,6 +14,6 @@ then docker rm -f authelia-binary tar -I 'zstdmt -T0 -12' -cf authelia-linux-"${ARCH}".tar.zst authelia-linux-"${ARCH}" public_html sha256sum authelia-linux-"${ARCH}".tar.zst > authelia-linux-"${ARCH}".tar.zst.sha256 - # Saving image for push to DockerHub + # Saving image for push to docker hub docker save $DOCKER_IMAGE | zstdmt -T0 -12 > authelia-image-"${ARCH}".tar.zst fi \ No newline at end of file diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index d062e5fec..5f4670f59 100755 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -4,12 +4,11 @@ set +u if [[ $BUILDKITE_LABEL =~ ":selenium:" ]]; then - echo "--- :twisted_rightwards_arrows::desktop_computer: Downloading build artifacts" - buildkite-agent artifact download "dist.tar.zst" . - buildkite-agent artifact download "web.tar.zst" . - echo "--- :go::node: Extracting build artifacts" - tar xf dist.tar.zst - tar xf web.tar.zst + DEFAULT_ARCH=amd64 + echo "--- :docker: Extract, load and tag build container" + buildkite-agent artifact download "authelia-image-${DEFAULT_ARCH}*" . + zstdcat authelia-image-${DEFAULT_ARCH}.tar.zst | docker load + docker tag authelia/authelia authelia:dist fi if [[ $BUILDKITE_LABEL =~ ":docker: Deploy Image" ]]; diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 4a799fb8f..455cf6b5d 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,28 +1,19 @@ steps: - - label: ":hammer_and_wrench: Build & Test" + - label: ":hammer_and_wrench: Unit Test" command: "authelia-scripts --log-level debug ci" - artifact_paths: - - "dist.tar.zst" - - "web.tar.zst" - key: "build" - - - wait - - - label: ":chrome: Integration Tests" - command: ".buildkite/steps/e2etests.sh | buildkite-agent pipeline upload" - key: "test" - - - wait: - if: build.branch == "master" || build.branch =~ /^v/ - label: ":docker: Image Builds" command: ".buildkite/steps/buildimages.sh | buildkite-agent pipeline upload" agents: build: "true" - branches: "master v*" + depends_on: ~ + + - wait + + - label: ":chrome: Integration Tests" + command: ".buildkite/steps/e2etests.sh | buildkite-agent pipeline upload" depends_on: - - "build" - key: "build-docker" + - "build-docker-amd64" - wait: if: build.branch == "master" || build.branch =~ /^v/ @@ -30,9 +21,6 @@ steps: - label: ":docker: Image Deployments" command: ".buildkite/steps/deployimages.sh | buildkite-agent pipeline upload" branches: "master v*" - depends_on: - - "test" - - "build-docker" - wait: if: build.branch == "master" || build.branch =~ /^v/ @@ -47,5 +35,8 @@ steps: command: ".buildkite/steps/ghartifacts.sh" agents: upload: "fast" - depends_on: "build-docker" + depends_on: + - "build-docker-amd64" + - "build-docker-arm32v7" + - "build-docker-arm64v8" if: build.tag != null \ No newline at end of file diff --git a/.buildkite/steps/buildimages.sh b/.buildkite/steps/buildimages.sh index eed81008e..aaf256ee2 100755 --- a/.buildkite/steps/buildimages.sh +++ b/.buildkite/steps/buildimages.sh @@ -10,6 +10,11 @@ do echo " - \"authelia-image-${BUILD_ARCH}.tar.zst\"" echo " - \"authelia-linux-${BUILD_ARCH}.tar.zst\"" echo " - \"authelia-linux-${BUILD_ARCH}.tar.zst.sha256\"" + if [[ "${BUILD_ARCH}" != "amd64" ]]; + then + echo " branches: \"master v*\"" + fi echo " env:" echo " "ARCH: ${BUILD_ARCH}"" + echo " key: \"build-docker-${BUILD_ARCH}\"" done \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 9f336fd5e..a4c14baf3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ RUN echo "Write tag ${BUILD_TAG} and commit ${BUILD_COMMIT} in binary." && \ RUN cd cmd/authelia && \ GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -tags netgo -ldflags '-w -linkmode external -extldflags -static' -trimpath -o authelia && \ cd ../authelia-scripts && \ -GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -ldflags '-w -linkmode external -extldflags -static' -o authelia-scripts +GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -ldflags '-w -linkmode external -extldflags -static' -trimpath -o authelia-scripts # ======================================== # ===== Build image for the frontend ===== @@ -38,7 +38,7 @@ WORKDIR /node/src/app COPY web . # Install the dependencies and build -RUN yarn install && yarn build +RUN yarn install --frozen-lockfile && yarn build # =================================== # ===== Authelia official image ===== diff --git a/Dockerfile.CI b/Dockerfile.CI deleted file mode 100644 index ac5580e0c..000000000 --- a/Dockerfile.CI +++ /dev/null @@ -1,17 +0,0 @@ -# =================================== -# ===== Authelia CI image ===== -# =================================== -FROM alpine:3.11.2 - -RUN apk --no-cache add ca-certificates tzdata - -WORKDIR /usr/app - -COPY dist ./ - -EXPOSE 9091 - -VOLUME /etc/authelia -VOLUME /var/lib/authelia - -CMD ["./authelia", "--config", "/etc/authelia/configuration.yml"] \ No newline at end of file diff --git a/Dockerfile.arm32v7 b/Dockerfile.arm32v7 index e3f69f8a4..d2316b008 100644 --- a/Dockerfile.arm32v7 +++ b/Dockerfile.arm32v7 @@ -42,7 +42,7 @@ WORKDIR /node/src/app COPY web . # Install the dependencies and build -RUN yarn install && yarn build +RUN yarn install --frozen-lockfile && yarn build # =================================== # ===== Authelia official image ===== diff --git a/Dockerfile.arm64v8 b/Dockerfile.arm64v8 index 79138e5f1..98f29aa25 100644 --- a/Dockerfile.arm64v8 +++ b/Dockerfile.arm64v8 @@ -42,7 +42,7 @@ WORKDIR /node/src/app COPY web . # Install the dependencies and build -RUN yarn install && yarn build +RUN yarn install --frozen-lockfile && yarn build # =================================== # ===== Authelia official image ===== diff --git a/cmd/authelia-scripts/cmd_docker.go b/cmd/authelia-scripts/cmd_docker.go index cb12ce9eb..f8d15fd78 100644 --- a/cmd/authelia-scripts/cmd_docker.go +++ b/cmd/authelia-scripts/cmd_docker.go @@ -14,7 +14,7 @@ import ( var arch string -var supportedArch = []string{"amd64", "arm32v7", "arm64v8", "CI"} +var supportedArch = []string{"amd64", "arm32v7", "arm64v8"} var defaultArch = "amd64" var buildkite = os.Getenv("BUILDKITE") var buildkiteQEMU = os.Getenv("BUILDKITE_AGENT_META_DATA_QEMU") diff --git a/example/compose/authelia/Dockerfile.backend b/example/compose/authelia/Dockerfile.backend index 78e640496..eda677b84 100644 --- a/example/compose/authelia/Dockerfile.backend +++ b/example/compose/authelia/Dockerfile.backend @@ -3,8 +3,10 @@ FROM golang:1.13-alpine ARG USER_ID ARG GROUP_ID +# gcc and musl-dev are required for building go-sqlite3 RUN addgroup --gid ${GROUP_ID} dev && \ - adduser --uid ${USER_ID} -G dev -D dev + adduser --uid ${USER_ID} -G dev -D dev && \ + apk --no-cache add gcc musl-dev RUN mkdir -p /etc/authelia && chown dev:dev /etc/authelia RUN mkdir -p /var/lib/authelia && chown dev:dev /var/lib/authelia diff --git a/example/compose/authelia/docker-compose.backend.yml b/example/compose/authelia/docker-compose.backend.dev.yml similarity index 89% rename from example/compose/authelia/docker-compose.backend.yml rename to example/compose/authelia/docker-compose.backend.dev.yml index e6e45a285..4ba712f5e 100644 --- a/example/compose/authelia/docker-compose.backend.yml +++ b/example/compose/authelia/docker-compose.backend.dev.yml @@ -15,7 +15,6 @@ services: - "${GOPATH}:/go" environment: - ENVIRONMENT=dev - - CI=${CI} networks: authelianet: ipv4_address: 192.168.240.50 \ No newline at end of file diff --git a/example/compose/authelia/docker-compose.backend-dist.yml b/example/compose/authelia/docker-compose.backend.dist.yml similarity index 58% rename from example/compose/authelia/docker-compose.backend-dist.yml rename to example/compose/authelia/docker-compose.backend.dist.yml index 6f55bdda3..348846a54 100644 --- a/example/compose/authelia/docker-compose.backend-dist.yml +++ b/example/compose/authelia/docker-compose.backend.dist.yml @@ -1,9 +1,7 @@ version: "3" services: authelia-backend: - build: - context: . - dockerfile: Dockerfile.CI + image: authelia:dist environment: - ENVIRONMENT=dev restart: always diff --git a/example/compose/authelia/docker-compose.frontend.yml b/example/compose/authelia/docker-compose.frontend.dev.yml similarity index 87% rename from example/compose/authelia/docker-compose.frontend.yml rename to example/compose/authelia/docker-compose.frontend.dev.yml index a27c47773..2253a46ef 100644 --- a/example/compose/authelia/docker-compose.frontend.yml +++ b/example/compose/authelia/docker-compose.frontend.dev.yml @@ -12,7 +12,5 @@ services: volumes: - "./example/compose/authelia/resources/:/resources" - "./web:/app" - environment: - - CI=${CI} networks: - authelianet \ No newline at end of file diff --git a/example/compose/authelia/docker-compose.frontend-dist.yml b/example/compose/authelia/docker-compose.frontend.dist.yml similarity index 100% rename from example/compose/authelia/docker-compose.frontend-dist.yml rename to example/compose/authelia/docker-compose.frontend.dist.yml diff --git a/example/compose/authelia/resources/entrypoint-backend.sh b/example/compose/authelia/resources/entrypoint-backend.sh index 11d17add4..f6290ea38 100755 --- a/example/compose/authelia/resources/entrypoint-backend.sh +++ b/example/compose/authelia/resources/entrypoint-backend.sh @@ -2,17 +2,11 @@ set -x -if [ "$CI" == "true" ]; -then - echo "Use CI version of Authelia" - /resources/run-backend.sh -else - echo "Use hot reloaded version of Authelia backend" - go get github.com/cespare/reflex +echo "Use hot reloaded version of Authelia backend" +go get github.com/cespare/reflex - # Sleep 10 seconds to wait the end of npm install updating web directory - # and making reflex reload multiple times. - sleep 10 +# Sleep 10 seconds to wait the end of npm install updating web directory +# and making reflex reload multiple times. +sleep 10 - reflex -c /resources/reflex.conf -fi \ No newline at end of file +reflex -c /resources/reflex.conf \ No newline at end of file diff --git a/example/compose/authelia/resources/entrypoint-frontend.sh b/example/compose/authelia/resources/entrypoint-frontend.sh index 7e1ba2fbb..2dba2298e 100755 --- a/example/compose/authelia/resources/entrypoint-frontend.sh +++ b/example/compose/authelia/resources/entrypoint-frontend.sh @@ -2,10 +2,4 @@ set -x -if [ "$CI" == "true" ]; -then - echo "Use CI version of Authelia frontend" - yarn start -else - yarn install && yarn start -fi \ No newline at end of file +yarn install --frozen-lockfile && yarn start \ No newline at end of file diff --git a/example/compose/authelia/resources/reflex.conf b/example/compose/authelia/resources/reflex.conf index 0c8051961..1afafadc1 100644 --- a/example/compose/authelia/resources/reflex.conf +++ b/example/compose/authelia/resources/reflex.conf @@ -1 +1 @@ --r '(\.go$|go\.mod|\.sh|\.yml)' -s /resources/run-backend.sh \ No newline at end of file +-r '(\.go$|go\.mod|\.sh|\.yml)' -s /resources/run-backend-dev.sh \ No newline at end of file diff --git a/example/compose/authelia/resources/run-backend-dev.sh b/example/compose/authelia/resources/run-backend-dev.sh new file mode 100755 index 000000000..a809cf089 --- /dev/null +++ b/example/compose/authelia/resources/run-backend-dev.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +# Build the binary +go build -o /tmp/authelia/authelia-tmp cmd/authelia/*.go +while true; +do + /tmp/authelia/authelia-tmp --config /etc/authelia/configuration.yml + sleep 10 +done \ No newline at end of file diff --git a/example/compose/authelia/resources/run-backend.sh b/example/compose/authelia/resources/run-backend.sh deleted file mode 100755 index 1fb339a8e..000000000 --- a/example/compose/authelia/resources/run-backend.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -set -e - -while /app/dist/authelia --config /etc/authelia/configuration.yml; [ $? -ne 0 ]; -do - echo "Waiting on services for Authelia" -done \ No newline at end of file diff --git a/example/compose/duo-api/Dockerfile b/example/compose/duo-api/Dockerfile index 51d227524..49cbbad84 100644 --- a/example/compose/duo-api/Dockerfile +++ b/example/compose/duo-api/Dockerfile @@ -3,7 +3,7 @@ FROM node:12-alpine WORKDIR /usr/app/src ADD package.json package.json -RUN yarn install --production --silent +RUN yarn install --frozen-lockfile --production --silent ADD duo_api.js duo_api.js diff --git a/internal/suites/Standalone/configuration.yml b/internal/suites/Standalone/configuration.yml index 0e2dbdffd..c56df9bb6 100644 --- a/internal/suites/Standalone/configuration.yml +++ b/internal/suites/Standalone/configuration.yml @@ -22,7 +22,7 @@ session: storage: local: - path: /tmp/authelia/db.sqlite3 + path: /tmp/db.sqlite3 totp: issuer: example.com diff --git a/internal/suites/Standalone/docker-compose.yml b/internal/suites/Standalone/docker-compose.yml index 305ddfc42..9231bb69f 100644 --- a/internal/suites/Standalone/docker-compose.yml +++ b/internal/suites/Standalone/docker-compose.yml @@ -4,4 +4,3 @@ services: volumes: - "./internal/suites/Standalone/configuration.yml:/etc/authelia/configuration.yml:ro" - "./internal/suites/Standalone/users.yml:/var/lib/authelia/users.yml" - - "/tmp/authelia:/tmp/authelia" diff --git a/internal/suites/docker.go b/internal/suites/docker.go index 448026cbc..2a90ba16b 100644 --- a/internal/suites/docker.go +++ b/internal/suites/docker.go @@ -2,6 +2,7 @@ package suites import ( "fmt" + "os" "os/exec" "strings" @@ -16,6 +17,15 @@ type DockerEnvironment struct { // NewDockerEnvironment create a new docker environment func NewDockerEnvironment(files []string) *DockerEnvironment { + if os.Getenv("CI") == "true" { + for i := range files { + files[i] = strings.ReplaceAll(files[i], "{}", "dist") + } + } else { + for i := range files { + files[i] = strings.ReplaceAll(files[i], "{}", "dev") + } + } return &DockerEnvironment{dockerComposeFiles: files} } diff --git a/internal/suites/suite_bypass_all.go b/internal/suites/suite_bypass_all.go index 87dbe05fc..bd7592c89 100644 --- a/internal/suites/suite_bypass_all.go +++ b/internal/suites/suite_bypass_all.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/BypassAll/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/nginx/portal/docker-compose.yml", "example/compose/httpbin/docker-compose.yml", @@ -25,7 +25,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_docker.go b/internal/suites/suite_docker.go index 86d307ae3..334be2364 100644 --- a/internal/suites/suite_docker.go +++ b/internal/suites/suite_docker.go @@ -9,8 +9,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/Docker/docker-compose.yml", - "example/compose/authelia/docker-compose.backend-dist.yml", - "example/compose/authelia/docker-compose.frontend-dist.yml", + "example/compose/authelia/docker-compose.backend.dist.yml", + "example/compose/authelia/docker-compose.frontend.dist.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/nginx/portal/docker-compose.yml", "example/compose/smtp/docker-compose.yml", diff --git a/internal/suites/suite_duo_push.go b/internal/suites/suite_duo_push.go index f6442e989..e99fbc8a5 100644 --- a/internal/suites/suite_duo_push.go +++ b/internal/suites/suite_duo_push.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/DuoPush/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/nginx/portal/docker-compose.yml", "example/compose/duo-api/docker-compose.yml", @@ -23,7 +23,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_haproxy.go b/internal/suites/suite_haproxy.go index f3aea69af..7c7ba6c93 100644 --- a/internal/suites/suite_haproxy.go +++ b/internal/suites/suite_haproxy.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/HAProxy/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/haproxy/docker-compose.yml", "example/compose/smtp/docker-compose.yml", @@ -25,7 +25,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_high_availability.go b/internal/suites/suite_high_availability.go index a5f43c0bd..981e643f4 100644 --- a/internal/suites/suite_high_availability.go +++ b/internal/suites/suite_high_availability.go @@ -10,8 +10,8 @@ var highAvailabilitySuiteName = "HighAvailability" var haDockerEnvironment = NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/HighAvailability/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/mariadb/docker-compose.yml", "example/compose/redis/docker-compose.yml", "example/compose/nginx/backend/docker-compose.yml", @@ -28,7 +28,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(haDockerEnvironment) + return waitUntilAutheliaBackendIsReady(haDockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_kubernetes.go b/internal/suites/suite_kubernetes.go index f22a31367..3ffd4cba0 100644 --- a/internal/suites/suite_kubernetes.go +++ b/internal/suites/suite_kubernetes.go @@ -2,6 +2,7 @@ package suites import ( "fmt" + "os" "time" "github.com/authelia/authelia/internal/utils" @@ -41,13 +42,15 @@ func init() { } } - log.Debug("Building authelia:dist image...") - if err := utils.Shell("authelia-scripts docker build --arch=CI").Run(); err != nil { - return err + log.Debug("Building authelia:dist image or use cache if already built...") + if os.Getenv("CI") != "true" { + if err := utils.Shell("authelia-scripts docker build").Run(); err != nil { + return err + } } log.Debug("Loading images into Kubernetes container...") - if err = loadDockerImages(); err != nil { + if err := loadDockerImages(); err != nil { return err } @@ -57,7 +60,7 @@ func init() { } log.Debug("Deploying thirdparties...") - if err = kubectl.DeployThirdparties(); err != nil { + if err := kubectl.DeployThirdparties(); err != nil { return err } diff --git a/internal/suites/suite_ldap.go b/internal/suites/suite_ldap.go index 66838f054..cf114a46c 100644 --- a/internal/suites/suite_ldap.go +++ b/internal/suites/suite_ldap.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/LDAP/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/nginx/portal/docker-compose.yml", "example/compose/smtp/docker-compose.yml", @@ -27,7 +27,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_mariadb.go b/internal/suites/suite_mariadb.go index cdf46efdf..6da030298 100644 --- a/internal/suites/suite_mariadb.go +++ b/internal/suites/suite_mariadb.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/Mariadb/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/nginx/portal/docker-compose.yml", "example/compose/smtp/docker-compose.yml", @@ -25,7 +25,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_network_acl.go b/internal/suites/suite_network_acl.go index a2f6c74b4..bf809e484 100644 --- a/internal/suites/suite_network_acl.go +++ b/internal/suites/suite_network_acl.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/NetworkACL/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/nginx/portal/docker-compose.yml", "example/compose/squid/docker-compose.yml", @@ -26,7 +26,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_postgres.go b/internal/suites/suite_postgres.go index 26033736b..454defaaf 100644 --- a/internal/suites/suite_postgres.go +++ b/internal/suites/suite_postgres.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/Postgres/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/nginx/portal/docker-compose.yml", "example/compose/smtp/docker-compose.yml", @@ -25,7 +25,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_short_timeouts.go b/internal/suites/suite_short_timeouts.go index 394c846b5..d06f12677 100644 --- a/internal/suites/suite_short_timeouts.go +++ b/internal/suites/suite_short_timeouts.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/ShortTimeouts/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/nginx/portal/docker-compose.yml", "example/compose/smtp/docker-compose.yml", @@ -23,7 +23,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_standalone.go b/internal/suites/suite_standalone.go index f89a7f6ad..109f21e98 100644 --- a/internal/suites/suite_standalone.go +++ b/internal/suites/suite_standalone.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/Standalone/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/nginx/portal/docker-compose.yml", "example/compose/smtp/docker-compose.yml", @@ -25,7 +25,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/internal/suites/suite_standalone_test.go b/internal/suites/suite_standalone_test.go index b022b2cdd..9842e412f 100644 --- a/internal/suites/suite_standalone_test.go +++ b/internal/suites/suite_standalone_test.go @@ -75,7 +75,7 @@ func (s *StandaloneWebDriverSuite) TestShouldCheckUserIsAskedToRegisterDevice() password := "password" // Clean up any TOTP secret already in DB - provider := storage.NewSQLiteProvider("/tmp/authelia/db.sqlite3") + provider := storage.NewSQLiteProvider("/tmp/db.sqlite3") require.NoError(s.T(), provider.DeleteTOTPSecret(username)) // Login one factor diff --git a/internal/suites/suite_traefik.go b/internal/suites/suite_traefik.go index a5ac6c99f..c5017e9f5 100644 --- a/internal/suites/suite_traefik.go +++ b/internal/suites/suite_traefik.go @@ -11,8 +11,8 @@ func init() { dockerEnvironment := NewDockerEnvironment([]string{ "docker-compose.yml", "internal/suites/Traefik/docker-compose.yml", - "example/compose/authelia/docker-compose.backend.yml", - "example/compose/authelia/docker-compose.frontend.yml", + "example/compose/authelia/docker-compose.backend.{}.yml", + "example/compose/authelia/docker-compose.frontend.{}.yml", "example/compose/nginx/backend/docker-compose.yml", "example/compose/traefik/docker-compose.yml", "example/compose/smtp/docker-compose.yml", @@ -25,7 +25,7 @@ func init() { return err } - return waitUntilAutheliaIsReady(dockerEnvironment) + return waitUntilAutheliaBackendIsReady(dockerEnvironment) } onSetupTimeout := func() error { diff --git a/web/yarn.lock b/web/yarn.lock index a0ba192de..e09f37b03 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -1805,11 +1805,6 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -1970,19 +1965,11 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -aproba@^1.0.3, aproba@^1.1.1: +aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -3079,11 +3066,6 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -3538,7 +3520,7 @@ debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3588,11 +3570,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -3652,11 +3629,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3675,11 +3647,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -4792,13 +4759,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -4851,20 +4811,6 @@ functions-have-names@^1.2.0: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.0.tgz#83da7583e4ea0c9ac5ff530f73394b033e0bf77d" integrity sha512-zKXyzksTeaCSw5wIX79iCA40YAa6CJMJgNg9wdkU/ERBrIdPSimPICYiLp65lRbSBqtiHql/HZfS2DyI/AH6tQ== -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -5062,11 +5008,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -5325,7 +5266,7 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5361,13 +5302,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -5459,7 +5393,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5, ini@~1.3.0: +ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -7003,21 +6937,6 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -7050,7 +6969,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -7150,15 +7069,6 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" -needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -7241,22 +7151,6 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.29, node-releases@^1.1.42: version "1.1.43" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.43.tgz#2c6ca237f88ce11d49631f11190bb01f8d0549f2" @@ -7264,14 +7158,6 @@ node-releases@^1.1.29, node-releases@^1.1.42: dependencies: semver "^6.3.0" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -7319,26 +7205,6 @@ normalize-url@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.7" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" - integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -7346,16 +7212,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -7576,11 +7432,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -7590,19 +7441,11 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -8884,16 +8727,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-app-polyfill@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.5.tgz#59c7377a0b9ed25692eeaca7ad9b12ef2d064709" @@ -9125,7 +8958,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -9465,7 +9298,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -9611,7 +9444,7 @@ selfsigned@^1.9.1: dependencies: node-forge "0.9.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9673,7 +9506,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -10082,7 +9915,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -10207,11 +10040,6 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - style-loader@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" @@ -10292,19 +10120,6 @@ tapable@^1.0.0, tapable@^1.1.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - terser-webpack-plugin@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" @@ -11007,13 +10822,6 @@ which@^1.2.9, which@^1.3.0, which@^1.3.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -11250,7 +11058,7 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==