The application has been written in Python with Flask framework. The Dockerfile is written as a multi-stage build to reduce the image size and enhance security.
-
Created backend API to trigger GitHub actions (in Node.js)
yarn add @octokit/rest -triggerWorkflow.js
-
Creating a Deploy Component: This component will include a form where users can specify the necessary details for triggering a GitHub Actions workflow (e.g., repository name, workflow ID).
DeployComponent.ts
-
Created a Custom API Ref: Defined a custom API in the Scania plugin to abstract the communication with the backend.
api.ts
-
Added an API in the backend to list the deployed images:
router.ts
-
The backend component in Backstage to list all images:
DockerHubImagesComponent.tsx
-
Component to run the image locally:
RunDockerComponent.tsx
-
Backend part part of run image locally:
server.js
Used GitHub Actions to build the docker image and push it to Docker Hub.
Used Azure DevOps pipeline to build and push it to Azure Container Registry and deploy it to Kubernetes cluster. Manifest files and Azure DevOps pipeline script are added.
DeploytoAzureK8s.yml
deployment.yml
service.yml