From 8b9fa85d37e8616b8383453bdfc103c803478f72 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:38:38 +0530 Subject: [PATCH 01/16] Decsecops pipeline created with Secret Scanning --- .github/workflows/devsecops-pipeline.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/devsecops-pipeline.yml diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml new file mode 100644 index 0000000..465df1a --- /dev/null +++ b/.github/workflows/devsecops-pipeline.yml @@ -0,0 +1,15 @@ +name: devsecops-pipeline +on: push +jobs: + devsecops-pipeline: + runs-on: ubuntu-latest + steps: + - name: Code Checkout + uses: actions/checkout@7 + with: + fetch-depth: 0 + + - name: Secret Scanning + uses: gitleaks/gitleaks-action@v3 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From de52b1b5fcdd9354607faa1d8e1d328631e94aa5 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:39:49 +0530 Subject: [PATCH 02/16] Update checkout action version to v7 --- .github/workflows/devsecops-pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml index 465df1a..cc93046 100644 --- a/.github/workflows/devsecops-pipeline.yml +++ b/.github/workflows/devsecops-pipeline.yml @@ -5,7 +5,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Code Checkout - uses: actions/checkout@7 + uses: actions/checkout@v7 with: fetch-depth: 0 From ec737d109a4bb18c1bc03ff859131b991e1b1fc0 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:45:42 +0530 Subject: [PATCH 03/16] Update README to reflect DevSecOps context --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7456b86..b66c569 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# A Simple Hello World Python Demo +# A Simple Hello World Python Demo - DevSecOps Example used to demonstrate ```docker init``` CLI for a simple Hello World Python Program From 246e1c6768d1ab12a7ebedc7ddcbc2bd4094df3f Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:24:42 +0530 Subject: [PATCH 04/16] Update pipeline trigger to only main branch --- .github/workflows/devsecops-pipeline.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml index cc93046..9e46c05 100644 --- a/.github/workflows/devsecops-pipeline.yml +++ b/.github/workflows/devsecops-pipeline.yml @@ -1,5 +1,8 @@ name: devsecops-pipeline -on: push +on: + push: + branches: + - 'main' jobs: devsecops-pipeline: runs-on: ubuntu-latest From 158e284b57d0e398ce7ef2e4959a3d0075326813 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:27:53 +0530 Subject: [PATCH 05/16] Add paths-ignore for README.md in pipeline Ignore README.md files in the devsecops pipeline. --- .github/workflows/devsecops-pipeline.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml index 9e46c05..62e4616 100644 --- a/.github/workflows/devsecops-pipeline.yml +++ b/.github/workflows/devsecops-pipeline.yml @@ -3,6 +3,8 @@ on: push: branches: - 'main' + paths-ignore: + - '**.README.md' jobs: devsecops-pipeline: runs-on: ubuntu-latest From 19fd0d058caf04579307539038e0f735eb332f43 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:28:37 +0530 Subject: [PATCH 06/16] Update README with new date for demo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b66c569..84ac2ff 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# A Simple Hello World Python Demo - DevSecOps +# A Simple Hello World Python Demo - DevSecOps - 05/08/2026 Example used to demonstrate ```docker init``` CLI for a simple Hello World Python Program From 65fc05763ae8b0d7dc6c2d7f7fddc3e67f6d6e3b Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:30:22 +0530 Subject: [PATCH 07/16] Update paths-ignore pattern for README files --- .github/workflows/devsecops-pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml index 62e4616..8c1207b 100644 --- a/.github/workflows/devsecops-pipeline.yml +++ b/.github/workflows/devsecops-pipeline.yml @@ -4,7 +4,7 @@ on: branches: - 'main' paths-ignore: - - '**.README.md' + - '**.*.md' jobs: devsecops-pipeline: runs-on: ubuntu-latest From 432aeb628398bc7bd57e165b3b0c015abfd80d98 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:30:50 +0530 Subject: [PATCH 08/16] Update date format in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 84ac2ff..9a7e41a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# A Simple Hello World Python Demo - DevSecOps - 05/08/2026 +# A Simple Hello World Python Demo - DevSecOps - 05-08-2026 Example used to demonstrate ```docker init``` CLI for a simple Hello World Python Program From 6ff43c2afcdd9931b040e5c6214166dd2f844e18 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:32:40 +0530 Subject: [PATCH 09/16] Update paths to ignore in devsecops-pipeline.yml --- .github/workflows/devsecops-pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml index 8c1207b..21af9d3 100644 --- a/.github/workflows/devsecops-pipeline.yml +++ b/.github/workflows/devsecops-pipeline.yml @@ -4,7 +4,7 @@ on: branches: - 'main' paths-ignore: - - '**.*.md' + - '**/README.md' jobs: devsecops-pipeline: runs-on: ubuntu-latest From 12332a995c851c48e18dbe9581fb7639a7023d2c Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:33:03 +0530 Subject: [PATCH 10/16] Modify README title to add 'Hello' Updated the title in the README to include 'Hello'. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a7e41a..f19900b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# A Simple Hello World Python Demo - DevSecOps - 05-08-2026 +# A Simple Hello World Python Demo - DevSecOps - 05-08-2026 Hello Example used to demonstrate ```docker init``` CLI for a simple Hello World Python Program From 6bd92d91616899b20a02c1674270ff431004d316 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 10:27:14 +0530 Subject: [PATCH 11/16] Add SonarQube scan to DevSecOps pipeline --- .github/workflows/devsecops-pipeline.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml index 21af9d3..168b036 100644 --- a/.github/workflows/devsecops-pipeline.yml +++ b/.github/workflows/devsecops-pipeline.yml @@ -18,3 +18,8 @@ jobs: uses: gitleaks/gitleaks-action@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: SonarQube Scan + uses: SonarSource/sonarqube-scan-action@v8.2.1 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From 05951db917ca4909df012e51f6eed233df9bd2aa Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 10:29:01 +0530 Subject: [PATCH 12/16] Create sonar-project.properties for SonarQube setup Add SonarQube project configuration properties --- sonar-project.properties | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sonar-project.properties diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..bd1cafd --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,6 @@ +sonar.organization=annaanjali2 +sonar.projectKey=annaanjali2_helloworld-demo-python + +# relative paths to source directories. More details and properties are described +# at https://docs.sonarsource.com/sonarqube-cloud/advanced-setup/analysis-scope/ +sonar.sources=. From 8b9e6bd463a3f433c0b1e609091286c509f2766d Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Wed, 5 Aug 2026 11:26:11 +0530 Subject: [PATCH 13/16] Add Snyk action for vulnerability scanning --- .github/workflows/devsecops-pipeline.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml index 168b036..67a85e4 100644 --- a/.github/workflows/devsecops-pipeline.yml +++ b/.github/workflows/devsecops-pipeline.yml @@ -23,3 +23,8 @@ jobs: uses: SonarSource/sonarqube-scan-action@v8.2.1 env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + - name: Run Snyk to check for vulnerabilities + uses: snyk/actions/python@master + env: + SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} From 66c57ab65f4638edffbafd170add3b333401fb77 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Thu, 6 Aug 2026 12:44:05 +0530 Subject: [PATCH 14/16] Add Dockerfile for DevSecOps Demo application --- Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..aaf5415 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.14.7-alpine3.24 +MAINTAINER Annamalai +LABEL description="DevSecOps Demo" +RUN mkdir /app +COPY . /app +WORKDIR /app +EXPOSE 8080 +CMD ["python3", "app.py"] From 3e4b37f3c9d1eab929e18591252f95b842ee0b1e Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Thu, 6 Aug 2026 12:44:29 +0530 Subject: [PATCH 15/16] Add Docker pipeline steps to workflow --- .github/workflows/devsecops-pipeline.yml | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml index 67a85e4..03cd3f5 100644 --- a/.github/workflows/devsecops-pipeline.yml +++ b/.github/workflows/devsecops-pipeline.yml @@ -28,3 +28,34 @@ jobs: uses: snyk/actions/python@master env: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} + + docker-pipeline: + needs: devsecops-pipeline + runs-on: ubuntu-latest + steps: + - name: Code Checkout + uses: actions/checkout@v7 + with: + fetch-depth: 0 + + - name: Login to Docker Hub + uses: docker/login-action@v4 + with: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Docker Build + run: docker build -t ${{ vars.DOCKERHUB_USERNAME }}/helloworld-demo-python:latest . + + - name: Docker Images + run: docker images + + - name: Docker Container + run: docker run -itd ${{ vars.DOCKERHUB_USERNAME }}/helloworld-demo-python:latest + + - name: Docker Container Lists + run: docker ps + + - name: Docker Push + run: docker push ${{ vars.DOCKERHUB_USERNAME }}/helloworld-demo-python:latest + From 220ca64543e27d48d50f8b66dc819130fa0a0d61 Mon Sep 17 00:00:00 2001 From: annaanjali2 <59164365+annaanjali2@users.noreply.github.com> Date: Fri, 7 Aug 2026 09:51:52 +0530 Subject: [PATCH 16/16] Add Dockerfile linting to DevSecOps pipeline Added Dockerfile linting step to the pipeline. --- .github/workflows/devsecops-pipeline.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/devsecops-pipeline.yml b/.github/workflows/devsecops-pipeline.yml index 03cd3f5..cf55529 100644 --- a/.github/workflows/devsecops-pipeline.yml +++ b/.github/workflows/devsecops-pipeline.yml @@ -44,6 +44,11 @@ jobs: username: ${{ vars.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Dockerfile Linting + uses: hadolint/hadolint-action@v3.1.0 + with: + dockerfile: Dockerfile + - name: Docker Build run: docker build -t ${{ vars.DOCKERHUB_USERNAME }}/helloworld-demo-python:latest .