mirror of
				https://github.com/gradle/gradle-build-action.git
				synced 2025-11-04 18:08:57 +08:00 
			
		
		
		
	Merge pull request #90 from gradle/dd/windows-locks
Allow time for processes to delete file locks on windows
This commit is contained in:
		
							
								
								
									
										2
									
								
								dist/main/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/main/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/main/index.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/main/index.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/post/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/post/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/post/index.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/post/index.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -5,7 +5,7 @@ import * as core from '@actions/core'
 | 
			
		||||
import * as glob from '@actions/glob'
 | 
			
		||||
import * as exec from '@actions/exec'
 | 
			
		||||
 | 
			
		||||
import {AbstractCache, hashFileNames} from './cache-utils'
 | 
			
		||||
import {AbstractCache, hashFileNames, tryDelete} from './cache-utils'
 | 
			
		||||
 | 
			
		||||
// Which paths under Gradle User Home should be cached
 | 
			
		||||
const CACHE_PATH = ['caches', 'notifications']
 | 
			
		||||
@@ -141,7 +141,7 @@ export class GradleUserHomeCache extends AbstractCache {
 | 
			
		||||
        if (commonArtifactFiles.length === 0) {
 | 
			
		||||
            this.debug(`No files found to cache for ${bundle}`)
 | 
			
		||||
            if (fs.existsSync(cacheMetaFile)) {
 | 
			
		||||
                fs.unlinkSync(cacheMetaFile)
 | 
			
		||||
                tryDelete(cacheMetaFile)
 | 
			
		||||
            }
 | 
			
		||||
            return
 | 
			
		||||
        }
 | 
			
		||||
@@ -164,7 +164,7 @@ export class GradleUserHomeCache extends AbstractCache {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (const file of commonArtifactFiles) {
 | 
			
		||||
            fs.unlinkSync(file)
 | 
			
		||||
            tryDelete(file)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ import * as cache from '@actions/cache'
 | 
			
		||||
import * as github from '@actions/github'
 | 
			
		||||
import * as crypto from 'crypto'
 | 
			
		||||
import * as path from 'path'
 | 
			
		||||
import * as fs from 'fs'
 | 
			
		||||
 | 
			
		||||
export function isCacheDisabled(): boolean {
 | 
			
		||||
    return core.getBooleanInput('cache-disabled')
 | 
			
		||||
@@ -60,6 +61,29 @@ export function hashFileNames(fileNames: string[]): string {
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Attempt to delete a file, waiting to allow locks to be released
 | 
			
		||||
 */
 | 
			
		||||
export async function tryDelete(file: string): Promise<void> {
 | 
			
		||||
    for (let count = 0; count < 3; count++) {
 | 
			
		||||
        try {
 | 
			
		||||
            fs.unlinkSync(file)
 | 
			
		||||
            return
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
            if (count === 2) {
 | 
			
		||||
                throw error
 | 
			
		||||
            } else {
 | 
			
		||||
                core.warning(String(error))
 | 
			
		||||
                await delay(1000)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function delay(ms: number): Promise<void> {
 | 
			
		||||
    return new Promise(resolve => setTimeout(resolve, ms))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class CacheKey {
 | 
			
		||||
    key: string
 | 
			
		||||
    restoreKeys: string[]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user