Added new playbook just for cli-tools and updated CI

This commit is contained in:
Sagi Dayan 2021-12-14 13:20:38 +02:00
parent c31c5f66be
commit 41ebc5051c
Signed by: sagi
GPG key ID: FAB96BFC63B46458
9 changed files with 154 additions and 39 deletions

View file

@ -10,7 +10,7 @@ Run Workstation playbook on fedora:
- dnf install -y ansible python3-pip
- pip3 install -r ci-requirements.txt
- mkdir /tmp/artifacts
- ./play_workstation.sh
- ./run_play.sh workstation
- cp /tmp/artifacts/workstation-*.xml report.xml
- ls /tmp/artifacts
artifacts:
@ -18,18 +18,53 @@ Run Workstation playbook on fedora:
reports:
junit: report.xml
Run cli-tools playbook on centos:
stage: dnf_systems
image: centos:8
script:
- dnf install -y epel-release dnf-plugins-core
- dnf install -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm
- dnf makecache
- dnf install -y ansible python3-pip
- pip3 install -r ci-requirements.txt
- mkdir /tmp/artifacts
- ./run_play.sh cli-tools
- cp /tmp/artifacts/cli-tools-*.xml report.xml
- ls /tmp/artifacts
artifacts:
when: always
reports:
junit: report.xml
Run Workstation playbook on ubuntu:
stage: apt_systems
image: ubuntu:latest
image: ubuntu:focal
script:
- apt-get update
- apt-get install -y ansible python3-pip python3-apt
- pip3 install -r ci-requirements.txt
- mkdir /tmp/artifacts
- ./play_workstation.sh
- ./run_play.sh workstation
- mv /tmp/artifacts/workstation-*.xml report.xml
- ls /tmp/artifacts
artifacts:
when: always
reports:
junit: report.xml
Run cli-tools playbook on debian:
stage: apt_systems
image: debian:latest
script:
- apt-get update
- apt-get install -y ansible python3-pip python3-apt
- pip3 install -r ci-requirements.txt
- mkdir /tmp/artifacts
- ./run_play.sh cli-tools
- mv /tmp/artifacts/cli-tools-*.xml report.xml
- ls /tmp/artifacts
artifacts:
when: always
reports:
junit: report.xml

View file

