Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(ci): improve caching on Nx Agents #222

Merged
merged 1 commit into from
Mar 29, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 58 additions & 30 deletions .nx/workflows/agents.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 !"
Expand All @@ -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 !"
Expand Down