Skip to content

ci(workflows): add workflow ci #31

ci(workflows): add workflow ci

ci(workflows): add workflow ci #31

Workflow file for this run

---
# 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:
# 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:
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 ansible
# run: |
# # source tools/zsh/.zshenv ;
# # source tools/zsh/exports.zsh ;
# sudo pip3 install --upgrade pip ;
# sudo pip3 install ansible ;
# ls -lah ~/.config ;
# ls -lah ~/.local ;
# which ansible ;
# which ansible-galaxy ;
- name: Install pyenv
run: |
curl "https://pyenv.run" | bash
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" ;
eval "$(pyenv init -)" ;
pythonVersion=$(pyenv install --list | grep --extended-regexp "^\s*[0-9][0-9.]*[0-9]\s*$" | tail -1)
echo -e "\e[34m> installing python version \e[1m$pythonVersion \e[0m"
pyenv install --skip-existing "$pythonVersion"
pyenv global "$pythonVersion"
- name: Install ansible via pyenv
run: |
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" ;
eval "$(pyenv init -)" ;
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: |
# source tools/zsh/.zshenv ;
# source tools/zsh/exports.zsh ;
ansible --version
- name: print env
run: |
# source tools/zsh/.zshenv ;
# source tools/zsh/exports.zsh ;
env
- name: print directory
run: |
pwd
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 ;
unset ANSIBLE_HOME ;
unset ANSIBLE_CONFIG ;
unset ANSIBLE_GALAXY_CACHE_DIR ;
ANSIBLE_CONFIG=./ansible.cfg ansible-playbook playbooks/${{ matrix.playbook }}.yaml
# - 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)