Skip to content

Commit

Permalink
Support Gradle read-only dependency cache in Docker builds
Browse files Browse the repository at this point in the history
  • Loading branch information
valldrac committed Jul 15, 2024
1 parent 7259956 commit 45234d5
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 7 deletions.
18 changes: 14 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ on:

env:
TAG_REF: "${{ inputs.version || github.ref_name }}"
BUILD_ENV_FILE: ${{ vars.BUILD_ENV_FILE || 'beta-stable.env' }}
HAVE_KEYSTORE: ${{ secrets.SECRET_KEYSTORE != '' }}

jobs:
build:
Expand All @@ -23,28 +25,36 @@ jobs:
contents: read # to fetch code (actions/checkout)

env:
BUILD_ENV_FILE: ${{ vars.BUILD_ENV_FILE || 'beta-stable.env' }}
HAVE_KEYSTORE: ${{ secrets.SECRET_KEYSTORE != '' }}
GRADLE_OPTS: "-Dorg.gradle.project.kotlin.compiler.execution.strategy=in-process"

steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.TAG_REF }}"

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: gradle

- name: Set up builder image
run: docker-compose build
working-directory: reproducible-builds

- name: Export CI environment variables
run: |
cp -v "ci/$BUILD_ENV_FILE" .env
for var in APP_TITLE APP_FILENAME PACKAGE_ID \
BUILD_VARIANTS FORCE_INTERNAL_USER_FLAG \
MAPS_API_KEY; do
if [ -n "${!var}" ]; then
echo "Setting CI_$var=${!var}"
echo "CI_$var=${!var}" >> $GITHUB_ENV
fi
done
working-directory: reproducible-builds
env:
APP_TITLE: ${{ vars.CI_APP_TITLE }}
APP_FILENAME: ${{ vars.CI_APP_FILENAME }}
Expand All @@ -62,12 +72,12 @@ jobs:

- name: Build without signing
if: "env.HAVE_KEYSTORE == 'false'"
run: docker-compose --env-file "ci/$BUILD_ENV_FILE" run assemble
run: docker-compose run -v "$HOME/.gradle/caches:/.gradle-ro-cache:ro" assemble
working-directory: reproducible-builds

- name: Build and sign
if: "env.HAVE_KEYSTORE == 'true'"
run: docker-compose --env-file "ci/$BUILD_ENV_FILE" run assemble
run: docker-compose run -v "$HOME/.gradle/caches:/.gradle-ro-cache:ro" assemble
working-directory: reproducible-builds
env:
CI_KEYSTORE_PATH: certs/keystore.jks
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/reprocheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ permissions:

env:
TAG_REF: "${{ github.event.inputs.version || github.event.release.tag_name }}"
BUILD_ENV_FILE: ${{ vars.BUILD_ENV_FILE || 'beta-stable.env' }}

jobs:
build:
name: Build new
runs-on: ubuntu-22.04

env:
BUILD_ENV_FILE: ${{ vars.BUILD_ENV_FILE || 'beta-stable.env' }}
GRADLE_OPTS: "-Dorg.gradle.project.kotlin.compiler.execution.strategy=in-process"

steps:
Expand All @@ -36,13 +36,16 @@ jobs:

- name: Export CI environment variables
run: |
cp -v "ci/$BUILD_ENV_FILE" .env
for var in APP_TITLE APP_FILENAME PACKAGE_ID \
BUILD_VARIANTS FORCE_INTERNAL_USER_FLAG \
MAPS_API_KEY; do
if [ -n "${!var}" ]; then
echo "Setting CI_$var=${!var}"
echo "CI_$var=${!var}" >> $GITHUB_ENV
fi
done
working-directory: reproducible-builds
env:
APP_TITLE: ${{ vars.CI_APP_TITLE }}
APP_FILENAME: ${{ vars.CI_APP_FILENAME }}
Expand All @@ -52,7 +55,7 @@ jobs:
MAPS_API_KEY: ${{ vars.CI_MAPS_API_KEY }}

- name: Build release
run: docker-compose --env-file "ci/$BUILD_ENV_FILE" run assemble
run: docker-compose run assemble
working-directory: reproducible-builds

- uses: actions/upload-artifact@v4
Expand Down
2 changes: 2 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ COPY gradlew /molly/
COPY gradle /molly/gradle/
RUN /molly/gradlew --version

ENV GRADLE_RO_DEP_CACHE=/.gradle-ro-cache

COPY . /molly/
WORKDIR /molly
RUN git clean -df
Expand Down
1 change: 0 additions & 1 deletion reproducible-builds/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
version: '3.2'
services:
assemble:
image: reproducible-molly
Expand Down

0 comments on commit 45234d5

Please sign in to comment.