checkout/.github/workflows/test.yml

283 lines
7.1 KiB
YAML
Raw Normal View History

Update test.yml ## name: Build and Test on: pull_request: push: branches: - main - releases/* jobs: build: runs-on: ubuntu-latest steps: - uses: actions/setup-node@v1 with: node-version: 20.x - uses: actions/checkout@v3 - run: npm ci - run: npm run build - run: npm run format-check - run: npm run lint - run: npm test - name: Verify no unstaged changes run: __test__/verify-no-unstaged-changes.sh test: strategy: matrix: runs-on: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.runs-on }} steps: # Clone this repo - name: Checkout uses: actions/checkout@v3 # Basic checkout - name: Checkout basic 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 - name: Checkout clean uses: ./ with: ref: test-data/v2/basic path: basic - name: Verify clean shell: bash run: __test__/verify-clean.sh # Side by side - name: Checkout side by side 1 uses: ./ with: ref: test-data/v2/side-by-side-1 path: side-by-side-1 - name: Checkout side by side 2 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 # Filter - name: Fetch filter uses: ./ with: filter: 'blob:none' path: fetch-filter - name: Verify fetch filter run: __test__/verify-fetch-filter.sh # 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 # 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 # LFS - name: Checkout LFS 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 # Submodules false - name: Checkout submodules false uses: ./ with: ref: test-data/v2/submodule-ssh-url path: submodules-false - name: Verify submodules false run: __test__/verify-submodules-false.sh # Submodules one level - name: Checkout submodules true uses: ./ with: ref: test-data/v2/submodule-ssh-url path: submodules-true submodules: true - name: Verify submodules true run: __test__/verify-submodules-true.sh # Submodules recursive - name: Checkout submodules recursive uses: ./ with: ref: test-data/v2/submodule-ssh-url path: submodules-recursive submodules: recursive - name: Verify submodules recursive run: __test__/verify-submodules-recursive.sh # 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: Checkout basic 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: ubuntu/squid:latest ports: - 3128:3128 env: https_proxy: http://squid-proxy:3128 steps: # Clone this repo - name: Checkout uses: actions/checkout@v3 # Basic checkout using git - name: Checkout basic 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@v3 # Basic checkout using git - name: Checkout basic 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: Checkout basic using REST API uses: ./ with: ref: test-data/v2/basic path: basic - name: Verify basic run: __test__/verify-basic.sh --archive test-git-container: runs-on: ubuntu-latest container: bitnami/git:latest steps: # Clone this repo - name: Checkout uses: actions/checkout@v3 with: path: v3 # Basic checkout using git - name: Checkout basic uses: ./v3 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 - name: Fix Checkout v3 uses: actions/checkout@v3 with: path: v3
2023-11-04 06:49:16 +08:00
## name: Build and Test
on:
pull_request:
push:
branches:
2020-07-14 21:23:30 +08:00
- main
- releases/*
jobs:
build:
runs-on: ubuntu-latest
steps:
2020-01-27 23:21:50 +08:00
- uses: actions/setup-node@v1
with:
node-version: 20.x
- uses: actions/checkout@v3
- run: npm ci
- run: npm run build
- run: npm run format-check
- run: npm run lint
2019-12-13 02:49:26 +08:00
- run: npm test
- name: Verify no unstaged changes
run: __test__/verify-no-unstaged-changes.sh
test:
strategy:
matrix:
runs-on: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.runs-on }}
steps:
# Clone this repo
- name: Checkout
uses: actions/checkout@v3
# Basic checkout
2020-03-10 22:45:50 +08:00
- name: Checkout basic
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 22:45:50 +08:00
- name: Checkout clean
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 22:45:50 +08:00
- name: Checkout side by side 1
uses: ./
with:
ref: test-data/v2/side-by-side-1
path: side-by-side-1
2020-03-10 22:45:50 +08:00
- name: Checkout side by side 2
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
# Filter
- name: Fetch filter
uses: ./
with:
filter: 'blob:none'
path: fetch-filter
- name: Verify fetch filter
run: __test__/verify-fetch-filter.sh
Add support for sparse checkouts (#1369) * Add support for sparse checkouts * sparse-checkout: optionally turn off cone mode While it _is_ true that cone mode is the default nowadays (mainly for performance reasons: code mode is much faster than non-cone mode), there _are_ legitimate use cases where non-cone mode is really useful. Let's add a flag to optionally disable cone mode. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> * Verify minimum Git version for sparse checkout The `git sparse-checkout` command is available only since Git version v2.25.0. The `actions/checkout` Action actually supports older Git versions than that; As of time of writing, the minimum version is v2.18.0. Instead of raising this minimum version even for users who do not require a sparse checkout, only check for this minimum version specifically when a sparse checkout was asked for. Suggested-by: Tingluo Huang <tingluohuang@github.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> * Support sparse checkout/LFS better Instead of fetching all the LFS objects present in the current revision in a sparse checkout, whether they are needed inside the sparse cone or not, let's instead only pull the ones that are actually needed. To do that, let's avoid running that preemptive `git lfs fetch` call in case of a sparse checkout. An alternative that was considered during the development of this patch (and ultimately rejected) was to use `git lfs pull --include <path>...`, but it turned out to be too inflexible because it requires exact paths, not the patterns that are available via the sparse checkout definition, and that risks running into command-line length limitations. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --------- Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Co-authored-by: Daniel <daniel.fernandez@feverup.com>
2023-06-09 21:08:21 +08: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
# 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
# LFS
2020-03-10 22:45:50 +08:00
- name: Checkout LFS
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
2020-03-06 03:21:59 +08:00
# Submodules false
2020-03-10 22:45:50 +08:00
- name: Checkout submodules false
2020-03-06 03:21:59 +08:00
uses: ./
with:
2020-03-10 22:45:50 +08:00
ref: test-data/v2/submodule-ssh-url
2020-03-06 03:21:59 +08:00
path: submodules-false
- name: Verify submodules false
run: __test__/verify-submodules-false.sh
# Submodules one level
2020-03-10 22:45:50 +08:00
- name: Checkout submodules true
2020-03-06 03:21:59 +08:00
uses: ./
with:
2020-03-10 22:45:50 +08:00
ref: test-data/v2/submodule-ssh-url
2020-03-06 03:21:59 +08:00
path: submodules-true
submodules: true
- name: Verify submodules true
run: __test__/verify-submodules-true.sh
# Submodules recursive
2020-03-10 22:45:50 +08:00
- name: Checkout submodules recursive
2020-03-06 03:21:59 +08:00
uses: ./
with:
2020-03-10 22:45:50 +08:00
ref: test-data/v2/submodule-ssh-url
2020-03-06 03:21:59 +08:00
path: submodules-recursive
submodules: recursive
- name: Verify submodules recursive
run: __test__/verify-submodules-recursive.sh
2020-01-27 23:21:50 +08: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 22:45:50 +08:00
- name: Checkout basic using REST API
2020-01-27 23:21:50 +08: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:
image: alpine/git:latest
options: --dns 127.0.0.1
services:
squid-proxy:
image: ubuntu/squid:latest
2020-01-27 23:21:50 +08:00
ports:
- 3128:3128
env:
https_proxy: http://squid-proxy:3128
steps:
# Clone this repo
- name: Checkout
uses: actions/checkout@v3
2020-01-27 23:21:50 +08:00
# Basic checkout using git
2020-03-10 22:45:50 +08:00
- name: Checkout basic
2020-01-27 23:21:50 +08: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:
runs-on: ubuntu-latest
2020-01-27 23:21:50 +08:00
env:
https_proxy: http://no-such-proxy:3128
no_proxy: api.github.com,github.com
steps:
# Clone this repo
- name: Checkout
uses: actions/checkout@v3
2020-01-27 23:21:50 +08:00
# Basic checkout using git
2020-03-10 22:45:50 +08:00
- name: Checkout basic
uses: ./
with:
ref: test-data/v2/basic
path: basic
2020-01-27 23:21:50 +08: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 22:45:50 +08:00
- name: Checkout basic using REST API
2020-01-27 23:21:50 +08:00
uses: ./
with:
ref: test-data/v2/basic
path: basic
- name: Verify basic
run: __test__/verify-basic.sh --archive
test-git-container:
runs-on: ubuntu-latest
container: bitnami/git:latest
steps:
# Clone this repo
- name: Checkout
uses: actions/checkout@v3
with:
path: v3
# Basic checkout using git
- name: Checkout basic
uses: ./v3
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
- name: Fix Checkout v3
uses: actions/checkout@v3
with:
Update test.yml ## name: Build and Test on: pull_request: push: branches: - main - releases/* jobs: build: runs-on: ubuntu-latest steps: - uses: actions/setup-node@v1 with: node-version: 20.x - uses: actions/checkout@v3 - run: npm ci - run: npm run build - run: npm run format-check - run: npm run lint - run: npm test - name: Verify no unstaged changes run: __test__/verify-no-unstaged-changes.sh test: strategy: matrix: runs-on: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.runs-on }} steps: # Clone this repo - name: Checkout uses: actions/checkout@v3 # Basic checkout - name: Checkout basic 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 - name: Checkout clean uses: ./ with: ref: test-data/v2/basic path: basic - name: Verify clean shell: bash run: __test__/verify-clean.sh # Side by side - name: Checkout side by side 1 uses: ./ with: ref: test-data/v2/side-by-side-1 path: side-by-side-1 - name: Checkout side by side 2 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 # Filter - name: Fetch filter uses: ./ with: filter: 'blob:none' path: fetch-filter - name: Verify fetch filter run: __test__/verify-fetch-filter.sh # 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 # 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 # LFS - name: Checkout LFS 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 # Submodules false - name: Checkout submodules false uses: ./ with: ref: test-data/v2/submodule-ssh-url path: submodules-false - name: Verify submodules false run: __test__/verify-submodules-false.sh # Submodules one level - name: Checkout submodules true uses: ./ with: ref: test-data/v2/submodule-ssh-url path: submodules-true submodules: true - name: Verify submodules true run: __test__/verify-submodules-true.sh # Submodules recursive - name: Checkout submodules recursive uses: ./ with: ref: test-data/v2/submodule-ssh-url path: submodules-recursive submodules: recursive - name: Verify submodules recursive run: __test__/verify-submodules-recursive.sh # 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: Checkout basic 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: ubuntu/squid:latest ports: - 3128:3128 env: https_proxy: http://squid-proxy:3128 steps: # Clone this repo - name: Checkout uses: actions/checkout@v3 # Basic checkout using git - name: Checkout basic 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@v3 # Basic checkout using git - name: Checkout basic 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: Checkout basic using REST API uses: ./ with: ref: test-data/v2/basic path: basic - name: Verify basic run: __test__/verify-basic.sh --archive test-git-container: runs-on: ubuntu-latest container: bitnami/git:latest steps: # Clone this repo - name: Checkout uses: actions/checkout@v3 with: path: v3 # Basic checkout using git - name: Checkout basic uses: ./v3 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 - name: Fix Checkout v3 uses: actions/checkout@v3 with: path: v3
2023-11-04 06:49:16 +08:00
path: v3