mirror of
				https://kkgithub.com/actions/checkout
				synced 2025-11-04 08:11:53 +08:00 
			
		
		
		
	follow proxy settings (#144)
This commit is contained in:
		
							
								
								
									
										99
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										99
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							@ -11,6 +11,9 @@ jobs:
 | 
				
			|||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
 | 
					      - uses: actions/setup-node@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          node-version: 12.x
 | 
				
			||||||
      - uses: actions/checkout@v2
 | 
					      - uses: actions/checkout@v2
 | 
				
			||||||
      - run: npm ci
 | 
					      - run: npm ci
 | 
				
			||||||
      - run: npm run build
 | 
					      - run: npm run build
 | 
				
			||||||
@ -83,16 +86,92 @@ jobs:
 | 
				
			|||||||
        shell: bash
 | 
					        shell: bash
 | 
				
			||||||
        run: __test__/verify-lfs.sh
 | 
					        run: __test__/verify-lfs.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  test-job-container:
 | 
					      # Basic checkout using REST API
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					      - name: Remove basic
 | 
				
			||||||
    container: alpine:latest
 | 
					        if: runner.os != 'windows'
 | 
				
			||||||
    steps:
 | 
					        run: rm -rf basic
 | 
				
			||||||
      # Clone this repo
 | 
					      - name: Remove basic (Windows)
 | 
				
			||||||
      - name: Checkout
 | 
					        if: runner.os == 'windows'
 | 
				
			||||||
        uses: actions/checkout@v2
 | 
					        shell: cmd
 | 
				
			||||||
 | 
					        run: rmdir /s /q basic
 | 
				
			||||||
      # Basic checkout
 | 
					      - name: Override git version
 | 
				
			||||||
      - name: Basic checkout
 | 
					        if: runner.os != 'windows'
 | 
				
			||||||
 | 
					        run: __test__/override-git-version.sh
 | 
				
			||||||
 | 
					      - name: Override git version (Windows)
 | 
				
			||||||
 | 
					        if: runner.os == 'windows'
 | 
				
			||||||
 | 
					        run: __test__\\override-git-version.cmd
 | 
				
			||||||
 | 
					      - name: Basic checkout using REST API
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          ref: test-data/v2/basic
 | 
				
			||||||
 | 
					          path: basic
 | 
				
			||||||
 | 
					      - name: Verify basic
 | 
				
			||||||
 | 
					        run: __test__/verify-basic.sh --archive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test-proxy:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    container:
 | 
				
			||||||
 | 
					      image: alpine/git: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:
 | 
				
			||||||
 | 
					      # Clone this repo
 | 
				
			||||||
 | 
					      - name: Checkout
 | 
				
			||||||
 | 
					        uses: actions/checkout@users/ericsciple/m165proxy # todo: switch to v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Basic checkout using git
 | 
				
			||||||
 | 
					      - name: Basic checkout
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          ref: test-data/v2/basic
 | 
				
			||||||
 | 
					          path: basic
 | 
				
			||||||
 | 
					      - name: Verify basic
 | 
				
			||||||
 | 
					        run: __test__/verify-basic.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Basic checkout using REST API
 | 
				
			||||||
 | 
					      - name: Remove basic
 | 
				
			||||||
 | 
					        run: rm -rf basic
 | 
				
			||||||
 | 
					      - name: Override git version
 | 
				
			||||||
 | 
					        run: __test__/override-git-version.sh
 | 
				
			||||||
 | 
					      - name: Basic checkout using REST API
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          ref: test-data/v2/basic
 | 
				
			||||||
 | 
					          path: basic
 | 
				
			||||||
 | 
					      - name: Verify basic
 | 
				
			||||||
 | 
					        run: __test__/verify-basic.sh --archive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test-bypass-proxy:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    env:
 | 
				
			||||||
 | 
					      https_proxy: http://no-such-proxy:3128
 | 
				
			||||||
 | 
					      no_proxy: api.github.com,github.com
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      # Clone this repo
 | 
				
			||||||
 | 
					      - name: Checkout
 | 
				
			||||||
 | 
					        uses: actions/checkout@v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Basic checkout using git
 | 
				
			||||||
 | 
					      - name: Basic checkout
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          ref: test-data/v2/basic
 | 
				
			||||||
 | 
					          path: basic
 | 
				
			||||||
 | 
					      - name: Verify basic
 | 
				
			||||||
 | 
					        run: __test__/verify-basic.sh
 | 
				
			||||||
 | 
					      - name: Remove basic
 | 
				
			||||||
 | 
					        run: rm -rf basic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Basic checkout using REST API
 | 
				
			||||||
 | 
					      - name: Override git version
 | 
				
			||||||
 | 
					        run: __test__/override-git-version.sh
 | 
				
			||||||
 | 
					      - name: Basic checkout using REST API
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          ref: test-data/v2/basic
 | 
					          ref: test-data/v2/basic
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										6
									
								
								__test__/override-git-version.cmd
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								__test__/override-git-version.cmd
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir override-git-version
 | 
				
			||||||
 | 
					cd override-git-version
 | 
				
			||||||
 | 
					echo @echo override git version 1.2.3 > git.cmd
 | 
				
			||||||
 | 
					echo ::add-path::%CD%
 | 
				
			||||||
 | 
					cd ..
 | 
				
			||||||
							
								
								
									
										9
									
								
								__test__/override-git-version.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								__test__/override-git-version.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir override-git-version
 | 
				
			||||||
 | 
					cd override-git-version
 | 
				
			||||||
 | 
					echo "#!/bin/sh" > git
 | 
				
			||||||
 | 
					echo "echo override git version 1.2.3" >> git
 | 
				
			||||||
 | 
					chmod +x git
 | 
				
			||||||
 | 
					echo "::add-path::$(pwd)"
 | 
				
			||||||
 | 
					cd ..
 | 
				
			||||||
							
								
								
									
										969
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										969
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										45
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										45
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "checkout",
 | 
					  "name": "checkout",
 | 
				
			||||||
  "version": "2.0.0",
 | 
					  "version": "2.0.2",
 | 
				
			||||||
  "lockfileVersion": 1,
 | 
					  "lockfileVersion": 1,
 | 
				
			||||||
  "requires": true,
 | 
					  "requires": true,
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
@ -15,14 +15,30 @@
 | 
				
			|||||||
      "integrity": "sha512-nvFkxwiicvpzNiCBF4wFBDfnBvi7xp/as7LE1hBxBxKG2L29+gkIPBiLKMVORL+Hg3JNf07AKRfl0V5djoypjQ=="
 | 
					      "integrity": "sha512-nvFkxwiicvpzNiCBF4wFBDfnBvi7xp/as7LE1hBxBxKG2L29+gkIPBiLKMVORL+Hg3JNf07AKRfl0V5djoypjQ=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@actions/github": {
 | 
					    "@actions/github": {
 | 
				
			||||||
      "version": "2.0.0",
 | 
					      "version": "2.1.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.1.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-sNpZ5dJyJyfJIO5lNYx8r/Gha4Tlm8R0MLO2cBkGdOnAAEn3t1M/MHVcoBhY/VPfjGVe5RNAUPz+6INrViiUPA==",
 | 
					      "integrity": "sha512-G4ncMlh4pLLAvNgHUYUtpWQ1zPf/VYqmRH9oshxLabdaOOnp7i1hgSgzr2xne2YUaSND3uqemd3YYTIsm2f/KQ==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@actions/http-client": "^1.0.3",
 | 
				
			||||||
        "@octokit/graphql": "^4.3.1",
 | 
					        "@octokit/graphql": "^4.3.1",
 | 
				
			||||||
        "@octokit/rest": "^16.15.0"
 | 
					        "@octokit/rest": "^16.15.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@actions/http-client": {
 | 
				
			||||||
 | 
					      "version": "1.0.3",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.3.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-wFwh1U4adB/Zsk4cc9kVqaBOHoknhp/pJQk+aWTocbAZWpIl4Zx/At83WFRLXvxB+5HVTWOACM6qjULMZfQSfw==",
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "tunnel": "0.0.6"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "tunnel": {
 | 
				
			||||||
 | 
					          "version": "0.0.6",
 | 
				
			||||||
 | 
					          "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
 | 
				
			||||||
 | 
					          "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@actions/io": {
 | 
					    "@actions/io": {
 | 
				
			||||||
      "version": "1.0.1",
 | 
					      "version": "1.0.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.1.tgz",
 | 
				
			||||||
@ -597,6 +613,14 @@
 | 
				
			|||||||
        "@types/yargs": "^13.0.0"
 | 
					        "@types/yargs": "^13.0.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "@octokit/auth-token": {
 | 
				
			||||||
 | 
					      "version": "2.4.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==",
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@octokit/types": "^2.0.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@octokit/endpoint": {
 | 
					    "@octokit/endpoint": {
 | 
				
			||||||
      "version": "5.5.1",
 | 
					      "version": "5.5.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.1.tgz",
 | 
				
			||||||
@ -643,10 +667,11 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@octokit/rest": {
 | 
					    "@octokit/rest": {
 | 
				
			||||||
      "version": "16.35.0",
 | 
					      "version": "16.38.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.35.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.38.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-9ShFqYWo0CLoGYhA1FdtdykJuMzS/9H6vSbbQWDX4pWr4p9v+15MsH/wpd/3fIU+tSxylaNO48+PIHqOkBRx3w==",
 | 
					      "integrity": "sha512-zyNFx+/Bd1EXt7LQjfrc6H4wryBQ/oDuZeZhGMBSFr1eMPFDmpEweFQR3R25zjKwBQpDY7L5GQO6A3XSaOfV1w==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "@octokit/auth-token": "^2.4.0",
 | 
				
			||||||
        "@octokit/request": "^5.2.0",
 | 
					        "@octokit/request": "^5.2.0",
 | 
				
			||||||
        "@octokit/request-error": "^1.0.2",
 | 
					        "@octokit/request-error": "^1.0.2",
 | 
				
			||||||
        "atob-lite": "^2.0.0",
 | 
					        "atob-lite": "^2.0.0",
 | 
				
			||||||
@ -662,9 +687,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@octokit/types": {
 | 
					    "@octokit/types": {
 | 
				
			||||||
      "version": "2.0.2",
 | 
					      "version": "2.1.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.1.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-StASIL2lgT3TRjxv17z9pAqbnI7HGu9DrJlg3sEBFfCLaMEqp+O3IQPUF6EZtQ4xkAu2ml6kMBBCtGxjvmtmuQ==",
 | 
					      "integrity": "sha512-89LOYH+d/vsbDX785NOfLxTW88GjNd0lWRz1DVPVsZgg9Yett5O+3MOvwo7iHgvUwbFz0mf/yPIjBkUbs4kxoQ==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@types/node": ">= 8"
 | 
					        "@types/node": ">= 8"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "checkout",
 | 
					  "name": "checkout",
 | 
				
			||||||
  "version": "2.0.1",
 | 
					  "version": "2.0.2",
 | 
				
			||||||
  "description": "checkout action",
 | 
					  "description": "checkout action",
 | 
				
			||||||
  "main": "lib/main.js",
 | 
					  "main": "lib/main.js",
 | 
				
			||||||
  "scripts": {
 | 
					  "scripts": {
 | 
				
			||||||
@ -31,7 +31,7 @@
 | 
				
			|||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@actions/core": "^1.1.3",
 | 
					    "@actions/core": "^1.1.3",
 | 
				
			||||||
    "@actions/exec": "^1.0.1",
 | 
					    "@actions/exec": "^1.0.1",
 | 
				
			||||||
    "@actions/github": "^2.0.0",
 | 
					    "@actions/github": "^2.0.2",
 | 
				
			||||||
    "@actions/io": "^1.0.1",
 | 
					    "@actions/io": "^1.0.1",
 | 
				
			||||||
    "@actions/tool-cache": "^1.1.2",
 | 
					    "@actions/tool-cache": "^1.1.2",
 | 
				
			||||||
    "uuid": "^3.3.3"
 | 
					    "uuid": "^3.3.3"
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,8 @@ import * as refHelper from './ref-helper'
 | 
				
			|||||||
import * as stateHelper from './state-helper'
 | 
					import * as stateHelper from './state-helper'
 | 
				
			||||||
import {IGitCommandManager} from './git-command-manager'
 | 
					import {IGitCommandManager} from './git-command-manager'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const authConfigKey = `http.https://github.com/.extraheader`
 | 
					const serverUrl = 'https://github.com/'
 | 
				
			||||||
 | 
					const authConfigKey = `http.${serverUrl}.extraheader`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface ISourceSettings {
 | 
					export interface ISourceSettings {
 | 
				
			||||||
  repositoryPath: string
 | 
					  repositoryPath: string
 | 
				
			||||||
@ -95,7 +96,7 @@ export async function getSource(settings: ISourceSettings): Promise<void> {
 | 
				
			|||||||
    await removeGitConfig(git, authConfigKey)
 | 
					    await removeGitConfig(git, authConfigKey)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      // Config auth token
 | 
					      // Config extraheader
 | 
				
			||||||
      await configureAuthToken(git, settings.authToken)
 | 
					      await configureAuthToken(git, settings.authToken)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // LFS install
 | 
					      // LFS install
 | 
				
			||||||
@ -136,16 +137,21 @@ export async function getSource(settings: ISourceSettings): Promise<void> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export async function cleanup(repositoryPath: string): Promise<void> {
 | 
					export async function cleanup(repositoryPath: string): Promise<void> {
 | 
				
			||||||
  // Repo exists?
 | 
					  // Repo exists?
 | 
				
			||||||
  if (!fsHelper.fileExistsSync(path.join(repositoryPath, '.git', 'config'))) {
 | 
					  if (
 | 
				
			||||||
 | 
					    !repositoryPath ||
 | 
				
			||||||
 | 
					    !fsHelper.fileExistsSync(path.join(repositoryPath, '.git', 'config'))
 | 
				
			||||||
 | 
					  ) {
 | 
				
			||||||
    return
 | 
					    return
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  fsHelper.directoryExistsSync(repositoryPath, true)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Remove the config key
 | 
					  let git: IGitCommandManager
 | 
				
			||||||
  const git = await gitCommandManager.CreateCommandManager(
 | 
					  try {
 | 
				
			||||||
    repositoryPath,
 | 
					    git = await gitCommandManager.CreateCommandManager(repositoryPath, false)
 | 
				
			||||||
    false
 | 
					  } catch {
 | 
				
			||||||
  )
 | 
					    return
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Remove extraheader
 | 
				
			||||||
  await removeGitConfig(git, authConfigKey)
 | 
					  await removeGitConfig(git, authConfigKey)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user