-
Notifications
You must be signed in to change notification settings - Fork 0
150 lines (130 loc) · 4.42 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
---
# 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
jobs:
# lint:
# name: Lint
# runs-on: ubuntu-latest
# steps:
# - name: Check out the codebase.
# uses: actions/checkout@v4
#
# - name: Set up Python 3.
# uses: actions/setup-python@v5
# with:
# python-version: '3.x'
#
# - name: Install test dependencies.
# run: pip3 install yamllint ansible ansible-lint
#
# - name: Lint code using yamllint
# run: yamllint -c .yamllint .
#
# - name: Lint ansible code using ansible-lint
# run: ansible-lint -c .ansible-lint .
integration:
name: Integration
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
# - os: macos-latest
# runCommand: "./dotfiles macos"
# playbook: macos
# - os: macos-12
# runCommand: "./dotfiles macos"
# playbook: macos
# - os: ubuntu-latest
# runCommand: "./dotfiles wsl-ubuntu"
# playbook: wsl-ubuntu
- os: ubuntu-22.04
runCommand: "./dotfiles wsl-ubuntu"
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 ansible
run: |
source tools/zsh/.zshenv ;
source tools/zsh/exports.zsh ;
sudo pip3 install --upgrade pip ;
sudo pip3 install ansible ;
- name: Set up the test environment.
run: |
source tools/zsh/.zshenv ;
source tools/zsh/exports.zsh ;
ansible-galaxy install -r requirements.yaml
# cp tests/ansible.cfg ./ansible.cfg
# cp tests/inventory ./inventory
# cp tests/config.yml ./config.yml
- name: view ansible basic info
run: ansible --version
- name: print env
run: |
source tools/zsh/.zshenv ;
source tools/zsh/exports.zsh ;
env
- run: ls -lah
- name: echo ANSIBLE_HOME
run: |
source tools/zsh/.zshenv ;
source tools/zsh/exports.zsh ;
echo "$ANSIBLE_HOME"
- name: where ansible
run: |
source tools/zsh/.zshenv ;
source tools/zsh/exports.zsh ;
which ansible
# - name: Check the playbook's syntax.
# run: ANSIBLE_CONFIG=./ansible.cfg ansible-playbook playbooks/${{ matrix.playbook }}.yaml --syntax-check
- name: Test the playbook.
# run: ./dotfiles ${{ matrix.playbook }}
run: |
source tools/zsh/.zshenv ;
source tools/zsh/exports.zsh ;
ANSIBLE_CONFIG=./ansible.cfg ansible-playbook playbooks/${{ matrix.playbook }}.yaml
env:
ANSIBLE_FORCE_COLOR: '1'
# - name: Idempotence check.
# run: |
# idempotence=$(mktemp)
# ansible-playbook main.yml | tee -a ${idempotence}
# tail ${idempotence} | grep -q 'changed=0.*failed=0' && (echo 'Idempotence test: pass' && exit 0) || (echo 'Idempotence test: fail' && exit 1)
# env:
# ANSIBLE_FORCE_COLOR: '1'