mirror of
				https://github.com/actions/cache.git
				synced 2025-11-04 07:38:37 +08:00 
			
		
		
		
	test e2e during workflow (#185)
This commit is contained in:
		
							parent
							
								
									78a4b2143b
								
							
						
					
					
						commit
						4944275b95
					
				
							
								
								
									
										107
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										107
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -13,42 +13,117 @@ on:
 | 
			
		|||
      - '**.md'
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  test:
 | 
			
		||||
    name: Test on ${{ matrix.os }}
 | 
			
		||||
 | 
			
		||||
  # Build and unit test
 | 
			
		||||
  build:
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macOS-latest]
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
    - uses: actions/checkout@v1
 | 
			
		||||
 | 
			
		||||
    - uses: actions/setup-node@v1
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v2
 | 
			
		||||
    - name: Setup Node.js
 | 
			
		||||
      uses: actions/setup-node@v1
 | 
			
		||||
      with:
 | 
			
		||||
        node-version: '12.x'
 | 
			
		||||
 | 
			
		||||
    - name: Get npm cache directory
 | 
			
		||||
    - name: Determine npm cache directory
 | 
			
		||||
      id: npm-cache
 | 
			
		||||
      run: |
 | 
			
		||||
        echo "::set-output name=dir::$(npm config get cache)"
 | 
			
		||||
 | 
			
		||||
    - uses: actions/cache@v1
 | 
			
		||||
    - name: Restore npm cache
 | 
			
		||||
      uses: actions/cache@v1
 | 
			
		||||
      with:
 | 
			
		||||
        path: ${{ steps.npm-cache.outputs.dir }}
 | 
			
		||||
        key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
 | 
			
		||||
        restore-keys: |
 | 
			
		||||
          ${{ runner.os }}-node-
 | 
			
		||||
 | 
			
		||||
    - run: npm ci
 | 
			
		||||
 | 
			
		||||
    - name: Prettier Format Check
 | 
			
		||||
      run: npm run format-check
 | 
			
		||||
 | 
			
		||||
    - name: ESLint Check
 | 
			
		||||
      run: npm run lint
 | 
			
		||||
 | 
			
		||||
    - name: Build & Test
 | 
			
		||||
      run: npm run test
 | 
			
		||||
 | 
			
		||||
  # End to end save and restore
 | 
			
		||||
  test-save:
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macOS-latest]
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v2
 | 
			
		||||
    - name: Generate files
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: __tests__/create-cache-files.sh ${{ runner.os }}
 | 
			
		||||
    - name: Save cache
 | 
			
		||||
      uses: ./
 | 
			
		||||
      with:
 | 
			
		||||
        key: test-${{ runner.os }}-${{ github.run_id }}
 | 
			
		||||
        path: test-cache
 | 
			
		||||
  test-restore:
 | 
			
		||||
    needs: test-save
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macOS-latest]
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v2
 | 
			
		||||
    - name: Restore cache
 | 
			
		||||
      uses: ./
 | 
			
		||||
      with:
 | 
			
		||||
        key: test-${{ runner.os }}-${{ github.run_id }}
 | 
			
		||||
        path: test-cache
 | 
			
		||||
    - name: Verify cache
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: __tests__/verify-cache-files.sh ${{ runner.os }}
 | 
			
		||||
 | 
			
		||||
  # End to end with proxy
 | 
			
		||||
  test-proxy-save:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    container:
 | 
			
		||||
      image: ubuntu:latest
 | 
			
		||||
      options: --dns 127.0.0.1
 | 
			
		||||
    services:
 | 
			
		||||
      squid-proxy:
 | 
			
		||||
        image: datadog/squid:latest
 | 
			
		||||
        ports:
 | 
			
		||||
          - 3128:3128
 | 
			
		||||
    env:
 | 
			
		||||
      https_proxy: http://squid-proxy:3128
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v2
 | 
			
		||||
    - name: Generate files
 | 
			
		||||
      run: __tests__/create-cache-files.sh proxy
 | 
			
		||||
    - name: Save cache
 | 
			
		||||
      uses: ./
 | 
			
		||||
      with:
 | 
			
		||||
        key: test-proxy-${{ github.run_id }}
 | 
			
		||||
        path: test-cache
 | 
			
		||||
  test-proxy-restore:
 | 
			
		||||
    needs: test-proxy-save
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    container:
 | 
			
		||||
      image: ubuntu:latest
 | 
			
		||||
      options: --dns 127.0.0.1
 | 
			
		||||
    services:
 | 
			
		||||
      squid-proxy:
 | 
			
		||||
        image: datadog/squid:latest
 | 
			
		||||
        ports:
 | 
			
		||||
          - 3128:3128
 | 
			
		||||
    env:
 | 
			
		||||
      https_proxy: http://squid-proxy:3128
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout
 | 
			
		||||
      uses: actions/checkout@v2
 | 
			
		||||
    - name: Restore cache
 | 
			
		||||
      uses: ./
 | 
			
		||||
      with:
 | 
			
		||||
        key: test-proxy-${{ github.run_id }}
 | 
			
		||||
        path: test-cache
 | 
			
		||||
    - name: Verify cache
 | 
			
		||||
      run: __tests__/verify-cache-files.sh proxy
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,8 +1,5 @@
 | 
			
		|||
