diff --git a/bamboo-specs/release.yaml b/bamboo-specs/release.yaml index 82b2dcd69..d7e6ca3ab 100644 --- a/bamboo-specs/release.yaml +++ b/bamboo-specs/release.yaml @@ -10,6 +10,7 @@ # flaky test suite. 'cacheBuster': '0' 'channel': 'edge' + 'clientDir': 'client' 'dockerFrontend': 'adguard/home-js-builder:4.0' 'dockerGo': 'adguard/go-builder:1.26.5--1' @@ -67,8 +68,9 @@ docker info docker build \ - --build-arg "BASE_IMAGE=${bamboo.dockerFrontend}" \ + --build-arg "BASE_IMAGE=${bamboo_dockerFrontend}" \ --build-arg "CACHE_BUSTER=${bamboo_cacheBuster}" \ + --build-arg "CLIENT_DIR=${bamboo_clientDir}" \ --output '.' \ --progress 'plain' \ --target 'builder-exporter' \ @@ -104,7 +106,7 @@ set -e -f -u -x # Explicitly checkout the revision that we need. - git checkout "${bamboo.repository.revision.number}" + git checkout "${bamboo_repository_revision_number}" version="$(env CHANNEL=${bamboo_channel} sh ./scripts/make/version.sh)" readonly version @@ -160,8 +162,8 @@ # Login to DockerHub. docker login \ - -u="${bamboo.dockerHubUsername}" \ - -p="${bamboo.dockerHubPassword}" + -u="${bamboo_dockerHubUsername}" \ + -p="${bamboo_dockerHubPassword}" # Boot the builder. docker buildx inspect --bootstrap @@ -172,8 +174,8 @@ # Prepare and push the build. env \ - CHANNEL="${bamboo.channel}" \ - REVISION="${bamboo.repository.revision.number}" \ + CHANNEL="${bamboo_channel}" \ + REVISION="${bamboo_repository_revision_number}" \ DIST_DIR='dist' \ DOCKER_IMAGE_NAME='adguard/adguardhome' \ DOCKER_PUSH='1' \ @@ -202,7 +204,7 @@ cd ./dist/ - CHANNEL="${bamboo.channel}" + CHANNEL="${bamboo_channel}" export CHANNEL ../bamboo-deploy-publisher/deploy.sh adguard-home-"$CHANNEL" @@ -227,7 +229,7 @@ set -e -f -u -x - channel="${bamboo.channel}" + channel="${bamboo_channel}" readonly channel if [ "$channel" != 'release' ] && [ "${channel}" != 'beta' ] @@ -240,7 +242,7 @@ cd ./dist/ env\ - GITHUB_TOKEN="${bamboo.githubPublicRepoPassword}"\ + GITHUB_TOKEN="${bamboo_githubPublicRepoPassword}"\ ../bamboo-deploy-publisher/deploy.sh adguard-home-github 'triggers': @@ -279,6 +281,7 @@ # need to build a few of these. 'variables': 'channel': 'beta' + 'clientDir': 'client' 'dockerFrontend': 'adguard/home-js-builder:4.0' 'dockerGo': 'adguard/go-builder:1.26.5--1' # release-vX.Y.Z branches are the branches from which the actual final @@ -295,5 +298,6 @@ # are the ones that actually get released. 'variables': 'channel': 'release' + 'clientDir': 'client' 'dockerFrontend': 'adguard/home-js-builder:4.0' 'dockerGo': 'adguard/go-builder:1.26.5--1' diff --git a/bamboo-specs/test.yaml b/bamboo-specs/test.yaml index faedf10e3..db9e8cd3d 100644 --- a/bamboo-specs/test.yaml +++ b/bamboo-specs/test.yaml @@ -9,6 +9,7 @@ # flaky test suite. 'cacheBuster': '0' 'channel': 'development' + 'clientDir': 'client' 'dockerFrontend': 'adguard/home-js-builder:4.0' 'dockerGo': 'adguard/go-builder:1.26.5--1' @@ -58,8 +59,9 @@ docker info docker build \ - --build-arg "BASE_IMAGE=${bamboo.dockerFrontend}" \ + --build-arg "BASE_IMAGE=${bamboo_dockerFrontend}" \ --build-arg "CACHE_BUSTER=${bamboo_cacheBuster}" \ + --build-arg "CLIENT_DIR=${bamboo_clientDir}" \ --output '.' \ --progress 'plain' \ --target 'tester' \ @@ -127,8 +129,9 @@ docker info docker build \ - --build-arg "BASE_IMAGE=${bamboo.dockerFrontend}" \ + --build-arg "BASE_IMAGE=${bamboo_dockerFrontend}" \ --build-arg "CACHE_BUSTER=${bamboo_cacheBuster}" \ + --build-arg "CLIENT_DIR=${bamboo_clientDir}" \ --output '.' \ --progress 'plain' \ --target 'builder-exporter' \ @@ -216,8 +219,9 @@ docker info docker build \ - --build-arg "BASE_IMAGE=${bamboo.dockerFrontend}" \ + --build-arg "BASE_IMAGE=${bamboo_dockerFrontend}" \ --build-arg "CACHE_BUSTER=${bamboo_cacheBuster}" \ + --build-arg "CLIENT_DIR=${bamboo_clientDir}" \ --output '.' \ --progress 'plain' \ --target 'e2etester' \ @@ -254,6 +258,7 @@ # Set the default release channel on the release branch to beta, as we # may need to build a few of these. 'variables': + 'channel': 'candidate' + 'clientDir': 'client' 'dockerFrontend': 'adguard/home-js-builder:4.0' 'dockerGo': 'adguard/go-builder:1.26.5--1' - 'channel': 'candidate' diff --git a/docker/frontend.Dockerfile b/docker/frontend.Dockerfile index 0f4d3a9f3..d37bdab7d 100644 --- a/docker/frontend.Dockerfile +++ b/docker/frontend.Dockerfile @@ -29,6 +29,7 @@ # NOTE: Keep in sync with bamboo-specs/bamboo.yaml. ARG BASE_IMAGE=adguard/home-js-builder:4.0 +ARG CLIENT_DIR=client # The dependencies stage is needed to install packages and tool dependencies. # This is also where binaries like osslsigncode, which may be required for tests @@ -38,13 +39,15 @@ ARG BASE_IMAGE=adguard/home-js-builder:4.0 FROM "$BASE_IMAGE" AS dependencies ADD Makefile /app/ ADD scripts /app/scripts -ADD client /app/client +ARG CLIENT_DIR +ADD "${CLIENT_DIR}" "/app/${CLIENT_DIR}" WORKDIR /app RUN \ --mount=type=cache,id=npm-root-cache,target=/root/.npm \ <<-'EOF' set -e -f -u -x make \ + CLIENT_DIR="${CLIENT_DIR}" \ VERBOSE=1 \ js-deps \ ; @@ -53,14 +56,16 @@ EOF # The linter stage is separated from the tester stage to make catching test # failures easier. FROM dependencies AS linter -ARG CACHE_BUSTER=0 ADD . /app +ARG CACHE_BUSTER=0 +ARG CLIENT_DIR WORKDIR /app RUN \ --mount=type=cache,id=npm-root-cache,target=/root/.npm \ <<-'EOF' set -e -f -u -x make \ + CLIENT_DIR="${CLIENT_DIR}" \ VERBOSE=1 \ js-typecheck \ js-lint \ @@ -70,11 +75,13 @@ EOF # The test stage. FROM linter AS tester ARG CACHE_BUSTER=0 +ARG CLIENT_DIR RUN \ --mount=type=cache,id=npm-root-cache,target=/root/.npm \ <<-'EOF' set -e -f -u -x make \ + CLIENT_DIR="${CLIENT_DIR}" \ VERBOSE=1 \ js-test \ ; @@ -83,6 +90,7 @@ EOF # The e2e test stage. FROM dependencies AS e2etester ARG CACHE_BUSTER=0 +ARG CLIENT_DIR ADD . /app WORKDIR /app RUN \ @@ -90,6 +98,7 @@ RUN \ <<-'EOF' set -e -f -u -x make \ + CLIENT_DIR="${CLIENT_DIR}" \ CI='true' \ VERBOSE=1 \ js-test-e2e \ @@ -99,6 +108,7 @@ EOF # The builder stage. FROM dependencies AS builder ARG CACHE_BUSTER=0 +ARG CLIENT_DIR ADD . /app WORKDIR /app RUN \ @@ -106,6 +116,7 @@ RUN \ <<-'EOF' set -e -f -u -x make \ + CLIENT_DIR="${CLIENT_DIR}" \ VERBOSE=1 \ js-build \ ; @@ -115,4 +126,5 @@ EOF # could be published. This stage should only be used in a CI. FROM scratch AS builder-exporter ARG CACHE_BUSTER=0 +ARG CLIENT_DIR COPY --from=builder /app/build /build