Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
b52037f
Added Day 01 learning plan
May 16, 2026
af82b32
day 2 note added
May 19, 2026
18ee3aa
Update linux-architecture-notes.md
Asmasaiyed104 May 19, 2026
6989d55
added day 3 cheatsheet plus handson screenshots
May 19, 2026
8d14266
added Day -4 Practice
May 21, 2026
ef630fa
Added day 5 task
May 22, 2026
ae5b47d
added day-6 task
May 26, 2026
c09d469
added day -7 task
May 26, 2026
c92088e
added day 8 task
May 28, 2026
5234bb7
added day 9 task
May 28, 2026
cce5256
added day 10 task
Jun 1, 2026
ea18bb2
day 12 task added(revision )
Jun 2, 2026
e24c796
added day 13 task lvm
Jun 2, 2026
84c795b
added day 11 task
Jun 2, 2026
b98166a
Added day 14 Task
Jun 4, 2026
e07d1a6
added day 15 task
Jun 4, 2026
7efc93a
day 16 added
Jun 4, 2026
a5176c3
added day 17 task + notes
Jun 4, 2026
75e1ea2
added day 22 task
Asmasaiyed104 Jun 9, 2026
cfe4a59
Add login validation
Asmasaiyed104 Jun 9, 2026
268c4a8
Added signup feature
Asmasaiyed104 Jun 9, 2026
c56102c
Update main branch
Asmasaiyed104 Jun 9, 2026
330c346
Merge branch 'feature-signup' into DevOps-practice
Asmasaiyed104 Jun 9, 2026
2c1c7fe
Add main chnage before rebase
Asmasaiyed104 Jun 9, 2026
ec054fe
Add profile feature
Asmasaiyed104 Jun 9, 2026
e4a1a5c
Add hotfix two
Asmasaiyed104 Jun 9, 2026
1f09d70
added day 24 task
Asmasaiyed104 Jun 9, 2026
e998838
Added day 19 task lef
Asmasaiyed104 Jun 9, 2026
28afd3c
Added day 20 task remaining steps
Asmasaiyed104 Jun 9, 2026
0976f7c
added day 21 task remaining
Asmasaiyed104 Jun 9, 2026
edf6020
added day 23 remaining task
Asmasaiyed104 Jun 9, 2026
c08e292
Commit A
Asmasaiyed104 Jun 10, 2026
89c5cbc
Commit B
Asmasaiyed104 Jun 10, 2026
fbf9b04
Commit C third time
Asmasaiyed104 Jun 10, 2026
4197680
added day 23 task
Asmasaiyed104 Jun 12, 2026
a10b8ab
added day-24 task
Asmasaiyed104 Jun 12, 2026
6771282
added dat 25 task
Asmasaiyed104 Jun 12, 2026
00847a1
added day-26 task
Asmasaiyed104 Jun 12, 2026
fe667dd
added day 27 task
Asmasaiyed104 Jun 12, 2026
15ba1b0
added day 28 task
Asmasaiyed104 Jun 12, 2026
899ec91
added day-29 task
Asmasaiyed104 Jun 19, 2026
30b4ff6
added day-30 task
Asmasaiyed104 Jun 19, 2026
620b6b7
added day-31 task
Asmasaiyed104 Jun 19, 2026
0ab08cd
added day 32 task
Asmasaiyed104 Jun 19, 2026
e82c0a0
Added day-33 task
Asmasaiyed104 Jun 19, 2026
1e4a4e2
added day 34 task
Asmasaiyed104 Jun 22, 2026
a307f9a
added day 35 task
Asmasaiyed104 Jun 22, 2026
5884800
added day 36 task
Asmasaiyed104 Jun 22, 2026
5abd402
added image
Asmasaiyed104 Jun 22, 2026
8d1b50a
added day 37 task
Asmasaiyed104 Jun 22, 2026
909c727
added day 38 task
Asmasaiyed104 Jun 26, 2026
800a383
day 41 task yml file added
Asmasaiyed104 Jul 6, 2026
e1d86f1
added day 39
Asmasaiyed104 Jul 6, 2026
96e6bd7
added day 40 task
Asmasaiyed104 Jul 6, 2026
6bff5ef
added matrix version
Asmasaiyed104 Jul 6, 2026
a598ce0
Fix newline issue in manual.yml
Asmasaiyed104 Jul 6, 2026
253474e
Fix newline issue in PR check workflow
Asmasaiyed104 Jul 6, 2026
b1aeea0
added runners.yml
Asmasaiyed104 Jul 6, 2026
6ce5106
Merge remote changes
Asmasaiyed104 Jul 6, 2026
7596584
added installed tools
Asmasaiyed104 Jul 6, 2026
3039e7d
added self hosted runner
Asmasaiyed104 Jul 6, 2026
10d42fc
Fix formatting issue in self-hosted workflow
Asmasaiyed104 Jul 6, 2026
3632de2
fix self-hosted workflow
Asmasaiyed104 Jul 6, 2026
6c6fa53
Remove print steps from self-hosted workflow
Asmasaiyed104 Jul 6, 2026
a9de425
added self-hosted again
Asmasaiyed104 Jul 6, 2026
542e972
added runs on self-hosted and mylinux-runner
Asmasaiyed104 Jul 6, 2026
12a4c23
added day 42 task
Asmasaiyed104 Jul 6, 2026
6105317
added day 41 task
Asmasaiyed104 Jul 6, 2026
92adbe6
Day 43: multi-job workflow
Asmasaiyed104 Jul 7, 2026
1d3d333
added env-yml file
Asmasaiyed104 Jul 7, 2026
d471c1e
added job Output-yml file
Asmasaiyed104 Jul 7, 2026
ae75e7b
added job conditionals-yml file
Asmasaiyed104 Jul 7, 2026
fc36cd3
added job pipeline-yml file
Asmasaiyed104 Jul 7, 2026
df79ea2
Day 44: secrets demo
Asmasaiyed104 Jul 14, 2026
633f12d
fix | into secrete file
Asmasaiyed104 Jul 14, 2026
3824f06
added
Asmasaiyed104 Jul 14, 2026
9e94387
added files
Asmasaiyed104 Jul 14, 2026
a163d07
Enable Day 44 workflows on branch push
Asmasaiyed104 Jul 14, 2026
7380c01
Add add function with test assertion
Asmasaiyed104 Jul 14, 2026
550a624
added day 44 task
Asmasaiyed104 Jul 14, 2026
d4a98b3
Merge remote-tracking branch 'refs/remotes/origin/DevOps-practice' in…
Asmasaiyed104 Jul 14, 2026
5090538
Add Day 45 to Day 49 CI/CD workflows
Asmasaiyed104 Jul 14, 2026
467e0d0
Fix Python test import path
Asmasaiyed104 Jul 14, 2026
27368fd
added day 45 task
Asmasaiyed104 Jul 14, 2026
39a012e
added day 46 task
Asmasaiyed104 Jul 14, 2026
7dffcf1
added day 47 task
Asmasaiyed104 Jul 14, 2026
91c20ba
added day 48 task
Asmasaiyed104 Jul 14, 2026
6eed413
added day 49 task
Asmasaiyed104 Jul 14, 2026
8b6fcce
added day 50 task
Asmasaiyed104 Jul 24, 2026
2c2d11d
added day 51 task
Asmasaiyed104 Jul 24, 2026
a0c8c08
added day 53 deployment task
Asmasaiyed104 Jul 27, 2026
b9ee31f
added day 54 task
Asmasaiyed104 Jul 30, 2026
69ee034
added day 55 task
Asmasaiyed104 Jul 30, 2026
0d35c07
added day 57
Asmasaiyed104 Jul 31, 2026
b1e02cc
added day 56 tasks
Asmasaiyed104 Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 24 additions & 0 deletions .github/workflows/conditionals.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Conditionals Demo

