1
1
name : CI
2
+
2
3
on :
3
4
push :
4
5
branches :
5
6
- master
6
7
pull_request :
8
+
7
9
permissions :
8
10
contents : read
9
11
12
+ concurrency :
13
+ group : ${{ github.ref }}
14
+ cancel-in-progress : ${{ github.event_name == 'pull_request' }}
15
+
10
16
jobs :
11
17
tests :
12
18
strategy :
@@ -21,21 +27,14 @@ jobs:
21
27
- os : ubuntu-latest
22
28
shell : bash
23
29
- os : windows-latest
24
- shell : " wsl-bash {0}"
25
- runs-on : ${{matrix.os}}
30
+ shell : wsl -- dos2unix <"$(wslpath ' {0}')" | bash --noprofile --norc -euo pipefail
31
+ runs-on : ${{ matrix.os }}
26
32
defaults :
27
33
run :
28
34
shell : ${{ matrix.shell }}
29
35
steps :
30
- - name : Set up WSL
31
- if : runner.os == 'windows'
32
- shell : powershell
33
- run : |
34
- git config --global core.autocrlf false
35
- git config --global core.eol lf
36
-
37
36
- name : Set up Git repository
38
- uses : actions/checkout@main
37
+ uses : actions/checkout@v4
39
38
40
39
- name : Cleanup macOS
41
40
if : runner.os == 'macOS'
@@ -44,13 +43,23 @@ jobs:
44
43
/Library/Developer/CommandLineTools
45
44
sudo xcode-select --reset
46
45
47
- - name : Install WSL
48
- if : runner.os == 'windows'
49
- uses : Vampire/setup-wsl@6f87de3102a29ac6b92800f33bf1e8d9164ac0a1
50
- with :
51
- distribution : Ubuntu-22.04
52
- wsl-shell-user : runner
53
- additional-packages : build-essential
46
+ - name : Set up WSL
47
+ if : runner.os == 'Windows'
48
+ shell : powershell
49
+ run : |
50
+ wsl --update
51
+ wsl --version
52
+ wsl --set-default-version 2
53
+ wsl --install Ubuntu-22.04 --no-launch
54
+ ubuntu2204 install --root
55
+ wsl --set-default Ubuntu-22.04
56
+ wsl --list --verbose
57
+ wsl --exec apt-get update
58
+ wsl --exec apt-get install -y --no-install-recommends build-essential dos2unix
59
+ wsl --exec /usr/sbin/useradd --create-home runner
60
+ wsl -- --% echo "runner ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/runner
61
+ ubuntu2204 config --default-user runner
62
+ echo "WSLENV=CI:GITHUB_ACTIONS:RUNNER_OS:GITHUB_PATH/p" >> $env:GITHUB_ENV # allow some basic envs to be passed in
54
63
55
64
- name : Check Bash 3.x syntax
56
65
if : runner.os == 'macOS'
@@ -59,11 +68,13 @@ jobs:
59
68
/bin/bash -u -O extglob -n uninstall.sh
60
69
61
70
- name : Set up Homebrew PATH
62
- if : runner.os != 'windows'
63
71
run : |
64
- if [[ "${{ runner.os } }" = "macOS" ]]
72
+ if [[ "${RUNNER_OS }" = "macOS" ]]
65
73
then
66
74
echo "/usr/local/bin:/usr/bin:/bin" >> "${GITHUB_PATH}"
75
+ elif [[ "${RUNNER_OS}" = "Windows" ]]
76
+ then
77
+ echo "$(wslpath -w /home/linuxbrew/.linuxbrew/bin)" >> "${GITHUB_PATH}"
67
78
else
68
79
echo "/home/linuxbrew/.linuxbrew/bin:/usr/bin:/bin" >> "${GITHUB_PATH}"
69
80
fi
76
87
/bin/bash uninstall.sh -f >/dev/null
77
88
fi
78
89
79
- - name : Set up WSL environment
80
- if : runner.os == 'windows'
81
- shell : " wsl-bash -u root {0}"
82
- run : |
83
- echo "runner ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/runner
84
- chmod 644 /etc/sudoers.d/runner
85
- echo -e "#!/bin/bash\nexec /home/linuxbrew/.linuxbrew/bin/brew \"\$@\"" | tee /usr/local/bin/brew
86
- chmod 755 /usr/local/bin/brew
87
-
88
90
- run : /bin/bash -c "$(cat install.sh)"
89
91
90
92
- run : brew config
@@ -96,14 +98,13 @@ jobs:
96
98
- run : /bin/bash -c "$(cat install.sh)"
97
99
98
100
- name : Uninstall and reinstall with sudo NOPASSWD
99
- if : runner.os == 'linux '
101
+ if : runner.os == 'Linux '
100
102
run : |
101
103
echo "${USER} ALL=(ALL) NOPASSWD:ALL" | sudo tee "/etc/sudoers.d/${USER}"
102
104
/bin/bash uninstall.sh -f >/dev/null
103
105
/bin/bash -c "$(cat install.sh)"
104
106
105
107
- name : Check code styles
106
- if : runner.os != 'windows'
107
108
run : |
108
109
brew install shellcheck shfmt diffutils
109
110
brew style *.sh
0 commit comments