Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(ci): improve caching on Nx Agents
Browse files Browse the repository at this point in the history
tinesoft committed Mar 29, 2024
1 parent 30a67a4 commit 57b1c08
Showing 1 changed file with 58 additions and 30 deletions.
88 changes: 58 additions & 30 deletions .nx/workflows/agents.yaml
Original file line number Diff line number Diff line change
@@ -11,11 +11,30 @@ launch-templates:
KEY: 'package-lock.json|yarn.lock|pnpm-lock.yaml'
PATHS: 'node_modules'
BASE_BRANCH: 'develop'
- name: Restore Maven/Gradle Cache
- name: Restore Maven/Gradle/SDKMan Cache
uses: 'nrwl/nx-cloud-workflows/v3.5/workflow-steps/cache/main.yaml'
env:
KEY: 'pom.xml|build.gradle|build.gradle.kts|settings.gradle|settings.gradle.kts'
PATHS: '~/.m2/repository'
PATHS: |
~/.m2/repository
~/.sdkman
BASE_BRANCH: 'develop'

- name: Restore Flutter Cache
uses: 'nrwl/nx-cloud-workflows/v3.5/workflow-steps/cache/main.yaml'
env:
KEY: '"flutter-sdk"|~/flutter/version|pubspec.yaml'
PATHS: |
~/flutter
~/.pub-cache
BASE_BRANCH: 'develop'

- name: Restore Android Cache
uses: 'nrwl/nx-cloud-workflows/v3.5/workflow-steps/cache/main.yaml'
env:
KEY: '"android-sdk"'
PATHS: |
~/android/sdk
BASE_BRANCH: 'develop'

