2019-12-03 22:28:59 +07:00
|
|
|
name: Build and Test
|
|
|
|
|
2019-10-25 21:52:59 +07:00
|
|
|
on:
|
|
|
|
pull_request:
|
|
|
|
push:
|
|
|
|
branches:
|
2020-07-14 20:23:30 +07:00
|
|
|
- main
|
2019-12-03 22:28:59 +07:00
|
|
|
- releases/*
|
2019-10-25 21:52:59 +07:00
|
|
|
|
2024-02-21 19:56:19 +07:00
|
|
|
|
2024-04-24 03:07:43 +07:00
|
|
|
# Note that when you see patterns like "ref: test-data/v2/basic" within this workflow,
|
2024-02-21 19:56:19 +07:00
|
|
|
# these refer to "test-data" branches on this actions/checkout repo.
|
|
|
|
# (For example, test-data/v2/basic -> https://github.com/actions/checkout/tree/test-data/v2/basic)
|
|
|
|
|
2019-10-25 21:52:59 +07:00
|
|
|
jobs:
|
2019-12-03 22:28:59 +07:00
|
|
|
build:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
2024-04-24 23:34:46 +07:00
|
|
|
- uses: actions/setup-node@v4
|
2020-01-27 22:21:50 +07:00
|
|
|
with:
|
2023-08-29 22:01:52 +07:00
|
|
|
node-version: 20.x
|
2024-06-13 00:11:03 +07:00
|
|
|
- uses: actions/checkout@v4.1.6
|
2019-12-03 22:28:59 +07:00
|
|
|
- run: npm ci
|
|
|
|
- run: npm run build
|
|
|
|
- run: npm run format-check
|
|
|
|
- run: npm run lint
|
2019-12-13 01:49:26 +07:00
|
|
|
- run: npm test
|
2019-12-03 22:28:59 +07:00
|
|
|
- name: Verify no unstaged changes
|
|
|
|
run: __test__/verify-no-unstaged-changes.sh
|
|
|
|
|
2019-10-25 21:52:59 +07:00
|
|
|
test:
|
|
|
|
strategy:
|
|
|
|
matrix:
|
2019-12-03 22:28:59 +07:00
|
|
|
runs-on: [ubuntu-latest, macos-latest, windows-latest]
|
|
|
|
runs-on: ${{ matrix.runs-on }}
|
|
|
|
|
2019-10-25 21:52:59 +07:00
|
|
|
steps:
|
2019-12-03 22:28:59 +07:00
|
|
|
# Clone this repo
|
|
|
|
- name: Checkout
|
2024-06-13 00:11:03 +07:00
|
|
|
uses: actions/checkout@v4.1.6
|
2019-12-03 22:28:59 +07:00
|
|
|
|
|
|
|
# Basic checkout
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout basic
|
2019-12-03 22:28:59 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
ref: test-data/v2/basic
|
|
|
|
path: basic
|
|
|
|
- name: Verify basic
|
|
|
|
shell: bash
|
|
|
|
run: __test__/verify-basic.sh
|
|
|
|
|
|
|
|
# Clean
|
|
|
|
- name: Modify work tree
|
|
|
|
shell: bash
|
|
|
|
run: __test__/modify-work-tree.sh
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout clean
|
2019-12-03 22:28:59 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
ref: test-data/v2/basic
|
|
|
|
path: basic
|
|
|
|
- name: Verify clean
|
|
|
|
shell: bash
|
|
|
|
run: __test__/verify-clean.sh
|
|
|
|
|
|
|
|
# Side by side
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout side by side 1
|
2019-12-03 22:28:59 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
ref: test-data/v2/side-by-side-1
|
|
|
|
path: side-by-side-1
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout side by side 2
|
2019-12-03 22:28:59 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
ref: test-data/v2/side-by-side-2
|
|
|
|
path: side-by-side-2
|
|
|
|
- name: Verify side by side
|
|
|
|
shell: bash
|
|
|
|
run: __test__/verify-side-by-side.sh
|
|
|
|
|
2023-09-23 00:30:36 +07:00
|
|
|
# Filter
|
|
|
|
- name: Fetch filter
|
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
filter: 'blob:none'
|
|
|
|
path: fetch-filter
|
|
|
|
|
|
|
|
- name: Verify fetch filter
|
|
|
|
run: __test__/verify-fetch-filter.sh
|
|
|
|
|
2023-06-09 20:08:21 +07:00
|
|
|
# Sparse checkout
|
|
|
|
- name: Sparse checkout
|
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
sparse-checkout: |
|
|
|
|
__test__
|
|
|
|
.github
|
|
|
|
dist
|
|
|
|
path: sparse-checkout
|
|
|
|
|
|
|
|
- name: Verify sparse checkout
|
|
|
|
run: __test__/verify-sparse-checkout.sh
|
|
|
|
|
2024-02-21 19:56:19 +07:00
|
|
|
# Disabled sparse checkout in existing checkout
|
|
|
|
- name: Disabled sparse checkout
|
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
path: sparse-checkout
|
|
|
|
|
|
|
|
- name: Verify disabled sparse checkout
|
|
|
|
shell: bash
|
|
|
|
run: set -x && ls -l sparse-checkout/src/git-command-manager.ts
|
|
|
|
|
2023-06-09 20:08:21 +07:00
|
|
|
# Sparse checkout (non-cone mode)
|
|
|
|
- name: Sparse checkout (non-cone mode)
|
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
sparse-checkout: |
|
|
|
|
/__test__/
|
|
|
|
/.github/
|
|
|
|
/dist/
|
|
|
|
sparse-checkout-cone-mode: false
|
|
|
|
path: sparse-checkout-non-cone-mode
|
|
|
|
|
|
|
|
- name: Verify sparse checkout (non-cone mode)
|
|
|
|
run: __test__/verify-sparse-checkout-non-cone-mode.sh
|
|
|
|
|
2019-12-03 22:28:59 +07:00
|
|
|
# LFS
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout LFS
|
2019-12-03 22:28:59 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
repository: actions/checkout # hardcoded, otherwise doesn't work from a fork
|
|
|
|
ref: test-data/v2/lfs
|
|
|
|
path: lfs
|
|
|
|
lfs: true
|
|
|
|
- name: Verify LFS
|
|
|
|
shell: bash
|
|
|
|
run: __test__/verify-lfs.sh
|
2019-12-13 01:16:16 +07:00
|
|
|
|
2020-03-06 02:21:59 +07:00
|
|
|
# Submodules false
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout submodules false
|
2020-03-06 02:21:59 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
2020-03-10 21:45:50 +07:00
|
|
|
ref: test-data/v2/submodule-ssh-url
|
2020-03-06 02:21:59 +07:00
|
|
|
path: submodules-false
|
|
|
|
- name: Verify submodules false
|
|
|
|
run: __test__/verify-submodules-false.sh
|
|
|
|
|
|
|
|
# Submodules one level
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout submodules true
|
2020-03-06 02:21:59 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
2020-03-10 21:45:50 +07:00
|
|
|
ref: test-data/v2/submodule-ssh-url
|
2020-03-06 02:21:59 +07:00
|
|
|
path: submodules-true
|
|
|
|
submodules: true
|
|
|
|
- name: Verify submodules true
|
|
|
|
run: __test__/verify-submodules-true.sh
|
2024-08-27 14:55:59 +07:00
|
|
|
|
|
|
|
# Submodules limited
|
|
|
|
- name: Checkout submodules limited
|
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
ref: test-data/v2/submodule-ssh-url
|
|
|
|
path: submodules-true
|
|
|
|
submodules: true
|
|
|
|
submodule-directories: submodule-level-1
|
|
|
|
- name: Verify submodules true
|
|
|
|
run: __test__/verify-submodules-true.sh
|
2020-03-06 02:21:59 +07:00
|
|
|
|
|
|
|
# Submodules recursive
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout submodules recursive
|
2020-03-06 02:21:59 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
2020-03-10 21:45:50 +07:00
|
|
|
ref: test-data/v2/submodule-ssh-url
|
2020-03-06 02:21:59 +07:00
|
|
|
path: submodules-recursive
|
|
|
|
submodules: recursive
|
|
|
|
- name: Verify submodules recursive
|
|
|
|
run: __test__/verify-submodules-recursive.sh
|
|
|
|
|
2020-01-27 22:21:50 +07:00
|
|
|
# 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
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout basic using REST API
|
2020-01-27 22:21:50 +07:00
|
|
|
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:
|
2024-02-21 19:56:19 +07:00
|
|
|
image: ghcr.io/actions/test-ubuntu-git:main.20240221.114913.703z
|
2020-01-27 22:21:50 +07:00
|
|
|
options: --dns 127.0.0.1
|
|
|
|
services:
|
|
|
|
squid-proxy:
|
2022-11-11 03:54:12 +07:00
|
|
|
image: ubuntu/squid:latest
|
2020-01-27 22:21:50 +07:00
|
|
|
ports:
|
|
|
|
- 3128:3128
|
|
|
|
env:
|
|
|
|
https_proxy: http://squid-proxy:3128
|
|
|
|
steps:
|
|
|
|
# Clone this repo
|
|
|
|
- name: Checkout
|
2024-06-13 00:11:03 +07:00
|
|
|
uses: actions/checkout@v4.1.6
|
2020-01-27 22:21:50 +07:00
|
|
|
|
|
|
|
# Basic checkout using git
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout basic
|
2020-01-27 22:21:50 +07:00
|
|
|
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:
|
2019-12-13 01:16:16 +07:00
|
|
|
runs-on: ubuntu-latest
|
2020-01-27 22:21:50 +07:00
|
|
|
env:
|
|
|
|
https_proxy: http://no-such-proxy:3128
|
|
|
|
no_proxy: api.github.com,github.com
|
2019-12-13 01:16:16 +07:00
|
|
|
steps:
|
|
|
|
# Clone this repo
|
|
|
|
- name: Checkout
|
2024-06-13 00:11:03 +07:00
|
|
|
uses: actions/checkout@v4.1.6
|
2019-12-13 01:16:16 +07:00
|
|
|
|
2020-01-27 22:21:50 +07:00
|
|
|
# Basic checkout using git
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout basic
|
2019-12-13 01:16:16 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
ref: test-data/v2/basic
|
|
|
|
path: basic
|
2020-01-27 22:21:50 +07:00
|
|
|
- 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
|
2020-03-10 21:45:50 +07:00
|
|
|
- name: Checkout basic using REST API
|
2020-01-27 22:21:50 +07:00
|
|
|
uses: ./
|
|
|
|
with:
|
|
|
|
ref: test-data/v2/basic
|
|
|
|
path: basic
|
2019-12-13 01:16:16 +07:00
|
|
|
- name: Verify basic
|
|
|
|
run: __test__/verify-basic.sh --archive
|
2024-04-24 03:07:43 +07:00
|
|
|
|
2022-04-21 08:37:43 +07:00
|
|
|
test-git-container:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
container: bitnami/git:latest
|
|
|
|
steps:
|
|
|
|
# Clone this repo
|
|
|
|
- name: Checkout
|
2024-06-13 00:11:03 +07:00
|
|
|
uses: actions/checkout@v4.1.6
|
2022-04-21 08:37:43 +07:00
|
|
|
with:
|
2024-06-13 00:11:03 +07:00
|
|
|
path: localClone
|
2022-04-21 08:37:43 +07:00
|
|
|
|
|
|
|
# Basic checkout using git
|
|
|
|
- name: Checkout basic
|
2024-06-13 00:11:03 +07:00
|
|
|
uses: ./localClone
|
2022-04-21 08:37:43 +07:00
|
|
|
with:
|
|
|
|
ref: test-data/v2/basic
|
|
|
|
- name: Verify basic
|
|
|
|
run: |
|
|
|
|
if [ ! -f "./basic-file.txt" ]; then
|
|
|
|
echo "Expected basic file does not exist"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Verify .git folder
|
|
|
|
if [ ! -d "./.git" ]; then
|
|
|
|
echo "Expected ./.git folder to exist"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Verify auth token
|
|
|
|
git config --global --add safe.directory "*"
|
|
|
|
git fetch --no-tags --depth=1 origin +refs/heads/main:refs/remotes/origin/main
|
|
|
|
|
|
|
|
# needed to make checkout post cleanup succeed
|
2024-05-21 01:25:59 +07:00
|
|
|
- name: Fix Checkout v4
|
2024-06-13 00:11:03 +07:00
|
|
|
uses: actions/checkout@v4.1.6
|
2022-04-21 08:37:43 +07:00
|
|
|
with:
|
2024-06-13 00:11:03 +07:00
|
|
|
path: localClone
|