Skip to content

Commit

Permalink
ci(workflows): add workflow ci
Browse files Browse the repository at this point in the history
  ## what
  - add workflow `ci`
    - lint ansible files
    - run ansible playbook on different OS
      - OS
        - macos
        - ubuntu
      - steps
        - checkout code
        - remove homebrewo (if running on macos)
        - remove built in browsers (if running on macos)
        - install ansible via `pip3`
        - check playbook syntax
        - run ansible playbook
          - using `./dotfiles` script

  ## how
  - obtained from
    - https://github.com/geerlingguy/mac-dev-playbook/blob/master/.github/workflows/ci.yml

  ## why
  - this will be used to run the ansible playbook depending on the OS
  - this will be used to check if ansible playbook works
  - to ensure the script works before the repo is cloned

  ## where
  - ./.github/workflows/ci.yaml

  ## usage

  ## issue or pull request
  • Loading branch information
Clumsy-Coder committed Jan 31, 2024
1 parent 72f6c70 commit 4a7a347
Showing 1 changed file with 130 additions and 0 deletions.
130 changes: 130 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
---

# 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" ;
echo "$PYENV_BIN" >> "$GITHUB_PATH" ;
echo "PYENV_ROOT=$PYENV_ROOT" >> "$GITHUB_ENV" ;
# env ;
- name: Install pyenv
shell: bash
run: curl https://pyenv.run | bash

- 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: sudo pip3 install ansible

- 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: Run playbook '${{ matrix.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

0 comments on commit 4a7a347

Please sign in to comment.