-
Notifications
You must be signed in to change notification settings - Fork 15
105 lines (87 loc) · 4.05 KB
/
validator.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
name: Dataset Validator
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
Validate:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
# make sure to download directly from the PR's repo, whether that is this repo or a fork
# By default github generates a merge commit for each PR in this repo, but only for the one branch under test
# but `git-annex` needs access to *two* branches: the current branch and `git-annex`
# this might be subtly buggy since it is testing the remote version, not the merged version
#
# *if* this is not a pull request, this will fall back to its default behaviour.
repository: ${{github.event.pull_request.head.repo.full_name}}
ref: ${{ github.event.pull_request.head.ref }}
- name: Install dos2unix
run: |
# the easy way to do this: convert everything to unix and ask git if that changed anything
sudo apt-get install -y dos2unix
- name: Check line endings
run: |
# the easy way to do this: convert everything to unix and ask git if that changed anything
find ./ -path ./.git -prune -o -type f -print0 | xargs -0 dos2unix -q
# this version is safer, but more maintenance:
#find ./ -path ./.git -prune -o -type f \( ! -name "*.nii" -a ! -name "*.nii.gz" \) -print0 | xargs -0 dos2unix -q
git diff --stat --exit-code
if [ "$?" -ne 0 ]; then
echo "error: Windows line endings found."
exit 1
fi
- name: Lint participants.tsv
run: .github/workflows/lint-tsv participants.tsv
#- name: Update software
# run: |
# # do we want to do this? it's helpful to avoid testing against surprise out-of-date software, but also so slow.
# sudo apt-get update &&
# sudo DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade &&
# sudo DEBIAN_FRONTEND=noninteractive apt-get autoremove
- name: Install git-annex
run: |
sudo apt-get install -y git-annex
git config --global annex.thin true
- name: Install bids-validator
run: |
# install proper NodeJS for bids-validator
curl -sL https://deb.nodesource.com/setup_current.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g bids-validator
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Install spine-generic for acquisition parameters check
run: pip install spinegeneric@git+https://github.com/spine-generic/spine-generic.git@master
#- name: Increase free space
# run: |
# # this takes about 2 minutes but saves about 30GB, which is space we might need for git-annex.
# # annex.thin saves a lot of space, but if the dataset grows beyond what Github can handle
# # try enabling this.
# # ref: https://github.com/actions/virtual-environments/issues/2606#issuecomment-772683150
# sudo rm -rf /usr/local/lib/android /usr/share/dotnet
- name: git config
run: |
# this is needed by git-annex so that it can write to the local git-annex branch
# the tracking information about the local copy
git config --global user.name "gh-actions"
git config --global user.email "gh-actions"
# but actually, disable those writes. We don't need them because we're throwing away this copy immediately.
# this might make the previous two lines unnecessary, but it's safer just to leave them both in
git config annex.alwayscommit false
- name: Download dataset
run: |
git fetch --depth=1 origin git-annex:git-annex # actions/checkout@v2 does a shallow checkout, so it is missing this important branch
git annex init
git annex get -J8
- name: Checking BIDS compliance
run: bids-validator --verbose ./
- name: Checking acquisition parameters
run: sg_params_checker -path-in ./
- name: Checking data consistency
run: sg_check_data_consistency -path-in ./