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} (96%) rename example/compose/authelia/{docker-compose.backend-dist.yml => docker-compose.backend.dist.yml} (74%) rename example/compose/authelia/{docker-compose.frontend.yml => docker-compose.frontend.dev.yml} (92%) 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 f14eaf59..8bfaab03 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 d062e5fe..5f4670f5 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 4a799fb8..455cf6b5 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 eed81008..aaf256ee 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 9f336fd5..a4c14baf 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 ac5580e0..00000000 --- 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 e3f69f8a..d2316b00 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 79138e5f..98f29aa2 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 cb12ce9e..f8d15fd7 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 78e64049..eda677b8 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 96% rename from example/compose/authelia/docker-compose.backend.yml rename to example/compose/authelia/docker-compose.backend.dev.yml index e6e45a28..4ba712f5 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 74% rename from example/compose/authelia/docker-compose.backend-dist.yml rename to example/compose/authelia/docker-compose.backend.dist.yml index 6f55bdda..348846a5 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 92% rename from example/compose/authelia/docker-compose.frontend.yml rename to example/compose/authelia/docker-compose.frontend.dev.yml index a27c4777..2253a46e 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 11d17add..f6290ea3 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 7e1ba2fb..2dba2298 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 0c805196..1afafadc 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 00000000..a809cf08 --- /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 1fb339a8..00000000 --- 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 51d22752..49cbbad8 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 0e2dbdff..c56df9bb 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 305ddfc4..9231bb69 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 448026cb..2a90ba16 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 87dbe05f..bd7592c8 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 86d307ae..334be236 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 f6442e98..e99fbc8a 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 f3aea69a..7c7ba6c9 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 a5f43c0b..981e643f 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 f22a3136..3ffd4cba 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 66838f05..cf114a46 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 cdf46efd..6da03029 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 a2f6c74b..bf809e48 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 26033736..454defaa 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 394c846b..d06f1267 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 f89a7f6a..109f21e9 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 b022b2cd..9842e412 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 a5ac6c99..c5017e9f 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 a0ba192d..e09f37b0 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==