Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
d9ea462
docs: add commit signing summary
zv3zdochka Feb 3, 2026
10e8ae5
complete task 1
zv3zdochka Feb 3, 2026
49c941b
chore: add PR template
zv3zdochka Feb 3, 2026
a08b92f
docs: add task 2 report
zv3zdochka Feb 3, 2026
657b71a
finish 2 task with screenshot
zv3zdochka Feb 3, 2026
82f0ab9
Merge pull request #1 from zv3zdochka/feature/lab1
zv3zdochka Feb 3, 2026
95510e1
prepare lab 2
zv3zdochka Feb 7, 2026
31c58a9
Add test file
zv3zdochka Feb 7, 2026
fff44e8
rename 1 lab screenshots
zv3zdochka Feb 7, 2026
a0a4e17
finish 1 task
zv3zdochka Feb 7, 2026
5c85ae7
finish 1 task
zv3zdochka Feb 7, 2026
5f97d04
finish 2 task
zv3zdochka Feb 7, 2026
54c12fc
finish task 3
zv3zdochka Feb 7, 2026
de664a0
chore: prepare v1.1.0
zv3zdochka Feb 7, 2026
1d04032
finish 5 task
zv3zdochka Feb 7, 2026
28f307f
chore: add demo file for restore
zv3zdochka Feb 7, 2026
52c44f5
chore: update demo file
zv3zdochka Feb 7, 2026
8b47826
finish task 5
zv3zdochka Feb 7, 2026
c15d4be
finish 6 task
zv3zdochka Feb 7, 2026
15ff086
docs: add lab2 submission
zv3zdochka Feb 7, 2026
aa10d01
Merge pull request #2 from zv3zdochka/feature/lab2
zv3zdochka Feb 7, 2026
b0d3d6d
Merge branch 'inno-devops-labs:main' into main
zv3zdochka Feb 13, 2026
b4925ba
ci: add lab3 workflow for task1
zv3zdochka Feb 16, 2026
545b149
fix: repair run step syntax
zv3zdochka Feb 16, 2026
d521f93
upd paths & add 3 lab photos
zv3zdochka Feb 16, 2026
266b0e7
finish task 1
zv3zdochka Feb 16, 2026
9d66b5b
ci: add workflow_dispatch and system info
zv3zdochka Feb 16, 2026
6c36ba6
ci: add lab3 workflow to main for manual runs
zv3zdochka Feb 16, 2026
e8580f2
finish lab
zv3zdochka Feb 16, 2026
3d9e1ae
Merge pull request #3 from zv3zdochka/feature/lab3
zv3zdochka Feb 16, 2026
d549901
prepare for lab 4
zv3zdochka Feb 22, 2026
5250e15
finish task 1
zv3zdochka Feb 22, 2026
f88254c
finish lab
zv3zdochka Feb 22, 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
10 changes: 10 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## Goal
<!-- Briefly describe the purpose of this PR -->

## Changes
<!-- List the key changes made -->

## Testing
- [ ] Code compiles/runs without errors
- [ ] Signed commits verified
- [ ] Documentation updated
58 changes: 58 additions & 0 deletions .github/workflows/lab3.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Lab3 CI

on:
push:
workflow_dispatch:

jobs:
info:
name: Basic info
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4

- name: Print workflow context
run: |
echo "Event: ${{ github.event_name }}"
echo "Branch ref: ${{ github.ref }}"
echo "Commit SHA: ${{ github.sha }}"
echo "Repository: ${{ github.repository }}"
echo "Actor: ${{ github.actor }}"

- name: Print OS basics
run: |
uname -a
git --version

- name: Gather system information
run: |
echo "===== OS / Kernel ====="
uname -a
cat /etc/os-release || true

echo "===== CPU ====="
nproc
lscpu || true

echo "===== Memory ====="
free -h || true

echo "===== Disk ====="
df -h || true

echo "===== Network ====="
ip -br a || true

echo "===== Tooling ====="
git --version
python --version || true

