mirror of
				https://github.com/actions/checkout.git
				synced 2025-11-04 03:08:23 +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:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/setup-node@v1
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 12.x
 | 
			
		||||
      - uses: actions/checkout@v2
 | 
			
		||||
      - run: npm ci
 | 
			
		||||
      - run: npm run build
 | 
			
		||||
@@ -83,16 +86,92 @@ jobs:
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: __test__/verify-lfs.sh
 | 
			
		||||
 | 
			
		||||
  test-job-container:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    container: alpine:latest
 | 
			
		||||
    steps:
 | 
			
		||||
      # Clone this repo
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v2
 | 
			
		||||
 | 
			
		||||
      # Basic checkout
 | 
			
		||||
      - name: Basic checkout
 | 
			
		||||
      # Basic checkout using REST API
 | 
			
		||||
      - name: Remove basic
 | 
			
		||||
        if: runner.os != 'windows'
 | 
			
		||||
        run: rm -rf basic
 | 
			
		||||
      - name: Remove basic (Windows)
 | 
			
		||||
        if: runner.os == 'windows'
 | 
			
		||||
        shell: cmd
 | 
			
		||||
        run: rmdir /s /q basic
 | 
			
		||||
      - name: Override git version
 | 
			
		||||
        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: ./
 | 
			
		||||
        with:
 | 
			
		||||
          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",
 | 
			
		||||
  "version": "2.0.0",
 | 
			
		||||
  "version": "2.0.2",
 | 
			
		||||
  "lockfileVersion": 1,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
@@ -15,14 +15,30 @@
 | 
			
		||||
      "integrity": "sha512-nvFkxwiicvpzNiCBF4wFBDfnBvi7xp/as7LE1hBxBxKG2L29+gkIPBiLKMVORL+Hg3JNf07AKRfl0V5djoypjQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "@actions/github": {
 | 
			
		||||
      "version": "2.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-sNpZ5dJyJyfJIO5lNYx8r/Gha4Tlm8R0MLO2cBkGdOnAAEn3t1M/MHVcoBhY/VPfjGVe5RNAUPz+6INrViiUPA==",
 | 
			
		||||
      "version": "2.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-G4ncMlh4pLLAvNgHUYUtpWQ1zPf/VYqmRH9oshxLabdaOOnp7i1hgSgzr2xne2YUaSND3uqemd3YYTIsm2f/KQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@actions/http-client": "^1.0.3",
 | 
			
		||||
        "@octokit/graphql": "^4.3.1",
 | 
			
		||||
        "@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": {
 | 
			
		||||
      "version": "1.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.1.tgz",
 | 
			
		||||
@@ -597,6 +613,14 @@
 | 
			
		||||
        "@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": {
 | 
			
		||||
      "version": "5.5.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.1.tgz",
 | 
			
		||||
@@ -643,10 +667,11 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@octokit/rest": {
 | 
			
		||||
      "version": "16.35.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.35.0.tgz",
 | 
			
		||||
      "integrity": "sha512-9ShFqYWo0CLoGYhA1FdtdykJuMzS/9H6vSbbQWDX4pWr4p9v+15MsH/wpd/3fIU+tSxylaNO48+PIHqOkBRx3w==",
 | 
			
		||||
      "version": "16.38.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.38.1.tgz",
 | 
			
		||||
      "integrity": "sha512-zyNFx+/Bd1EXt7LQjfrc6H4wryBQ/oDuZeZhGMBSFr1eMPFDmpEweFQR3R25zjKwBQpDY7L5GQO6A3XSaOfV1w==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@octokit/auth-token": "^2.4.0",
 | 
			
		||||
        "@octokit/request": "^5.2.0",
 | 
			
		||||
        "@octokit/request-error": "^1.0.2",
 | 
			
		||||
        "atob-lite": "^2.0.0",
 | 
			
		||||
@@ -662,9 +687,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@octokit/types": {
 | 
			
		||||
      "version": "2.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-StASIL2lgT3TRjxv17z9pAqbnI7HGu9DrJlg3sEBFfCLaMEqp+O3IQPUF6EZtQ4xkAu2ml6kMBBCtGxjvmtmuQ==",
 | 
			
		||||
      "version": "2.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-89LOYH+d/vsbDX785NOfLxTW88GjNd0lWRz1DVPVsZgg9Yett5O+3MOvwo7iHgvUwbFz0mf/yPIjBkUbs4kxoQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@types/node": ">= 8"
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "checkout",
 | 
			
		||||
  "version": "2.0.1",
 | 
			
		||||
  "version": "2.0.2",
 | 
			
		||||
  "description": "checkout action",
 | 
			
		||||
  "main": "lib/main.js",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
@@ -31,7 +31,7 @@
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@actions/core": "^1.1.3",
 | 
			
		||||
    "@actions/exec": "^1.0.1",
 | 
			
		||||
    "@actions/github": "^2.0.0",
 | 
			
		||||
    "@actions/github": "^2.0.2",
 | 
			
		||||
    "@actions/io": "^1.0.1",
 | 
			
		||||
    "@actions/tool-cache": "^1.1.2",
 | 
			
		||||
    "uuid": "^3.3.3"
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,8 @@ import * as refHelper from './ref-helper'
 | 
			
		||||
import * as stateHelper from './state-helper'
 | 
			
		||||
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 {
 | 
			
		||||
  repositoryPath: string
 | 
			
		||||
@@ -95,7 +96,7 @@ export async function getSource(settings: ISourceSettings): Promise<void> {
 | 
			
		||||
    await removeGitConfig(git, authConfigKey)
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      // Config auth token
 | 
			
		||||
      // Config extraheader
 | 
			
		||||
      await configureAuthToken(git, settings.authToken)
 | 
			
		||||
 | 
			
		||||
      // LFS install
 | 
			
		||||
@@ -136,16 +137,21 @@ export async function getSource(settings: ISourceSettings): Promise<void> {
 | 
			
		||||
 | 
			
		||||
export async function cleanup(repositoryPath: string): Promise<void> {
 | 
			
		||||
  // Repo exists?
 | 
			
		||||
  if (!fsHelper.fileExistsSync(path.join(repositoryPath, '.git', 'config'))) {
 | 
			
		||||
  if (
 | 
			
		||||
    !repositoryPath ||
 | 
			
		||||
    !fsHelper.fileExistsSync(path.join(repositoryPath, '.git', 'config'))
 | 
			
		||||
  ) {
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
  fsHelper.directoryExistsSync(repositoryPath, true)
 | 
			
		||||
 | 
			
		||||
  // Remove the config key
 | 
			
		||||
  const git = await gitCommandManager.CreateCommandManager(
 | 
			
		||||
    repositoryPath,
 | 
			
		||||
    false
 | 
			
		||||
  )
 | 
			
		||||
  let git: IGitCommandManager
 | 
			
		||||
  try {
 | 
			
		||||
    git = await gitCommandManager.CreateCommandManager(repositoryPath, false)
 | 
			
		||||
  } catch {
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Remove extraheader
 | 
			
		||||
  await removeGitConfig(git, authConfigKey)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user