Skip to content
Open

Lab17 #4266

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
5fb5e3a
feat: implement lab01 system information api service
PrizrakZamkov Jan 28, 2026
a99adb9
Merge pull request #1 from PrizrakZamkov/lab1
PrizrakZamkov Feb 4, 2026
1d66a7b
lab2
PrizrakZamkov Feb 5, 2026
c4bd661
Merge pull request #2 from PrizrakZamkov/lab2
PrizrakZamkov Feb 5, 2026
8fd773c
lab3
PrizrakZamkov Feb 12, 2026
6d9ce07
lab3
PrizrakZamkov Feb 12, 2026
7ea48b3
lab3
PrizrakZamkov Feb 12, 2026
f20ea0c
lab3 readme
PrizrakZamkov Feb 12, 2026
8920253
lab3 fix
PrizrakZamkov Feb 12, 2026
022ad4e
lab3 again again again
PrizrakZamkov Feb 12, 2026
113f0dd
lab3
PrizrakZamkov Feb 12, 2026
a33ccbd
lab3 fix, again
PrizrakZamkov Feb 12, 2026
7072280
lab3 rerun
PrizrakZamkov Feb 12, 2026
e44eb27
lab3 readme update
PrizrakZamkov Feb 12, 2026
51c361a
Merge pull request #3 from PrizrakZamkov/lab3
PrizrakZamkov Feb 12, 2026
2c28015
lab4
PrizrakZamkov Feb 19, 2026
1b61f41
Merge pull request #4 from PrizrakZamkov/lab4
PrizrakZamkov Feb 26, 2026
174ba3c
lab5
PrizrakZamkov Mar 5, 2026
52d80bf
Merge pull request #5 from PrizrakZamkov/lab5
PrizrakZamkov Mar 5, 2026
43d770c
lab6
PrizrakZamkov Mar 6, 2026
ef06f61
fix
PrizrakZamkov Mar 6, 2026
8e6cbe5
lab6
PrizrakZamkov Mar 6, 2026
3573a5f
Merge pull request #6 from PrizrakZamkov/lab6
PrizrakZamkov Mar 6, 2026
65a35fa
lab7
PrizrakZamkov Mar 12, 2026
0ecbdf5
Merge pull request #7 from PrizrakZamkov/lab7
PrizrakZamkov Mar 12, 2026
a619690
lab8
PrizrakZamkov Mar 19, 2026
e5ea81c
Merge pull request #8 from PrizrakZamkov/lab8
PrizrakZamkov Mar 19, 2026
2c51a56
lab9
PrizrakZamkov Mar 26, 2026
4abbee8
.
PrizrakZamkov Mar 26, 2026
edb4ccb
lab10
PrizrakZamkov Apr 2, 2026
832ff39
Merge pull request #9 from PrizrakZamkov/lab10
PrizrakZamkov Apr 2, 2026
38c0171
lab11
PrizrakZamkov Apr 9, 2026
85d3242
Merge pull request #10 from PrizrakZamkov/lab11
PrizrakZamkov Apr 9, 2026
c87bc0a
lab12
PrizrakZamkov Apr 23, 2026
d319a15
Merge pull request #11 from PrizrakZamkov/lab12
PrizrakZamkov Apr 23, 2026
16f1b73
lab12
PrizrakZamkov Apr 23, 2026
73ab9dd
Merge pull request #12 from PrizrakZamkov/lab12
PrizrakZamkov Apr 23, 2026
7759164
lab13
PrizrakZamkov May 10, 2026
e2109a8
Merge pull request #13 from PrizrakZamkov/lab13
PrizrakZamkov May 10, 2026
171c336
lab14
PrizrakZamkov May 10, 2026
80a94e3
Merge pull request #14 from PrizrakZamkov/lab14
PrizrakZamkov May 10, 2026
dfec341
lab15
PrizrakZamkov May 10, 2026
f7faf86
Merge pull request #15 from PrizrakZamkov/lab15
PrizrakZamkov May 10, 2026
ab18a93
lab16
PrizrakZamkov May 10, 2026
c25086d
Merge branch 'master' into lab16
PrizrakZamkov May 10, 2026
1d07d38
Merge pull request #16 from PrizrakZamkov/lab16
PrizrakZamkov May 10, 2026
aaca90f
lab17
PrizrakZamkov May 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions .github/workflows/ansible-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
name: Ansible Deploy