on: push

jobs:
main-only-job:
runs-on: ubuntu-latest
if: github.event_name == 'push'
steps:
- name: Runs only on main branch
if: github.ref == 'refs/heads/DevOps-practice'
run: echo "This is the main working branch"

- name: A step that will fail on purpose
id: fail-step
run: exit 1
continue-on-error: true

- name: Runs only if previous step failed
if: steps.fail-step.outcome == 'failure'
run: echo "The previous step failed, so this one runs"

- name: This step continues even after failure
run: echo "Workflow keeps going because of continue-on-error"
38 changes: 38 additions & 0 deletions .github/workflows/day-44-artifact-between-jobs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Day 44 - Artifact Between Jobs

on:
push:
branches:
- DevOps-practice

workflow_dispatch:

jobs:
generate-file:
runs-on: ubuntu-latest

steps:
- name: Create artifact file
run: |
mkdir output
echo "This file came from Job 1" > output/message.txt

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: job-message
path: output/message.txt

use-file:
runs-on: ubuntu-latest
needs: generate-file

steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: job-message
path: downloaded

- name: Print artifact contents
run: cat downloaded/message.txt
25 changes: 25 additions & 0 deletions .github/workflows/day-44-artifacts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Day 44 - Upload Artifacts

on:
push:
branches:
- DevOps-practice

workflow_dispatch:

jobs:
upload-artifact-demo:
runs-on: ubuntu-latest

steps:
- name: Generate report file
run: |
mkdir reports
echo "Day 44 test report" > reports/test-report.txt
echo "Workflow completed successfully" >> reports/test-report.txt

- name: Upload report artifact
uses: actions/upload-artifact@v4
with:
name: day-44-test-report
path: reports/test-report.txt
24 changes: 24 additions & 0 deletions .github/workflows/day-44-real-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Day 44 - Real Tests

on:
push:
branches:
- DevOps-practice

workflow_dispatch:

jobs:
run-real-tests:
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.12"

- name: Run test script
run: python scripts/check_day_44.py
27 changes: 27 additions & 0 deletions .github/workflows/day-44-secrets.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Day 44 - Secrets