@ -13,6 +13,7 @@ alias :Q=exit
alias ls='lsd'
alias f='printf "\033c"'
alias cat=bat
alias top=btm
alias t=tmux
@ -82,6 +83,60 @@ function ide() {
tmux rename-window ${IDE_NAME}
}
# Create a tmux layout with fast
# Usage: $ layout "<num_rows> [<num_rows>]+ [layout_name]"
# Examples: $ layout "2" Bob # Single column with 2 rows, named Bob
# $ layout "2 1" # Two columns, left column with 2 rows, right column with ine row
function layout() {
pre_check_tmux_for_layout "layout/grid" || return 1
CURRENT_DIR=$(echo "${PWD##*/}")
LAYOUT_NAME="[#⃣ Layout: ${2:=$CURRENT_DIR}]"
INPUT=${1-}
if [ -z $INPUT ]; then
echo "Error: Invalid layout. Usage: $ layout <layout>"
return 1
fi
COLS=($(echo $INPUT))
# echo "Number of Columns: ${#COLS[@]}"
# Create columns
H_RATIO=$((100 / ${#COLS[@]}))
cols=$((${#COLS[@]} - 1))
if [ $cols -le 0 ]; then
cols=1
else
for col in {1..$(($cols))}
do
H_SIZE=$((100 - (col * H_RATIO)))
tmux split-window -h -p $((H_SIZE))
done
fi
tmux select-pane -t 0
# Create Rows
for col in {1..$(($cols + 1))}
do
if [ $col != 1 ]; then
tmux select-pane -R #Move pane to the right
fi
ROWS=$((COLS[col]))
if [ $((ROWS)) -gt 1 ]; then
V_RATIO=$((100 / (ROWS)))
for row in {1..$((ROWS - 1))}
do
V_SIZE=$((100 - (row * V_RATIO)))
tmux split-window -v -p $((V_SIZE))
done
fi
done
tmux select-pane -t 0
tmux rename-window ${LAYOUT_NAME}
tmux send-keys "clear" C-m
}
# Create a tmux grid layout. default 2x2
# Usage: $ grid
# $ grid 3x3
@ -98,35 +153,15 @@ function grid() {
GRID_COLS="2"
GRID_ROWS="2"
fi
V_PANES=$((GRID_ROWS))
H_PANES=$((GRID_COLS))
V_RATIO=$((100 / V_PANES))
H_RATIO=$((100 / H_PANES))
echo "COLS: $GRID_COLS"
echo "ROWS: $GRID_ROWS"
for h in {1..$((H_PANES - 1))}
LAYOUT_SCHEME=""
for i in {1..$((GRID_COLS))}
do
H_SIZE=$((100 - (h * H_RATIO)))
tmux split-window -h -p $((H_SIZE))
echo " $h H_SIZE $H_SIZE"
done
for cell in {$((H_PANES - 1))..0}
do
tmux select-pane -t ${cell}
CURRENT_PANE=$(tmux list-panes | grep '(active)$' | grep -oP '^[\d]+')
echo Current pane: $CURRENT_PANE
for v in {1..$((V_PANES - 1))}
do
V_SIZE=$((100 - (v * V_RATIO)))
tmux split-window -v -p $((V_SIZE))
echo " $v V_SIZE $V_SIZE"
done
LAYOUT_SCHEME="${LAYOUT_SCHEME} ${GRID_ROWS}"
done
# Select top left cell (Starting point)
tmux select-pane -t 0
layout $LAYOUT_SCHEME $2 || return 1
return 0
}

View file

View file

@ -1,7 +0,0 @@
#!/bin/bash
# Install Dependencies
ansible-galaxy collection install community.general
# Run Playbook
ANSIBLE_CONFIG=$(pwd)/ansible.cfg JUNIT_OUTPUT_DIR=/tmp/artifacts ansible-playbook playbooks/workstation.yml || (mv /tmp/artifacts/workstation-*.xml report.xml && exit 1)

10
playbooks/cli-tools.yml Normal file
View file

@ -0,0 +1,10 @@
- hosts: localhost
vars:
# Theme options: monokai, gruvbox, nord, tomorrow-night
theme: tomorrow-night
# The running user
running_user: "{{ ansible_user_id }}"
roles:
- base
- tmux_user
- vim_user

View file

@ -10,5 +10,4 @@
- tmux_user
- vim_user
- alacritty_user
- lsd_user
- flatpaks

View file

@ -4,10 +4,10 @@
name:
- zsh
- curl
- bat
- gcc
- make
- wget
- git
- flatpak
- ranger
state: present
@ -53,6 +53,7 @@
dest: ~/.config/ranger/plugins/ranger_devicons
- name: Validate ranger config file
changed_when: false
file:
path: ~/.config/ranger/rc.conf
state: touch
@ -69,12 +70,14 @@
state: directory
- name: Sync Common shell settings...
changed_when: false
copy:
src: dotfiles/shellconfig/common.sh
dest: ~/.shellconfig/common.sh
force: yes
- name: verify Bat (better Cat) theme
changed_when: false
ansible.builtin.lineinfile:
path: "~/.shellconfig/common.sh"
regexp: "^export BAT_THEME="
@ -97,4 +100,11 @@
src: dotfiles/shellconfig/environment.sh
dest: ~/.shellconfig/environment.sh
force: no
- name: Install rust and common tooling
vars:
rustup_user: "{{ running_user }}"
rustup_cargo_crates: [bat,lsd,bottom]
ansible.builtin.include_role:
name: hurricanehrndz.rustup

View file

@ -1,4 +1,11 @@
---
- name: Installing packages
become: true
package:
name:
- flatpak
state: present
- name: Add the flathub flatpak repository remote
community.general.flatpak_remote:
name: flathub

26
run_play.sh Executable file
View file

@ -0,0 +1,26 @@
#!/bin/bash
TARGET_PLAY="${1:-workstation}"
PLAYBOOK="playbooks/${TARGET_PLAY}.yml"
if [ ! -f $PLAYBOOK ]; then
echo "Invalid play '${TARGET_PLAY}'. Unable to locate ${PLAYBOOK}"
exit 1
fi
function print_fail_and_exit() {
echo "❌ Something went wrong..."
cp /tmp/artifacts/${TARGET_PLAY}*.xml ./report.xml
exit 1
}
echo "======> Running ${TARGET_PLAY}"
# Install Dependencies
ansible-galaxy collection install community.general
ansible-galaxy install hurricanehrndz.rustup
# Run Playbook
ANSIBLE_CONFIG=$(pwd)/ansible.cfg JUNIT_OUTPUT_DIR="/tmp/artifacts" ansible-playbook ${PLAYBOOK} -vvvv || print_fail_and_exit
echo "======> Done."