Skip to content

Commit

Permalink
Merge branch '2024' into exec-tutorial
Browse files Browse the repository at this point in the history
  • Loading branch information
MateusMarinheiro authored Oct 16, 2024
2 parents 38926ee + 70bbf74 commit 7da7cbf
Show file tree
Hide file tree
Showing 179 changed files with 5,465 additions and 1 deletion.
38 changes: 38 additions & 0 deletions .github/workflows/lecture_participation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Lecture Participation Information

on:
issue_comment:
types: [created]

permissions:
issues: write

jobs:
track-participation:
if: >
github.event.issue.number == 2370 &&
github.event.comment.author_association != 'COLLABORATOR' &&
github.event.comment.author_association != 'OWNER' &&
github.event.comment.author_association != 'MEMBER'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Python
uses: actions/[email protected]
with:
python-version: '3.11.8'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f ./tools/requirements.txt ]; then pip install -r ./tools/requirements.txt; fi
- name: Update participation tracker
working-directory: tools
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO_FULLNAME: ${{ github.repository }}
TRACKER_ISSUE_NUMBER: ${{ github.event.issue.number }}

run: python track_participation.py --printMarkdown --publish
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ The schedule is at <https://www.kth.se/social/course/DD2482/calendar/>


To pass the course, the student has to complete and pass between 3 and 5 tasks:
* The tasks are in category: "[presentation (mandatory)](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#presentations)", "[demo (mandatory)](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#demos)", "[scientific paper](https://github.com/KTH/devops-course/blob/2024/grading-criteria.paper)", "[executable tutorial](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#executable-tutorials)", "[contribution to open-source](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#open-source-contributions)", "[feedback](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#feedback)" (presentation and demos are mandatory, at most one in the same category, it is not necessary to cover everything).
* The tasks are in category: "[presentation (mandatory)](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#presentations)", "[demo (mandatory)](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#demos)", "[scientific paper](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#scientific-papers)", "[executable tutorial](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#executable-tutorials)", "[contribution to open-source](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#open-source-contributions)", "[feedback](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#feedback)" (presentation and demos are mandatory, at most one in the same category, it is not necessary to cover everything).
* The [grading criteria page](grading-criteria.md) is the unique reference which explains how to pass each task category.
* The student proposes a category and a topic, which is discussed and accepted by the TA. The proposal is made as a [structured pull-request](https://github.com/KTH/devops-course/blob/2024/.github/pull_request_template.md) on this repository. The 3-5 graded contributions must have little overlap.
* The same student cannot choose the same topic for two different tasks. The 3-5 tasks should cover different aspects of DevOps.
Expand Down
131 changes: 131 additions & 0 deletions contributions/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
## Schedule

### Week 1

General Intro about the course.

### Week 2

1. [Property-based testing in Python using Hypothesis](https://github.com/KTH/devops-course/tree/2024/contributions/presentation/week2/samkh-atheers)
1. [Enforcing version consistency between identical package dependencies in monorepos](https://github.com/KTH/devops-course/tree/2024/contributions/demo/week2/hallkvi-ieinberg)
1. [Introducing Team City pipelines a CI/CD tool for samll, mid-sized dev teams by JetBrains](https://github.com/KTH/devops-course/tree/2024/contributions/presentation/week2/rikj-hocker)
1. [CircleCI Pipeline Improved with Cache and Parallel Workflow](https://github.com/KTH/devops-course/tree/2024/contributions/demo/week2/hexu-yinanhu)
1. [Bridging Development and Operations: BDD in Automated Frontend Testing](https://github.com/KTH/devops-course/tree/2024/contributions/presentation/week2/noelt-miladsf)
1. [Continuous integretion testing of node and service availability of promox instances](https://github.com/KTH/devops-course/tree/2024/contributions/demo/week2/mqnguyen-golman)
1. [Split.io, a Feature Flag tool, that can be used for A/B Testing](https://github.com/KTH/devops-course/tree/2024/contributions/presentation/week2/lvainio-oscols)
1. [Integrating Robocop Analysis Report in SonarQube](https://github.com/KTH/devops-course/tree/2024/contributions/demo/week2/uqqasha)
1. [The Crowdstrike bug, and the importance of high-quality testing](https://github.com/KTH/devops-course/tree/2024/contributions/presentation/week2/ghenn-vikfor)
1. [Automated UI testing using Playwright](https://github.com/KTH/devops-course/tree/2024/contributions/presentation/week2/catir-robcla)
1. [Mockito: What it is, how it works, and how it improves automated testing in Java](https://github.com/KTH/devops-course/tree/2024/contributions/presentation/week2/maxisr-jbiorck)

### Week 3

1. [Github Actions workflow for deploying to an AWS Lambda function.](https://github.com/KTH/devops-course/pull/2373)
1. [The importance of containerization ](https://github.com/KTH/devops-course/pull/2390)
1. [An Empirical Study of Architecting for Continuous Delivery and Deployment](https://github.com/KTH/devops-course/pull/2407)
1. [Get started with Terraform : Continuous Deployment in AWS through Github Actions](https://github.com/KTH/devops-course/pull/2406)
1. [Continous Deployment and Rollback using Railway](https://github.com/KTH/devops-course/pull/2436)
1. [Understanding Security Threats in Open-Source Software CI/CD Pipelines](https://github.com/KTH/devops-course/pull/2411)
1. [Blue-Green Deployment: Ensuring Zero Downtime in Continuous Deployment](https://github.com/KTH/devops-course/pull/2412)
1. [Automated Changelog-Driven Deployments with GitHub Actions and Release Please](https://github.com/KTH/devops-course/pull/2413)
1. [An Interactive Demonstration of Automated Canary Deployment using AWS and GitHub Actions](https://github.com/KTH/devops-course/pull/2414)
1. [Flyway: Version Control for Databases](https://github.com/KTH/devops-course/pull/2404)
1. [Deployment and rollbacks with Kubernetes](https://github.com/KTH/devops-course/pull/2415)
1. [From Continuous Delivery to Continuous Deployment in GoCD with Gomatic.](https://github.com/KTH/devops-course/pull/2418)
1. [Harness: World's first AI-augmented software delivery platform](https://github.com/KTH/devops-course/pull/2425)
1. [Automating Software Releases with jReleaser and GitHub Actions](https://github.com/KTH/devops-course/pull/2426)
1. [Using ArgoCD for Continuous Deployment in Kubernetes](https://github.com/KTH/devops-course/pull/2435)
1. [Gitlab CI/CD workflow for deploying fullstack web application on self-hosted server via docker.](https://github.com/KTH/devops-course/pull/2437)
1. [Reducing Downtime with Blue-Green Deployment using Vercel](https://github.com/KTH/devops-course/pull/2445)
1. [Continuous Deployment in IoT Edge devices using Azure ](https://github.com/KTH/devops-course/pull/2441)
1. [_Microservices: Architecting for Continuous Delivery and DevOps_](https://github.com/KTH/devops-course/pull/2399)
1. [Revisiting the practices and pains of microservice architecture in reality: An industrial inquiry](https://github.com/KTH/devops-course/pull/2416)
1. [Exploring Canary Deployments in Modern DevOps](https://github.com/KTH/devops-course/pull/2424)
1. [Rainbow deployments and its role in modern CD](https://github.com/KTH/devops-course/pull/2422)

### Week 4

1. [_CRISP-ML(Q). The End-to-End Machine Learning Workflow_](https://github.com/KTH/devops-course/pull/2417)
1. [Tensorboard: A suite of visualization tools to understand, debug, and optimize TensorFlow programs for ML experimentation](https://github.com/KTH/devops-course/pull/2442)
1. [Dynamic model rollbacks using MLflow](https://github.com/KTH/devops-course/pull/2452)
1. [CodeRabbit: Automated AI Code Reviews](https://github.com/KTH/devops-course/pull/2460)
1. [Machine Learning Operations (MLOps): Overview, Definition, and Architecture](https://github.com/KTH/devops-course/pull/2464)
1. [Predicting Node Failures in an Ultra-Large-Scale Cloud Computing Platform: An AIOps Solution](https://github.com/KTH/devops-course/pull/2472)
1. [TinyMLOps: Operational Challenges for Widespread Edge AI Adoption](https://github.com/KTH/devops-course/pull/2478)
1. [Elyra: an open-source JupyterLab extension for creating ML pipelines](https://github.com/KTH/devops-course/pull/2471)
1. [MLOps: A Taxonomy and a Methodology](https://github.com/KTH/devops-course/pull/2473)
1. [What is a Feature Store in ML?](https://github.com/KTH/devops-course/pull/2482)
1. [Feast in MLOps](https://github.com/KTH/devops-course/pull/2476)
1. [Using Comet ML to analyze and compare the performance of ML models](https://github.com/KTH/devops-course/pull/2485)
1. [MLOps for Cyber-Physical Production Systems: Challenges and Solutions](https://github.com/KTH/devops-course/pull/2486)
1. [Quality Assurance in MLOps Setting: An Industrial Perspective](https://github.com/KTH/devops-course/pull/2479)
1. [The importance of reliable testing methods](https://github.com/KTH/devops-course/pull/2397)

### Week 5

1. [Comparing the differential mechanisms of declarative Terraform and imperative AWS infrastructure as code.](https://github.com/KTH/devops-course/pull/2387)
1. [Ensuring Terraform environment stability with Github Actions](https://github.com/KTH/devops-course/pull/2380)
1. [Using Serverless and Terraform to automate the deployment of a web application to AWS](https://github.com/KTH/devops-course/pull/2391)
1. [_AWS Cloud Development Kit - Define your cloud application resources using familiar programming languages_](https://github.com/KTH/devops-course/pull/2392)
1. [Declarative and reproducible deployments with NixOS](https://github.com/KTH/devops-course/pull/2400)
1. [_AIAC: An AI Infrastructure-as-code Generator_](https://github.com/KTH/devops-course/pull/2395)
1. [_Saltstack: Grains, States and Pillars_](https://github.com/KTH/devops-course/pull/2394)
1. [Dockerfile Compliance Scanning with Docker Bench and Trivy](https://github.com/KTH/devops-course/pull/2432)
1. [Using Bicep to edit Azure resources as code](https://github.com/KTH/devops-course/pull/2398)
1. [Vagrant - How a group of students can experience IaC at home](https://github.com/KTH/devops-course/pull/2440)
1. [Comparing Pulumi and Terraform: Imperative Language vs. Declaritive Language](https://github.com/KTH/devops-course/pull/2444)
1. [Terraform - Using infrastructre as code in DevOps](https://github.com/KTH/devops-course/pull/2458)
1. [The do’s and don’ts of infrastructure code: A systematic gray literature review](https://github.com/KTH/devops-course/pull/2499)
1. [Cost Optimization with Infrastructure as Code](https://github.com/KTH/devops-course/pull/2484)
1. [BlueBuild: The Cloud-Native Desktop Paradigm](https://github.com/KTH/devops-course/pull/2508)
1. [Check-mate: Keep your OpenTofu configurations problem-free](https://github.com/KTH/devops-course/pull/2511)
1. [_TruffleHog - Identifying vulnerable management of secrets for IaC_](https://github.com/KTH/devops-course/pull/2510)
1. [Using Pulumi Policy as Code to enforce rules on IaC managed cloud resources.](https://github.com/KTH/devops-course/pull/2489)
1. [Strimzi - Easy Apache Kafka on Kubernetes](https://github.com/KTH/devops-course/pull/2514)
1. [Infrastructure as code for dynamic deployments](https://github.com/KTH/devops-course/pull/2515)
1. [Creating Spotify playlist using Terraform](https://github.com/KTH/devops-course/pull/2531)
1. [Disaster Recovery using Terraform](https://github.com/KTH/devops-course/pull/2544)

### Week 6

1. [GitGuardian: Preventing Data Leaks Through Automated Security](https://github.com/KTH/devops-course/pull/2396)
1. [Yet another cybersecurity risk assessment framework](https://github.com/KTH/devops-course/pull/2402)
1. [Using Bitwarden Secret Manager to centrally store, manage, and deploy secrets at scale.](https://github.com/KTH/devops-course/pull/2409)
1. [Making your NPM security wishes come true.](https://github.com/KTH/devops-course/pull/2421)
1. [Continuous Information Flow Control](https://github.com/KTH/devops-course/pull/2439)
1. [Comparing pnpm, npm and yarn](https://github.com/KTH/devops-course/pull/2443)
1. [Dynamic Secrets in HashiCorp Vault](https://github.com/KTH/devops-course/pull/2447)
1. [_Streamlining Python Dependency Management with Poetry_](https://github.com/KTH/devops-course/pull/2449)
1. [_Hardening GitHub Actions for increased security_](https://github.com/KTH/devops-course/pull/2468)
1. [Ensuring the integrity and source of software packages](https://github.com/KTH/devops-course/pull/2477)
1. [Detecting vulnerabilities in Python code using static code analysis with Bandit](https://github.com/KTH/devops-course/pull/2507)
1. [Integrating Organizational Policies Using Open Policy Agent](https://github.com/KTH/devops-course/pull/2512)
1. [Using dependabot to automatically detect vulnerabilities in imported packages](https://github.com/KTH/devops-course/pull/2513)
1. [Arc Browser's impotant security breach and why SecDevOps is important](https://github.com/KTH/devops-course/pull/2545)
1. [The event stream incident - vulnerabilities of open source dependencies and possible mitigations. ](https://github.com/KTH/devops-course/pull/2525)
1. [NixOS: Reproducibility with Flakes and Secrets](https://github.com/KTH/devops-course/pull/2546)
1. [Secure your git and CD pipeline with SOPS.](https://github.com/KTH/devops-course/pull/2526)
1. [Challenges and solutions when adopting DevSecOps: A systematic review](https://github.com/KTH/devops-course/pull/2550)
1. [Using Semgrep to find vulnerabilities](https://github.com/KTH/devops-course/pull/2551)
1. [Machine Learning-Based Run-Time DevSecOps: ChatGPT Against Traditional Approach](https://github.com/KTH/devops-course/pull/2556)
1. [Implementing and Automating Security Scanning to](https://github.com/KTH/devops-course/pull/2547)
1. [Integrate RetireJS into Github workflow](https://github.com/KTH/devops-course/pull/2553)
1. [The Seven Sins: Security Smells in Infrastructure as Code Scripts](https://github.com/KTH/devops-course/pull/2552)
1. [Using static analysis with SonarCloud to identify security flaws.](https://github.com/KTH/devops-course/pull/2558)
1. [Automating Private Dependency Management and Version Integration](https://github.com/KTH/devops-course/pull/2569)

### Week 7

1. [DevOps Education - Challenges and Recommendations](https://github.com/KTH/devops-course/pull/2448)
1. [RefBot: Intelligent Software Refactoring Bot](https://github.com/KTH/devops-course/pull/2456)
1. [AI Anomaly Detection for log monitoring](https://github.com/KTH/devops-course/pull/2496)
1. [Infrastructure as Code Using Ansible Playbooks](https://github.com/KTH/devops-course/pull/2536)
1. [DevOps at Scale: Managing Complex Service Architectures in Large Technical Companies](https://github.com/KTH/devops-course/pull/2523)
1. [Chaos Engineering with Chaos Monkey](https://github.com/KTH/devops-course/pull/2549)
1. [Data Version Control for MLOps with DVC](https://github.com/KTH/devops-course/pull/2560)
1. [A Case Study of Developer Bots: Motivations, Perceptions, and Challenges](https://github.com/KTH/devops-course/pull/2532)
1. [Understanding GDPR and its importance for DevOps](https://github.com/KTH/devops-course/pull/2585)
1. [ChatOps Bots for Monitoring and Incident Response in DevOps](https://github.com/KTH/devops-course/pull/2592)
1. [Metrics vs Logging for DevOps Monitoring (Comparing Prometheus and ELK Stack)](https://github.com/KTH/devops-course/tree/2024/contributions/presentation/week7/linussve-daniellw/README.md)
1. [Software licencing overview and compliance automation](https://github.com/KTH/devops-course/pull/2614)

40 changes: 40 additions & 0 deletions contributions/demo/week2/mqnguyen-golman/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Assignment Proposal

## Title

Continuous integration testing of node and service availability of promox instances

## Names and KTH ID

- Minh Quang Nguyen ([email protected])
- Fredrik Gölman ([email protected])

## Deadline
- Week 2

## Category
- Demo

## Description

Our demo will be performed in the context of physical servers that we access through a VPN.

We want to test the following
- Availablity of different nodes in a proxmox cluster
- Availabilty of different services on these nodes

Tools:
- Tailscale (VPN service/mesh network)
- Proxmox (VM virtualization)
- Jenkins (Automation Testing and Integration Testing)

- Option Currently Deciding
- Ansible (Testing Node instance, Update version ...etc)
- Terraform (Create Template for VM/docker/Container)

Backup plan:
In case we run into difficulties we deem unfeasible to overcome (the environment is not fully set up yet, and we are sort of short of time given the schedule) we discussed with the TA to create a rather simple web application involving either authentication functionality and a web form with input where validation would occur at the backend and perform integration tests by interacting with the browser and test frontend, backend, and potentially some database. We (and the TA) were unsure on whether the complexity level of this would be sufficient, but were asked to include it to have it commented on.

**Relevance**

We believe this is very rare compared to more conventional integration tests that may, for example, include a frontend and backend the the interactions between those two components. We also believe it is comparatively complex as it involves a lot of steps both in terms of setting up the environment and performing the tests. It also seem to fulfill a task that frequently would need to be performed manually by a system administrator otherwise. It is of course highly relevant to DevOps in general as it involves several CI tools such as Jenkins.
27 changes: 27 additions & 0 deletions contributions/demo/week3/hugomal-oschel/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Assignment Proposal

## Title

Automating Software Releases with jReleaser and GitHub Actions

## Names and KTH ID

- Hugo Malmberg ([email protected])
- Oscar Hellgren ([email protected])

## Deadline

- Week 3

## Category

- Demo

## Description

We will demonstrate how to automate the software release process using jReleaser and GitHub Actions. The GitHub Actions workflow will be triggered when a new release tag is pushed to the repository. jReleaser will handle tasks such as generating a changelog from commit messages, packaging the software, signing artifacts.


**Relevance**

jReleaser is an emerging tool for automating software releases, making it a valuable addition to any DevOps pipeline. This demo will show how jReleaser can simplify the release process by automating tedious tasks like changelog generation, artifact signing, and multi-platform distribution. Using GitHub Actions for automation further showcases how continuous integration and delivery can be extended to cover the entire lifecycle of a software project, from code changes to final release.
Loading

0 comments on commit 7da7cbf

Please sign in to comment.