second-job:
name: Dependent job
runs-on: ubuntu-latest
needs: info
steps:
- name: Confirm dependency
run: |
echo "Second job after first (needs: info)"
164 changes: 164 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
### Python template
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
.pdm.toml
.pdm-python
.pdm-build/

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/

Binary file added demo.txt
Binary file not shown.
Binary file added labs/screenshots/lab_1/lab_1_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_1/lab_1_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_1/lab_1_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_1/lab_1_4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_1/lab_1_5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_10.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_11.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_12.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_13.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_14.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_15.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_8.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_2/lab_2_9.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_3/lab_3_0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_3/lab_3_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_3/lab_3_10.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_3/lab_3_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added labs/screenshots/lab_3/lab_3_3.png
Binary file added labs/screenshots/lab_3/lab_3_4.png
Binary file added labs/screenshots/lab_3/lab_3_5.png
Binary file added labs/screenshots/lab_3/lab_3_6.png
Binary file added labs/screenshots/lab_3/lab_3_7.png
Binary file added labs/screenshots/lab_3/lab_3_8.png
Binary file added labs/screenshots/lab_3/lab_3_9.png
Binary file added labs/screenshots/lab_4/lab_4_1.png
62 changes: 62 additions & 0 deletions labs/submission1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Lab 1

## Task 1: SSH Commit Signature Verification

* A short summary explaining the benefits of signing commits.

Signing your Git commits proves you are the actual author. It attaches a digital signature, generated by your private
key, to the commit itself. This serves several important purposes.

First, it provides verification. It confirms that the commit truly came from you and not someone else using your name
and email address. On platforms like GitHub or GitLab, this is shown with a "Verified" badge next to the commit, making
trusted contributions easy to spot.

Second, it ensures integrity. The signature also confirms that the commit—its code, message, author, and date—has not
been tampered with after you created it. If any part is altered, the verification will fail.

This practice is a cornerstone of software supply chain security, particularly for open-source projects and teams. It
prevents malicious actors from injecting code while pretending to be a trusted contributor. For organizations, it can be
a requirement for security compliance and audit trails, as it creates a non-repudiable record of who changed what and
when.

In short, signing commits is a straightforward technical step that establishes a chain of trust for your code's history.
It moves the project from "this commit claims to be from person X" to "this commit is verified to be from person X."

* Evidence of successful SSH key setup and signed commit.

![SSH Key Setup](screenshots/lab_1/lab_1_2.png)
![Signed Commit](screenshots/lab_1/lab_1_3.png)
*
* Answer: "Why is commit signing important in DevOps workflows?"

In DevOps workflows, automation plays a huge role. CI/CD pipelines automatically build and deploy code.
If a hacker impersonates a developer and pushes malicious code, the pipeline might deploy it to production.
Commit signing prevents this: pipelines can be configured to reject any commits that are not signed by a trusted key.
This protects the software supply chain.

* Screenshots or verification of the "Verified" badge on GitHub.

![Verified Badge](screenshots/lab_1/lab_1_1.png)


## Task 2: PR Template & Checklist

* Screenshot of PR template auto-filling the description.

![PR Template Logic](screenshots/lab_1/lab_1_5.png)

* Evidence that .github/pull_request_template.md exists on main branch.

The file exists at `.github/pull_request_template.md` in the repository root.
![File in .github folder](screenshots/lab_1/lab_1_4.png)

* Analysis of how PR templates improve collaboration.

PR templates standardize the code review process.
1. **Clarity:** They ensure every PR has a clear goal and description of changes, so reviewers don't have to guess.
2. **Consistency:** All developers follow the same format.
3. **Quality Assurance:** The checklist reminds the author to perform essential checks (like testing or documentation) before requesting a review, reducing back-and-forth communication.

* Note any challenges encountered during setup.

The main challenge was the order of operations: the template file must be pushed to the `main` branch *before* creating the Pull Request, otherwise GitHub does not load it automatically.
Loading