-
Notifications
You must be signed in to change notification settings - Fork 0
207 lines (181 loc) · 6.52 KB
/
ci.yaml
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
---
# run setting up dotfiles using ansible in a CI server.
# This is to check if the dotfiles are being setup properly without issues.
#
# Obtained from https://github.com/geerlingguy/mac-dev-playbook/blob/master/.github/workflows/ci.yml
name: CI
'on':
pull_request:
push:
branches:
- master
schedule:
- cron: "0 5 * * 4"
env:
FORCE_COLOR: true # display terminal colors
ANSIBLE_FORCE_COLOR: '1'
jobs:
integration:
name: Integration
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: macos-latest
playbook: macos
# - os: macos-12
# playbook: macos
# - os: ubuntu-latest
# playbook: wsl-ubuntu
- os: ubuntu-22.04
playbook: wsl-ubuntu
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
# - name: Uninstall GitHub Actions' built-in Homebrew.
# if: startsWith(matrix.os, 'macos')
# run: |
# # Download and run the uninstall script.
# curl -sLO https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh ;
# chmod +x ./uninstall.sh ;
# sudo ./uninstall.sh --force ;
# # Clean up Homebrew directories.
# sudo rm -rf /usr/local/Homebrew ;
# sudo rm -rf /usr/local/Caskroom ;
# sudo rm -rf /usr/local/bin/brew ;
#
# - name: Uninstall GitHub Actions' built-in browser installs.
# if: startsWith(matrix.os, 'macos')
# run: |
# sudo rm -rf /Applications/Firefox.app
# sudo rm -rf /Applications/Google\ Chrome.app
# sudo rm -rf /usr/local/bin/firefox
# - name: Setup locales
# if: startsWith(matrix.os, 'ubuntu')
# run: |
# export LANG=en_CA.UTF-8
# export LC_ALL=en_CA.UTF-8
# sudo locale-gen "en_CA.UTF-8"
# sudo dpkg-reconfigure locales
#
# - name: Install python build tools
# if: startsWith(matrix.os, 'ubuntu')
# shell: bash
# # Ref: https://github.com/pyenv/pyenv/wiki#suggested-build-environment
# run: |
# sudo apt-get update -qq -y ;
# sudo apt-get install -qq -y make build-essential libssl-dev zlib1g-dev \
# libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
# libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev ffmpeg
#
# - name: Setup pyenv ENV variables
# shell: bash
# run: |
# PYENV_ROOT="$HOME/.pyenv" ;
# PYENV_BIN="$PYENV_ROOT/bin" ;
# PYENV_SHIMS="$PYENV_ROOT/shims" ;
# echo "$PYENV_BIN" >> "$GITHUB_PATH" ;
# echo "$PYENV_SHIMS" >> "$GITHUB_PATH" ;
# echo "PYENV_ROOT=$PYENV_ROOT" >> "$GITHUB_ENV" ;
# # env ;
- name: Install pyenv via action .github/actions/setup-pyenv
uses: ./.github/actions/setup-pyenv
- name: Install latest python version
shell: bash
run: |
# trim whitespace. https://unix.stackexchange.com/a/205854
pythonVersion=$(pyenv install --list | grep --extended-regexp "^\s*[0-9][0-9.]*[0-9]\s*$" | tail -1 | awk '{$1=$1;print}')
pyenv install --skip-existing "$pythonVersion"
pyenv global "$pythonVersion"
python --version
- name: Install ansible
shell: bash
run: |
pip3 install ansible
pyenv rehash
- name: which ansible
shell: bash
run: |
which ansible ;
which ansible-galaxy ;
which ansible-playbook ;
ansible --version
- name: Install ansible-galaxy requirements
shell: bash
run: ansible-galaxy install -r requirements.yaml
- name: print env
shell: bash
run: env
- name: print pyenv shims
run: |
pyenv doctor
pyenv shims
- name: remove last 6 lines in zshenv
if: startsWith(matrix.os, 'macos')
shell: bash
# obtained from https://www.baeldung.com/linux/remove-last-n-lines-of-file#bd-using-the-awk-command
run: awk -v n=6 'NR==FNR{total=NR;next} FNR==total-n+1{exit} 1' tools/zsh/.zshenv tools/zsh/.zshenv > tools/zsh/.zshenv
- name: cat tools/zsh/.zshenv
run: cat tools/zsh/.zshenv
- name: add tools/zsh/.zshenv to bashrc
run: |
echo "source $(pwd)/tools/zsh/.zshenv" >> ~/.bash_profile
echo "echo 'loaded zshenv'" >> tools/zsh/.zshenv
- name: ls HOME directory
run: |
ls -lah ~
- name: cat bashrc
run: cat ~/.bashrc
- name: cat bash_profile
run: cat ~/.bash_profile
- name: pwd current directory
run: pwd
- name: ls working directory
run: ls -lah
- name: sourcing tools/zsh/.zshenv
# if: startsWith(matrix.os, 'macos')
shell: bash
run: |
which ansible ;
which ansible-galaxy
which ansible-playbook ;
source tools/zsh/.zshenv
# add pyenv env into PATH again
# the PATH is reset when loading zshenv. Check last line in tools/zsh/.zshenv
PYENV_ROOT="$HOME/.pyenv"
PYENV_BIN="$PYENV_ROOT/bin"
PYENV_SHIMS="$PYENV_ROOT/shims" ;
echo "$PYENV_BIN" >> "$GITHUB_PATH" ;
echo "$PYENV_SHIMS" >> "$GITHUB_PATH" ;
echo "PYENV_ROOT=$PYENV_ROOT" >> "$GITHUB_ENV"
# print pyenv env
echo "PYENV_ROOT: $PYENV_ROOT"
echo "PYENV_BIN: $PYENV_BIN"
echo "PYENV_SHIMS: $PYENV_SHIMS"
echo "GITHUB_ENV: $GITHUB_ENV"
echo "GITHUB_PATH: $GITHUB_PATH"
which ansible ;
which ansible-galaxy
which ansible-playbook ;
echo "XDG_CONFIG_HOME=$HOME/config" >> "$GITHUB_ENV"
echo "$XDG_CONFIG_HOME"
- name: create temp directory
shell: bash
run: |
echo "$XDG_CONFIG_HOME"
mkdir -p "$XDG_CONFIG_HOME/ansible/tmp"
- name: Run playbook '${{ matrix.playbook }}'
shell: bash
run: |
which ansible ;
which ansible-playbook ;
source tools/zsh/.zshenv ;
# source tools/zsh/exports.zsh ;
PYENV_ROOT=$HOME/.pyenv
unset ANSIBLE_HOME ;
unset ANSIBLE_CONFIG ;
unset ANSIBLE_GALAXY_CACHE_DIR ;
echo "DOTDIR: $DOTDIR"
env
ANSIBLE_CONFIG=./ansible.cfg ansible-playbook playbooks/${{ matrix.playbook }}.yaml --skip-tags "brew, mas, dock"