Skip to content

ci(workflows): add workflow ci #12

ci(workflows): add workflow ci

ci(workflows): add workflow ci #12

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
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: Install ansible
run: |
sudo pip3 install --upgrade pip
sudo pip3 install ansible
- name: Set up the test environment.
run: |
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
- run: env
- name: Check the playbook's syntax.
run: LC_ALL=en_CA.UTF-8 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-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'