Skip to content

ci(workflows): add workflow ci #1

ci(workflows): add workflow ci

ci(workflows): add workflow ci #1

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"
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Check out the codebase.
uses: actions/checkout@v2
- name: Set up Python 3.
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install test dependencies.
run: pip3 install yamllint ansible ansible-lint
- name: Lint code.
run: |
yamllint .
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@v2
- 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 test dependencies.
run: |
sudo pip3 install --upgrade pip
sudo pip3 install ansible
# - name: Set up the test environment.
# run: |
# cp tests/ansible.cfg ./ansible.cfg
# cp tests/inventory ./inventory
# cp tests/config.yml ./config.yml
# ansible-galaxy install -r requirements.yml
- name: Check the playbook's syntax.
run: ansible-playbook ${{ matrix.playbook }}.yaml --syntax-check
- name: Test the playbook.
run: ./dotfiles ${{ matrix.playbook }}
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'