🏆 Concept selected by the Hungarian National Innovation Agency-NIÜ for HSUP
This repository demonstrates a professional-grade CI/CD pipeline. The project’s architectural concept was selected by the professional jury of the Hungarian National Innovation Agency-NIÜ for the Hungarian Startup University Program (HSUP), providing essential professional validation.
1. The Successful CI/CD Pipeline (GitHub Actions):
Below: the successful run of the deploy.yml workflow, including all build, test, and deploy steps.

2. The Deployed Application (AWS Elastic Beanstalk): This image shows the live Django application. You can visit the deployed site directly at the link below:
Demo site suspended for cost reasons.

This repository serves as the practical implementation for my engineering thesis.
While this README summarizes the “how,” the full academic paper provides the deep “why,” including:
You can download the full PDF documents here:
This diagram illustrates the complete CI/CD process from a developer pushing code to the application being live on AWS.

The workflow executes the following steps:
main branch, which automatically triggers the GitHub Actions workflow.flake8): Checks code style and syntax.bandit): Scans for common security vulnerabilities.pytest): Runs the full suite of unit tests..zip bundle of the Django application and uploads it to an Amazon S3 bucket using its temporary credentials..zip bundle from S3 and begins the deployment..platform/hooks/postdeploy/ directory to:
manage.py migrate).manage.py collectstatic).To run this project locally, you will need Python 3.11 and Git installed.
git clone https://github.com/szelese/ci-cd-gha-aws.git
cd ci-cd-gha-aws
# Create the environment
python -m venv .venv
# Activate it (Windows - Git Bash / PowerShell)
source .venv/Scripts/activate
# Activate it (macOS / Linux)
# source .venv/bin/activate
pip install -r requirements.txt
db.sqlite3 file will be created).
python manage.py migrate
python manage.py runserver
http://127.0.0.1:8000/. You should see the application running.This project is configured for automated, secure deployment using GitHub Actions (OIDC) and AWS Elastic Beanstalk. To deploy this project to your own AWS account, you need to set up two things:
ci.yml, deploy.yml) will use.You do not need to store static AWS Access_Key_ID or Secret_Access_Key as secrets. This repository uses OpenID Connect (OIDC) to securely request temporary credentials from AWS at runtime.
You need to create the following in your AWS account:
mysite-env-2) running on the Python 3.11 platform.token.actions.githubusercontent.com with the audience sts.amazonaws.com.GitHubOIDC-EBDeploy) that trusts the OIDC provider (step 2). This role’s Trust Policy should be limited to your specific repository (szelese/ci-cd-gha-aws) and main branch.deploy.yml workflow, such as:
s3:PutObject (to upload the .zip bundle)elasticbeanstalk:CreateApplicationVersionelasticbeanstalk:UpdateEnvironmentGo to your repository’s Settings > Secrets and variables > Actions and add the following repository secrets:
AWS_REGION: The AWS region where your Elastic Beanstalk environment is located (e.g., eu-north-1).APP_NAME: The name of your Elastic Beanstalk application (e.g., mysite).ENV_NAME: The name of your Elastic Beanstalk environment (e.g., Mysite-env-2).AWS_IAM_ROLE_ARN: The ARN of the IAM role you created in the previous step (e.g., arn:aws:iam::123456789:role/GitHubOIDC-EBDeploy).DJANGO_SECRET_KEY: A new, strong, randomly generated Django secret key for your application.Once these steps are complete, any push to the main branch will automatically trigger the deploy.yml workflow, which will assume the IAM role via OIDC and deploy the application to your Elastic Beanstalk environment.
Engineering Note: This design sketch represents the theoretical foundation of the project. The primary objective of Phase V1 was not complex application logic, but the demonstration of a secure, keyless (OIDC) CI/CD process within an AWS Elastic Beanstalk environment. This “template” established the groundwork for the subsequent agnostic approach, where automation and security are decoupled from the business logic.

This project was not just about deployment, but also about rigorous measurement and optimization.
Detailed statistical data, including execution timings and load tests, can be found in the Performance Metrics Report.
“The project’s architectural one-pager was selected by the professional jury of the Hungarian National Innovation Agency (NIÜ) for the Hungarian Startup University Program (HSUP), recognizing its innovative potential in cloud automation.”
Status: V1 Baseline (Archived) This repository represents the foundational phase of my research. While this version is complete and served as the primary proof-of-concept for my thesis, the architectural evolution continues.
Ervin Wallin (formerly Ervin Széles) —
This repository and its contents were created as part of a Bachelor’s thesis project at Gábor Dénes University.
They are shared for educational and demonstration purposes only.
You are welcome to view and learn from this project,
but re-use or modification requires prior permission from the author.
The author assumes no responsibility for any issues, damages, or errors resulting from the use of these materials.
Ervin Wallin (formerly Ervin Széles) © 2025