__tests__/runner/*
 | 
			
		||||
 | 
			
		||||
# comment out in distribution branches
 | 
			
		||||
dist/
 | 
			
		||||
 | 
			
		||||
node_modules/
 | 
			
		||||
lib/
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								__tests__/create-cache-files.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								__tests__/create-cache-files.sh
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Validate args
 | 
			
		||||
prefix="$1"
 | 
			
		||||
if [ -z "$prefix" ]; then
 | 
			
		||||
  echo "Must supply prefix argument"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
mkdir test-cache
 | 
			
		||||
echo "$prefix $GITHUB_RUN_ID" > test-cache/test-file.txt
 | 
			
		||||
							
								
								
									
										30
									
								
								__tests__/verify-cache-files.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								__tests__/verify-cache-files.sh
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Validate args
 | 
			
		||||
prefix="$1"
 | 
			
		||||
if [ -z "$prefix" ]; then
 | 
			
		||||
  echo "Must supply prefix argument"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Sanity check GITHUB_RUN_ID defined
 | 
			
		||||
if [ -z "$GITHUB_RUN_ID" ]; then
 | 
			
		||||
  echo "GITHUB_RUN_ID not defined"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Verify file exists
 | 
			
		||||
file="test-cache/test-file.txt"
 | 
			
		||||
echo "Checking for $file"
 | 
			
		||||
if [ ! -e $file ]; then
 | 
			
		||||
  echo "File does not exist"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Verify file content
 | 
			
		||||
content="$(cat $file)"
 | 
			
		||||
echo "File content:\n$content"
 | 
			
		||||
if [ -z "$(echo $content | grep --fixed-strings "$prefix $GITHUB_RUN_ID")" ]; then
 | 
			
		||||
  echo "Unexpected file content"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										3091
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3091
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3072
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3072
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -5,12 +5,11 @@
 | 
			
		|||
  "description": "Cache dependencies and build outputs",
 | 
			
		||||
  "main": "dist/restore/index.js",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": "tsc",
 | 
			
		||||
    "build": "tsc && ncc build -o dist/restore src/restore.ts && ncc build -o dist/save src/save.ts",
 | 
			
		||||
    "test": "tsc --noEmit && jest --coverage",
 | 
			
		||||
    "lint": "eslint **/*.ts --cache",
 | 
			
		||||
    "format": "prettier --write **/*.ts",
 | 
			
		||||
    "format-check": "prettier --check **/*.ts",
 | 
			
		||||
    "release": "ncc build -o dist/restore src/restore.ts && ncc build -o dist/save src/save.ts && git add -f dist/"
 | 
			
		||||
    "format-check": "prettier --check **/*.ts"
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user