- name: Install Node Modules
@@ -34,52 +53,51 @@ launch-templates:
flutterPkgName="flutter_linux_${flutterVersion}-${flutterChannel}.tar.xz"
flutterPkgUrl="https://storage.googleapis.com/flutter_infra_release/releases/${flutterChannel}/linux/${flutterPkgName}"
if [ ! -d $HOME/flutter ]
then
if [ ! -d $HOME/flutter ]; then
echo "⬇️ Downloading and Installing Flutter from $flutterPkgName..."
curl -s -L ${flutterPkgUrl} | tar -xJf - -C $HOME
echo "PATH=$HOME/flutter/bin:$PATH" >> $NX_CLOUD_ENV
echo 'export PATH="$HOME/flutter/bin:$PATH"' >> $HOME/.profile
source $HOME/.profile
else
echo "⏭️ Flutter v$flutterPkgName already installed. Skipping it"
fi
echo "PATH=$HOME/flutter/bin:$PATH" >> $NX_CLOUD_ENV
echo 'export PATH="$HOME/flutter/bin:$PATH"' >> $HOME/.profile
source $HOME/.profile
echo "⌛️ Checking Flutter Installation and Version..."
flutter --version
echo "✅ Done !"
- name: Install SDKMan! and Java
script: |
if [ ! -d $HOME/.sdkman ]
then
if [ ! -d $HOME/.sdkman ]; then
echo "⬇️ Downloading and Installing SDKMan!..."
curl -s "https://get.sdkman.io" | bash
source $HOME/.sdkman/bin/sdkman-init.sh
else
echo "⏭️ SDKMan! already installed. Skipping it"
fi
source $HOME/.sdkman/bin/sdkman-init.sh
sdk version
jdkVersion="${JDK_VERSION:-17.0.10}"
jdkDistro="${JDK_DISTRO:-ms}"
javaVersion="${jdkVersion}-${jdkDistro}"
JAVA_HOME="$HOME/.sdkman/candidates/java/$javaVersion"
if [ ! -d $JAVA_HOME ]
then
if [ ! -d $JAVA_HOME ]; then
echo "⌛️ Installing Java v$javaVersion.."
sdk install java $javaVersion
sdk use java $javaVersion
echo "JAVA_HOME=$JAVA_HOME" >> $NX_CLOUD_ENV
echo "PATH=$JAVA_HOME/bin:$PATH" >> $NX_CLOUD_ENV
echo 'export JAVA_HOME="$JAVA_HOME"' >> $HOME/.profile
source $HOME/.profile
else
echo "⏭️ Java v$javaVersion already installed. Skipping it"
fi
echo "JAVA_HOME=$JAVA_HOME" >> $NX_CLOUD_ENV
echo "PATH=$JAVA_HOME/bin:$PATH" >> $NX_CLOUD_ENV
echo 'export JAVA_HOME="$JAVA_HOME"' >> $HOME/.profile
source $HOME/.profile
echo "⌛️ Checking Java Installation and Version..."
java -version
echo "✅ Done !"
@@ -90,34 +108,44 @@ launch-templates:
SDK_TOOLS_URL="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip"
ANDROID_HOME="$HOME/android/sdk"
if [ ! -d $ANDROID_HOME ]
then
if [ ! -d $ANDROID_HOME ]; then
echo "⬇️ Downloading and Installing Android SDK v$SDK_VERSION..."
wget -q "$SDK_TOOLS_URL" -O sdk-tools.zip
mkdir -p $ANDROID_HOME/cmdline-tools
unzip -qq sdk-tools.zip -d $ANDROID_HOME/cmdline-tools
mv $ANDROID_HOME/cmdline-tools/cmdline-tools $ANDROID_HOME/cmdline-tools/latest
rm -f sdk-tools.zip
echo 'export ANDROID_HOME="$ANDROID_HOME"' >> $HOME/.profile
echo "ANDROID_HOME=$ANDROID_HOME" >> $NX_CLOUD_ENV
echo "PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH" >> $NX_CLOUD_ENV
echo 'export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"' >> $HOME/.profile
source $HOME/.profile
#yes | sdkmanager --licenses
else
echo "⏭️ Android SDK already installed. Skipping it"
echo "⏭️ Android SDK already installed. Skipping it"
fi
echo 'export ANDROID_HOME="$ANDROID_HOME"' >> $HOME/.profile
echo "ANDROID_HOME=$ANDROID_HOME" >> $NX_CLOUD_ENV
echo "PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH" >> $NX_CLOUD_ENV
echo 'export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"' >> $HOME/.profile
source $HOME/.profile
echo "ℹ️ Android SDK Manager version: `sdkmanager --version`"
echo "📚 Android SDK Manager - Accepting licenses..."
# https://discuss.circleci.com/t/build-fails-on-acceptance-of-license-agreements/27828/5
yes | sdkmanager --licenses || if [ $? -ne '141' ]; then exit $?; fi; > /dev/null #Captures SIGPIPE 141 error but still allow repeating "y" to accept all licenses
# Install specific version and platform tools (if not already installed)
if [[ "$SDK_VERSION" != "latest" ]]; then
sdkmanager --update # Update tools if necessary
sdkmanager "platforms;android-$SDK_VERSION" "build-tools;$SDK_VERSION.0.0" "platform-tools"
if [ ! -d "$ANDROID_HOME/platforms/android-$SDK_VERSION" ]; then
sdkmanager "platforms;android-$SDK_VERSION"
else
echo "⏭️ 'platforms;android-$SDK_VERSION' already installed. Skipping it"
fi
if [ ! -d "$ANDROID_HOME/build-tools/$SDK_VERSION" ]; then
sdkmanager "build-tools;$SDK_VERSION.0.0"
else
echo "⏭️ 'build-tools;$SDK_VERSION.0.0' already installed. Skipping it"
fi
if [ ! -d "$ANDROID_HOME/platform-tools" ]; then
sdkmanager "platform-tools"
else
echo "⏭️ 'platform-tools' already installed. Skipping it"
fi
echo "✅ Done !"

0 comments on commit 57b1c08

Please sign in to comment.