From a7348245f072a0254f32bd99b2d87de986a84d85 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Oct 2025 01:38:09 +0000 Subject: [PATCH 1/8] Initial plan From f64ac0965e6ca93b844beb7d7be44c0c8c8f36ad Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Oct 2025 01:42:30 +0000 Subject: [PATCH 2/8] Add CI workflow plan Co-authored-by: MtkN1 <51289448+MtkN1@users.noreply.github.com> --- .../source.d/__pycache__/python.cpython-312.pyc | Bin 0 -> 9771 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/installer/source.d/__pycache__/python.cpython-312.pyc diff --git a/src/installer/source.d/__pycache__/python.cpython-312.pyc b/src/installer/source.d/__pycache__/python.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2993dfaa69743c5c3aed1b415b41ced3ce24aa3c GIT binary patch literal 9771 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 literal 0 HcmV?d00001 From ea64c71d06ecf2902430341fe557c4575402c3cf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Oct 2025 01:43:49 +0000 Subject: [PATCH 3/8] Add GitHub Actions CI workflow Co-authored-by: MtkN1 <51289448+MtkN1@users.noreply.github.com> --- .github/workflows/ci.yml | 42 ++++++++++++++++++ .gitignore | 33 ++++++++++++++ .../__pycache__/python.cpython-312.pyc | Bin 9771 -> 0 bytes 3 files changed, 75 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore delete mode 100644 src/installer/source.d/__pycache__/python.cpython-312.pyc diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..323b6b5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,42 @@ +name: CI + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +jobs: + lint: + name: Lint Scripts + runs-on: ubuntu-24.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install ShellCheck + run: | + sudo apt-get update + sudo apt-get install -y shellcheck + + - name: Run ShellCheck on shell scripts + run: | + echo "Running ShellCheck on all .sh files..." + find src -name "*.sh" -type f -print0 | xargs -0 shellcheck + + - name: Check Python syntax + run: | + echo "Checking Python syntax..." + find src -name "*.py" -type f -exec python3 -m py_compile {} \; + + - name: Verify script permissions + run: | + echo "Verifying all scripts are executable..." + for script in $(find src -name "*.sh" -o -name "*.py"); do + if [ ! -x "$script" ]; then + echo "Error: $script is not executable" + exit 1 + fi + done + echo "All scripts have executable permissions" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..21b1a34 --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python + +# Byte-compiled / optimized / DLL files +*.pyc + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Temporary files +*.swp +*.swo +*~ +.DS_Store diff --git a/src/installer/source.d/__pycache__/python.cpython-312.pyc b/src/installer/source.d/__pycache__/python.cpython-312.pyc deleted file mode 100644 index 2993dfaa69743c5c3aed1b415b41ced3ce24aa3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9771 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 From 5465116bc3db45beaf73d8b665086219d9bee232 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Oct 2025 01:45:58 +0000 Subject: [PATCH 4/8] Add explicit permissions to CI workflow for security Co-authored-by: MtkN1 <51289448+MtkN1@users.noreply.github.com> --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 323b6b5..a336181 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,6 +6,9 @@ on: pull_request: branches: [ main, master ] +permissions: + contents: read + jobs: lint: name: Lint Scripts From da63a4194a4572a1af553dbbbc1e2e8127cbbeb3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Oct 2025 02:13:44 +0000 Subject: [PATCH 5/8] Rework CI to use smoke tests, remove master branch, remove .gitignore Co-authored-by: MtkN1 <51289448+MtkN1@users.noreply.github.com> --- .github/workflows/ci.yml | 42 ++++++++++++++++------------------------ .gitignore | 33 ------------------------------- 2 files changed, 17 insertions(+), 58 deletions(-) delete mode 100644 .gitignore diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a336181..c3bdd8b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,44 +2,36 @@ name: CI on: push: - branches: [ main, master ] + branches: [ main ] pull_request: - branches: [ main, master ] + branches: [ main ] permissions: contents: read jobs: - lint: - name: Lint Scripts + smoke-test: + name: Smoke Tests runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4 - - name: Install ShellCheck + - name: Test shell script syntax run: | - sudo apt-get update - sudo apt-get install -y shellcheck - - - name: Run ShellCheck on shell scripts - run: | - echo "Running ShellCheck on all .sh files..." - find src -name "*.sh" -type f -print0 | xargs -0 shellcheck - - - name: Check Python syntax - run: | - echo "Checking Python syntax..." - find src -name "*.py" -type f -exec python3 -m py_compile {} \; + echo "Testing shell script syntax..." + for script in $(find src -name "*.sh" -type f); do + echo "Checking $script" + bash -n "$script" + done + echo "All shell scripts have valid syntax" - - name: Verify script permissions + - name: Test Python script syntax run: | - echo "Verifying all scripts are executable..." - for script in $(find src -name "*.sh" -o -name "*.py"); do - if [ ! -x "$script" ]; then - echo "Error: $script is not executable" - exit 1 - fi + echo "Testing Python script syntax..." + for script in $(find src -name "*.py" -type f); do + echo "Checking $script" + python3 -m py_compile "$script" done - echo "All scripts have executable permissions" + echo "All Python scripts have valid syntax" diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 21b1a34..0000000 --- a/.gitignore +++ /dev/null @@ -1,33 +0,0 @@ -# Python -__pycache__/ -*.py[cod] -*$py.class -*.so -.Python - -# Byte-compiled / optimized / DLL files -*.pyc - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -*.egg-info/ -.installed.cfg -*.egg - -# Temporary files -*.swp -*.swo -*~ -.DS_Store From 82abd3a3dc3ee56ddd9f336c1a0ba9009b83bda5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Oct 2025 02:26:34 +0000 Subject: [PATCH 6/8] Update smoke tests to run installer scripts and upgrade checkout to v5 Co-authored-by: MtkN1 <51289448+MtkN1@users.noreply.github.com> --- .github/workflows/ci.yml | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c3bdd8b..69cd194 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,22 +16,13 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - - name: Test shell script syntax - run: | - echo "Testing shell script syntax..." - for script in $(find src -name "*.sh" -type f); do - echo "Checking $script" - bash -n "$script" - done - echo "All shell scripts have valid syntax" + - name: Run software installer + run: ./src/installer/install.sh - - name: Test Python script syntax - run: | - echo "Testing Python script syntax..." - for script in $(find src -name "*.py" -type f); do - echo "Checking $script" - python3 -m py_compile "$script" - done - echo "All Python scripts have valid syntax" + - name: Run software upgrade + run: ./src/installer/upgrade.sh + + - name: Run dotfiles installer + run: ./src/dotfiles/install.sh From e7669ce0f606c81952829bcc9311d6d3891e1bd5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:16:43 +0000 Subject: [PATCH 7/8] Run installers in Docker container with Docker-in-Docker support Co-authored-by: MtkN1 <51289448+MtkN1@users.noreply.github.com> --- .github/workflows/ci.yml | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 69cd194..bf4bee4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,11 +18,38 @@ jobs: - name: Checkout code uses: actions/checkout@v5 - - name: Run software installer - run: ./src/installer/install.sh + - name: Run software installer in Docker + run: | + docker run --rm -v $PWD:/workspace -w /workspace \ + -v /var/run/docker.sock:/var/run/docker.sock \ + --group-add $(stat -c '%g' /var/run/docker.sock) \ + ubuntu:24.04 \ + bash -c "apt-get update && apt-get install -y sudo docker.io && \ + useradd -m -s /bin/bash testuser && \ + usermod -aG sudo testuser && \ + usermod -aG docker testuser && \ + echo 'testuser ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ + chown -R testuser:testuser /workspace && \ + su - testuser -c 'cd /workspace && ./src/installer/install.sh'" - - name: Run software upgrade - run: ./src/installer/upgrade.sh + - name: Run software upgrade in Docker + run: | + docker run --rm -v $PWD:/workspace -w /workspace \ + -v /var/run/docker.sock:/var/run/docker.sock \ + --group-add $(stat -c '%g' /var/run/docker.sock) \ + ubuntu:24.04 \ + bash -c "apt-get update && apt-get install -y sudo docker.io && \ + useradd -m -s /bin/bash testuser && \ + usermod -aG sudo testuser && \ + usermod -aG docker testuser && \ + echo 'testuser ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ + chown -R testuser:testuser /workspace && \ + su - testuser -c 'cd /workspace && ./src/installer/upgrade.sh'" - - name: Run dotfiles installer - run: ./src/dotfiles/install.sh + - name: Run dotfiles installer in Docker + run: | + docker run --rm -v $PWD:/workspace -w /workspace \ + ubuntu:24.04 \ + bash -c "useradd -m -s /bin/bash testuser && \ + chown -R testuser:testuser /workspace && \ + su - testuser -c 'cd /workspace && ./src/dotfiles/install.sh'" From 78b073e6f3dc87d7ec13a82b89351783b1f6b497 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 22 Oct 2025 09:02:15 +0000 Subject: [PATCH 8/8] Add --privileged flag to fix Docker permission issues Co-authored-by: MtkN1 <51289448+MtkN1@users.noreply.github.com> --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf4bee4..e0fa534 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,9 +20,9 @@ jobs: - name: Run software installer in Docker run: | - docker run --rm -v $PWD:/workspace -w /workspace \ + docker run --rm --privileged \ + -v $PWD:/workspace -w /workspace \ -v /var/run/docker.sock:/var/run/docker.sock \ - --group-add $(stat -c '%g' /var/run/docker.sock) \ ubuntu:24.04 \ bash -c "apt-get update && apt-get install -y sudo docker.io && \ useradd -m -s /bin/bash testuser && \ @@ -34,9 +34,9 @@ jobs: - name: Run software upgrade in Docker run: | - docker run --rm -v $PWD:/workspace -w /workspace \ + docker run --rm --privileged \ + -v $PWD:/workspace -w /workspace \ -v /var/run/docker.sock:/var/run/docker.sock \ - --group-add $(stat -c '%g' /var/run/docker.sock) \ ubuntu:24.04 \ bash -c "apt-get update && apt-get install -y sudo docker.io && \ useradd -m -s /bin/bash testuser && \