189 lines
6.0 KiB
YAML
189 lines
6.0 KiB
YAML
name: CI Pipeline
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, master ]
|
|
pull_request:
|
|
branches: [ main, master ]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
shasums:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Run shasums script
|
|
run: |
|
|
cp -rv ./hyperterm/ "$HOME/.hyperterm/"
|
|
cp -v .bash* "$HOME"
|
|
cp -v ./hyperterm/_custom.sh "$HOME"
|
|
rm -rfv hyperterm/
|
|
(cd "$HOME/.hyperterm/" && sha512sum -c hyperterm.sha512)
|
|
(cd "$HOME" && bash -x .bashrc)
|
|
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
needs: shasums
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up locales
|
|
run: |
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y locales less
|
|
sudo sed -i 's/# \(es_ES.UTF-8 UTF-8\)/\1/' /etc/locale.gen
|
|
sudo sed -i 's/# \(en_US.UTF-8 UTF-8\)/\1/' /etc/locale.gen
|
|
sudo locale-gen es_ES.UTF-8
|
|
export LANG=es_ES.UTF-8 LANGUAGE=es_ES
|
|
|
|
- name: Install dependencies for shellcheck
|
|
run: sudo apt-get install -y xz-utils shellcheck
|
|
|
|
- name: Run shellcheck on bash profile
|
|
run: |
|
|
shellcheck .bash_profile
|
|
shellcheck ./hyperterm/hyperterm.sh
|
|
shellcheck ./hyperterm/_custom.sh
|
|
|
|
- name: Run shellcheck on build script
|
|
run: shellcheck build.sh
|
|
|
|
- name: Run build script
|
|
run: bash -x build.sh
|
|
|
|
- name: Run shellcheck on core scripts
|
|
run: |
|
|
shellcheck hyperterm/core/autocomplete.sh
|
|
shellcheck hyperterm/core/colors.sh
|
|
shellcheck hyperterm/core/git.sh
|
|
shellcheck hyperterm/core/languages.sh
|
|
shellcheck hyperterm/core/status.sh
|
|
shellcheck hyperterm/core/update.sh
|
|
|
|
- name: Run shellcheck on theme scripts
|
|
run: |
|
|
shellcheck hyperterm/themes/default.sh
|
|
shellcheck hyperterm/themes/joy.sh
|
|
shellcheck hyperterm/themes/light_theme.sh
|
|
shellcheck hyperterm/themes/minterm.sh
|
|
shellcheck hyperterm/themes/pure.sh
|
|
shellcheck hyperterm/themes/simple.sh
|
|
shellcheck hyperterm/themes/special.sh
|
|
|
|
- name: Run shellcheck on tools scripts
|
|
run: |
|
|
shellcheck hyperterm/tools/aliases.sh
|
|
shellcheck hyperterm/tools/compress.sh
|
|
shellcheck hyperterm/tools/export.sh
|
|
shellcheck hyperterm/tools/listuser.sh
|
|
shellcheck hyperterm/tools/network.sh
|
|
shellcheck hyperterm/tools/proxy.sh
|
|
shellcheck hyperterm/tools/rar2zip.sh
|
|
shellcheck hyperterm/tools/ruby.sh
|
|
shellcheck hyperterm/tools/ssh-agent.sh
|
|
shellcheck hyperterm/tools/sysinfo.sh
|
|
shellcheck hyperterm/tools/virtualenv.sh
|
|
|
|
- name: Run shellcheck on test scripts
|
|
run: |
|
|
shellcheck tests/test_prompt.sh
|
|
shellcheck tests/quick_test.sh
|
|
|
|
- name: Run shellcheck on install script
|
|
run: shellcheck install.sh
|
|
|
|
- name: Run install script
|
|
run: bash -x install.sh -s
|
|
|
|
- name: Run shellcheck on uninstall script
|
|
run: shellcheck uninstall.sh
|
|
|
|
- name: Run uninstall script
|
|
run: bash -x uninstall.sh -s
|
|
|
|
tests:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
env:
|
|
CI: true
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up git configuration for tests
|
|
run: |
|
|
git config --global user.name "CI Test User"
|
|
git config --global user.email "ci-test@example.com"
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y git bash
|
|
|
|
- name: Run quick prompt test
|
|
run: |
|
|
echo "INFO: Running quick prompt test"
|
|
bash tests/quick_test.sh
|
|
|
|
- name: Run comprehensive prompt test
|
|
run: |
|
|
echo "INFO: Running comprehensive prompt test"
|
|
# Run in non-interactive mode for CI
|
|
bash tests/test_prompt.sh --non-interactive
|
|
|
|
- name: Test prompt in current repository
|
|
run: |
|
|
echo "INFO: Testing prompt in current git repository"
|
|
# Create test changes to verify git status detection
|
|
echo "test change for CI" >> README.md
|
|
echo "untracked CI test file" > ci_test_file.txt
|
|
|
|
# Test using our quick test (which already handles sourcing correctly)
|
|
echo "Running quick test to verify prompt works in CI environment..."
|
|
bash tests/quick_test.sh
|
|
|
|
- name: Validate optimizations
|
|
run: |
|
|
echo "INFO: Validating optimizations"
|
|
|
|
# Check that git_optimized.sh doesn't exist (should be integrated into git.sh)
|
|
if [[ -f "hyperterm/core/git_optimized.sh" ]]; then
|
|
echo "ERROR: git_optimized.sh should not exist (should be integrated)"
|
|
exit 1
|
|
fi
|
|
|
|
# Check that git.sh exists and is optimized
|
|
if [[ ! -f "hyperterm/core/git.sh" ]]; then
|
|
echo "ERROR: git.sh not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Verify the optimized functions exist using bash
|
|
if ! bash -c 'source hyperterm/core/git.sh && command -v _get_git_status_fast >/dev/null 2>&1'; then
|
|
echo "ERROR: Optimized function _get_git_status_fast not found"
|
|
exit 1
|
|
fi
|
|
|
|
echo "SUCCESS: Optimizations validated"
|
|
|
|
performance:
|
|
runs-on: ubuntu-latest
|
|
needs: tests
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up git configuration
|
|
run: |
|
|
git config --global user.name "Performance Test"
|
|
git config --global user.email "perf-test@example.com"
|
|
|
|
- name: Performance benchmark
|
|
run: |
|
|
echo "INFO: Running performance benchmark using existing test suite"
|
|
|
|
# The comprehensive test already includes performance testing
|
|
# Run it again to get performance metrics in CI logs
|
|
bash tests/test_prompt.sh --non-interactive
|
|
|
|
echo "INFO: Performance benchmark completed"
|
|
echo "NOTE: Detailed performance metrics are included in the comprehensive test output above"
|