diff --git a/.github/workflows/reproducible-builds.yml b/.github/workflows/reproducible-builds.yml index b7dfae39f2..66bc18ed98 100644 --- a/.github/workflows/reproducible-builds.yml +++ b/.github/workflows/reproducible-builds.yml @@ -100,6 +100,12 @@ jobs: NODE_VERSION=$(cat .nvmrc) echo "version=$NODE_VERSION" >> $GITHUB_OUTPUT + - name: Get pnpm version for docker build arg + id: pnpm_version + run: | + PNPM_VERSION=$(grep -A 2 '^\s*pnpm:' pnpm-lock.yaml | grep 'version:' | awk '{print $2}') + echo "pnpm_version=$PNPM_VERSION" >> $GITHUB_OUTPUT + - name: Set up docker Buildx uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3 - name: Build docker image @@ -115,6 +121,7 @@ jobs: build-args: | SOURCE_DATE_EPOCH=1 NODE_VERSION=${{ steps.node_version.outputs.version }} + PNPM_VERSION=${{ steps.pnpm_version.outputs.pnpm_version }} cache-from: type=gha cache-to: type=gha,mode=max diff --git a/reproducible-builds/Dockerfile b/reproducible-builds/Dockerfile index 14d06fc4b1..470e8e5ae3 100644 --- a/reproducible-builds/Dockerfile +++ b/reproducible-builds/Dockerfile @@ -10,6 +10,7 @@ ENV SOURCE_DATE_EPOCH=1 # Due to some issues with NVM reading .nvmrc, we define the version # as an environment variable and use that instead. ARG NODE_VERSION +ARG PNPM_VERSION ENV SIGNAL_ENV=production @@ -50,7 +51,7 @@ ENV PATH=$NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH ENV CI=true # Install pnpm -RUN npm install -g pnpm@10.18.1 +RUN npm install -g pnpm@${PNPM_VERSION} RUN git config --global --add safe.directory /project diff --git a/reproducible-builds/build.sh b/reproducible-builds/build.sh index 47bab78d6b..35af74dc9d 100755 --- a/reproducible-builds/build.sh +++ b/reproducible-builds/build.sh @@ -18,7 +18,11 @@ # all build dependencies at specific versions. # We set SOURCE_DATE_EPOCH to make system build timestamps deterministic. if [ -z "${SKIP_DOCKER_BUILD}" ]; then - docker build -t signal-desktop --build-arg SOURCE_DATE_EPOCH=1 --build-arg NODE_VERSION=$(cat ../.nvmrc) . + docker build -t signal-desktop \ + --build-arg SOURCE_DATE_EPOCH=1 \ + --build-arg NODE_VERSION="$(cat ../.nvmrc)" \ + --build-arg PNPM_VERSION="$(grep -A 2 '^\s*pnpm:' ../pnpm-lock.yaml | grep 'version:' | awk '{print $2}')" \ + . else echo "Skipping docker build step because SKIP_DOCKER_BUILD was set" fi @@ -53,7 +57,7 @@ docker run --rm \ --user "$(id -u):$(id -g)" \ -e NPM_CONFIG_CACHE=/tmp/.npm-cache \ -e PNPM_HOME=/tmp/.pnpm-home \ - -e SOURCE_DATE_EPOCH=$source_date_epoch \ - -e BUILD_TARGETS=$BUILD_TARGETS \ - -e BUILD_ARCH=$BUILD_ARCH \ - signal-desktop $1 + -e SOURCE_DATE_EPOCH="$source_date_epoch" \ + -e BUILD_TARGETS="$BUILD_TARGETS" \ + -e BUILD_ARCH="$BUILD_ARCH" \ + signal-desktop "$1"