123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- 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: 16.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
- # 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
|