mirror of
https://github.com/electron/electron.git
synced 2026-01-14 09:58:04 -05:00
84 lines
2.9 KiB
YAML
84 lines
2.9 KiB
YAML
name: 'Build Git Cache'
|
|
description: 'Runs a gclient sync to build the git cache for Electron'
|
|
inputs:
|
|
target-platform:
|
|
description: 'Target platform, should be linux, win, macos'
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Set GIT_CACHE_PATH to make gclient to use the cache
|
|
shell: bash
|
|
run: |
|
|
echo "GIT_CACHE_PATH=$(pwd)/git-cache" >> $GITHUB_ENV
|
|
- name: Set Chromium Git Cookie
|
|
uses: ./src/electron/.github/actions/set-chromium-cookie
|
|
- name: Install Build Tools
|
|
uses: ./src/electron/.github/actions/install-build-tools
|
|
- name: Set up cache drive
|
|
shell: bash
|
|
run: |
|
|
if [ "${{ inputs.target-platform }}" = "win" ]; then
|
|
echo "CACHE_DRIVE=/mnt/win-cache" >> $GITHUB_ENV
|
|
else
|
|
echo "CACHE_DRIVE=/mnt/cross-instance-cache" >> $GITHUB_ENV
|
|
fi
|
|
- name: Check cross instance cache disk space
|
|
shell: bash
|
|
run: |
|
|
# if there is less than 35 GB free space then creating the cache might fail so exit early
|
|
freespace=`df -m $CACHE_DRIVE | grep -w $CACHE_DRIVE | awk '{print $4}'`
|
|
freespace_human=`df -h $CACHE_DRIVE | grep -w $CACHE_DRIVE | awk '{print $4}'`
|
|
if [ $freespace -le 35000 ]; then
|
|
echo "The cross mount cache has $freespace_human free space which is not enough - exiting"
|
|
exit 1
|
|
else
|
|
echo "The cross mount cache has $freespace_human free space - continuing"
|
|
fi
|
|
- name: Restore gitcache
|
|
shell: bash
|
|
run: |
|
|
GIT_CACHE_TAR="$CACHE_DRIVE/gitcache.tar"
|
|
if [ ! -f "$GIT_CACHE_TAR" ]; then
|
|
echo "Git cache tar file does not exist, skipping restore"
|
|
exit 0
|
|
fi
|
|
echo "Restoring git cache from $GIT_CACHE_TAR to $GIT_CACHE_PATH"
|
|
mkdir -p $GIT_CACHE_PATH
|
|
tar -xf $GIT_CACHE_TAR -C $GIT_CACHE_PATH
|
|
- name: Gclient Sync
|
|
shell: bash
|
|
run: |
|
|
e d gclient config \
|
|
--name "src/electron" \
|
|
--unmanaged \
|
|
${GCLIENT_EXTRA_ARGS} \
|
|
"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY"
|
|
|
|
if [ "$TARGET_OS" != "" ]; then
|
|
echo "target_os=['$TARGET_OS']" >> ./.gclient
|
|
fi
|
|
|
|
ELECTRON_USE_THREE_WAY_MERGE_FOR_PATCHES=1 e d gclient sync --with_branch_heads --with_tags --nohooks -vv
|
|
- name: Compress Git Cache Directory
|
|
shell: bash
|
|
run: |
|
|
echo "Uncompressed gitcache size: $(du -sh $GIT_CACHE_PATH | cut -f1 -d' ')"
|
|
cd $GIT_CACHE_PATH
|
|
tar -cf ../gitcache.tar .
|
|
cd ..
|
|
echo "Compressed gitcache to $(du -sh gitcache.tar | cut -f1 -d' ')"
|
|
# remove the old cache file if it exists
|
|
if [ -f $CACHE_DRIVE/gitcache.tar ]; then
|
|
echo "Removing old gitcache.tar from $CACHE_DRIVE"
|
|
rm $CACHE_DRIVE/gitcache.tar
|
|
fi
|
|
cp ./gitcache.tar $CACHE_DRIVE/
|
|
- name: Wait for active SSH sessions
|
|
shell: bash
|
|
if: always() && !cancelled()
|
|
run: |
|
|
while [ -f /var/.ssh-lock ]
|
|
do
|
|
sleep 60
|
|
done
|