on:
push:
branches:
- DevOps-practice

workflow_dispatch:

jobs:
secrets-demo:
runs-on: ubuntu-latest

steps:
- name: Check if secret is set
run: |
if [ -n "$MY_SECRET_MESSAGE" ]; then
echo "The secret is set: true"
else
echo "The secret is set: false"
fi
env:
MY_SECRET_MESSAGE: ${{ secrets.MY_SECRET_MESSAGE }}

- name: Try printing secret directly
run: |
echo "Secret value is ${{ secrets.MY_SECRET_MESSAGE }}"
31 changes: 31 additions & 0 deletions .github/workflows/day-46-docker-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Day 46 - Docker Test

on:
push:
branches:
- main
- DevOps-practice
workflow_dispatch:

jobs:
docker-test:
runs-on: ubuntu-latest

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

- name: Build Docker image
run: docker build -t devops-cicd-lab:test .

- name: Run container
run: |
docker run -d -p 5000:5000 --name devops-lab devops-cicd-lab:test
sleep 5

- name: Test running container
run: curl -f http://localhost:5000

- name: Stop container
if: always()
run: docker stop devops-lab
29 changes: 29 additions & 0 deletions .github/workflows/day-47-python-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Day 47 - Python Tests

on:
push:
branches:
- main
- DevOps-practice
workflow_dispatch:

jobs:
python-tests:
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.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Run tests
run: PYTHONPATH=. pytest scripts/test_app.py
26 changes: 26 additions & 0 deletions .github/workflows/day-48-security-scan.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Day 48 - Docker Security Scan

on:
push:
branches:
- main
- DevOps-practice
workflow_dispatch:

jobs:
security-scan:
runs-on: ubuntu-latest

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

- name: Build Docker image
run: docker build -t devops-cicd-lab:scan .

- name: Scan Docker image with Trivy
uses: aquasecurity/trivy-action@master
with:
image-ref: devops-cicd-lab:scan
format: table
exit-code: 0
61 changes: 61 additions & 0 deletions .github/workflows/day-49-final-pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Day 49 - Final CI/CD Pipeline

on:
push:
branches:
- main
- DevOps-practice
workflow_dispatch:

env:
IMAGE_NAME: devops-cicd-lab

jobs:
test:
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.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Run Python tests
run: PYTHONPATH=. pytest scripts/test_app.py

docker:
runs-on: ubuntu-latest
needs: test

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

- name: Set short SHA
run: echo "SHORT_SHA=${GITHUB_SHA::7}" >> $GITHUB_ENV

- name: Build Docker image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest .
docker tag ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:sha-${{ env.SHORT_SHA }}

- name: Log in to Docker Hub
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/DevOps-practice'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}

- name: Push Docker image
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/DevOps-practice'
run: |
docker push ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest
docker push ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:sha-${{ env.SHORT_SHA }}
40 changes: 40 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Day 45 - Docker Publish

on:
push:
branches:
- main
- DevOps-practice
workflow_dispatch:

env:
IMAGE_NAME: devops-cicd-lab

jobs:
docker-build-push:
runs-on: ubuntu-latest

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

- name: Set short SHA
run: echo "SHORT_SHA=${GITHUB_SHA::7}" >> $GITHUB_ENV

- name: Log in to Docker Hub
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/DevOps-practice'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}

- name: Build Docker image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest .
docker tag ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:sha-${{ env.SHORT_SHA }}

- name: Push Docker image
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/DevOps-practice'
run: |
docker push ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:latest
docker push ${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:sha-${{ env.SHORT_SHA }}
25 changes: 25 additions & 0 deletions .github/workflows/env-vars.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Env Vars Demo

on: push

env:
APP_NAME: myapp

jobs:
show-envs:
runs-on: ubuntu-latest
env:
ENVIRONMENT: staging
steps:
- name: Print all variables
env:
VERSION: 1.0.0
run: |
echo "App name is $APP_NAME"
echo "Environment is $ENVIRONMENT"
echo "Version is $VERSION"

- name: Print GitHub context info
run: |
echo "Commit SHA is ${{ github.sha }}"
echo "Actor is ${{ github.actor }}"
20 changes: 20 additions & 0 deletions .github/workflows/job-outputs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Job Outputs Demo

on: push

jobs:
set-date:
runs-on: ubuntu-latest
outputs:
today: ${{ steps.get-date.outputs.date }}
steps:
- name: Get current date
id: get-date
run: echo "date=$(date)" >> $GITHUB_OUTPUT

read-date:
runs-on: ubuntu-latest
needs: set-date
steps:
- name: Print the date from the other job
run: echo "The date from set-date job is ${{ needs.set-date.outputs.today }}"
17 changes: 17 additions & 0 deletions .github/workflows/manual.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Manual Trigger

on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy to'
required: true
default: 'staging'

jobs:
print-env:
runs-on: ubuntu-latest
steps:
- name: Print input
run: echo "Deploying to environment: ${{ github.event.inputs.environment }}"

Loading