on:
push:
branches: [master, lab6]
paths:
- 'ansible/**'
- '.github/workflows/ansible-deploy.yml'
pull_request:
branches: [master]
paths:
- 'ansible/**'
workflow_dispatch:

jobs:
lint:
name: Ansible Lint
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install ansible-lint
run: |
pip install ansible-lint ansible-core

- name: Run ansible-lint
run: |
cd ansible
ansible-lint roles/ playbooks/
continue-on-error: true

deploy:
name: Deploy Application
needs: lint
runs-on: ubuntu-latest
if: github.event_name == 'push'

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install Ansible and dependencies
run: |
pip install ansible
ansible-galaxy collection install community.docker
ansible-galaxy collection install community.general

- name: Create vault password file
run: |
echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > /tmp/vault_pass

- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.VM_HOST }} >> ~/.ssh/known_hosts

- name: Test Ansible connectivity
run: |
cd ansible
ansible all -m ping --vault-password-file /tmp/vault_pass

- name: Deploy application
run: |
cd ansible
ansible-playbook playbooks/site.yml --vault-password-file /tmp/vault_pass

- name: Verify deployment
run: |
sleep 10
curl -f http://${{ secrets.VM_HOST }}:5000/health

- name: Cleanup
if: always()
run: |
rm -f /tmp/vault_pass
rm -f ~/.ssh/id_rsa
27 changes: 27 additions & 0 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Playwright Tests
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install dependencies
run: npm ci
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 30
111 changes: 111 additions & 0 deletions .github/workflows/python-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: Python CI/CD

on:
push:
branches: [ master, lab3 ]
paths:
- 'app_python/**'
- '.github/workflows/python-ci.yml'
pull_request:
branches: [ master ]
paths:
- 'app_python/**'

defaults:
run:
working-directory: app_python

jobs:
test:
name: Test & Lint
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
cache-dependency-path: 'app_python/requirements*.txt'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
if [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt; fi
pip install pylint

- name: Run linter
run: |
pylint app.py --disable=C0114,C0116,R0903,W0718 --max-line-length=120 || true
continue-on-error: true

- name: Run tests
run: |
pytest tests/ -v --tb=short

security-scan:
name: Security Scan
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/python-3.10@master
continue-on-error: true
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high --file=app_python/requirements.txt

build-and-push:
name: Build & Push Docker Image
needs: test
runs-on: ubuntu-latest
if: github.event_name == 'push'

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Generate version tag (CalVer)
id: version
run: |
VERSION=$(date +%Y.%m.%d)
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Generated version: $VERSION"
working-directory: .

- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ secrets.DOCKER_USERNAME }}/system-info-api
tags: |
type=raw,value=${{ steps.version.outputs.version }}
type=raw,value=latest

- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: ./app_python
file: ./app_python/Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
71 changes: 71 additions & 0 deletions .github/workflows/terraform-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Terraform CI

on:
push:
branches: [ master, lab04 ]
paths:
- 'terraform/**'
- '.github/workflows/terraform-ci.yml'
pull_request:
branches: [ master ]
paths:
- 'terraform/**'

defaults:
run:
working-directory: terraform

jobs:
terraform-validate:
name: Terraform Validation
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: 1.9.0

- name: Terraform Format Check
id: fmt
run: terraform fmt -check -recursive
continue-on-error: true

- name: Terraform Init
id: init
run: terraform init -backend=false

- name: Terraform Validate
id: validate
run: terraform validate -no-color

- name: Comment Format Check Result
if: steps.fmt.outcome == 'failure'
run: |
echo "❌ Terraform formatting check failed!"
echo "Run 'terraform fmt -recursive' to fix"
exit 1

tflint:
name: TFLint
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup TFLint
uses: terraform-linters/setup-tflint@v4
with:
tflint_version: latest

- name: Init TFLint
working-directory: terraform
run: tflint --init

- name: Run TFLint
working-directory: terraform
run: tflint --format compact --no-color
12 changes: 11 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,11 @@
test
test
terraform.tfvars
k8s/minikube-linux-amd64

# Playwright
node_modules/
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
/playwright/.auth/
Loading