mirror of
https://gitea.smigz.com/smiggiddy/odin-codeprojects.git
synced 2025-06-27 11:20:40 -04:00
ready to deploy
Some checks failed
Build and Push Docker Images / build (admin-dashboard) (push) Failing after 15s
Build and Push Docker Images / build (battleship) (push) Failing after 9s
Build and Push Docker Images / build (calculator) (push) Failing after 9s
Build and Push Docker Images / build (cv-project) (push) Failing after 9s
Build and Push Docker Images / build (inventory) (push) Failing after 10s
Build and Push Docker Images / build (library) (push) Failing after 10s
Build and Push Docker Images / build (messages) (push) Failing after 9s
Build and Push Docker Images / build (nodejs-mini-message-board) (push) Failing after 10s
Build and Push Docker Images / build (portfolio) (push) Failing after 9s
Build and Push Docker Images / build (restaurant) (push) Failing after 9s
Build and Push Docker Images / build (shopping-cart) (push) Failing after 9s
Build and Push Docker Images / build (signup_form) (push) Failing after 8s
Build and Push Docker Images / build (tictactoe) (push) Failing after 9s
Build and Push Docker Images / build (weather) (push) Failing after 9s
Some checks failed
Build and Push Docker Images / build (admin-dashboard) (push) Failing after 15s
Build and Push Docker Images / build (battleship) (push) Failing after 9s
Build and Push Docker Images / build (calculator) (push) Failing after 9s
Build and Push Docker Images / build (cv-project) (push) Failing after 9s
Build and Push Docker Images / build (inventory) (push) Failing after 10s
Build and Push Docker Images / build (library) (push) Failing after 10s
Build and Push Docker Images / build (messages) (push) Failing after 9s
Build and Push Docker Images / build (nodejs-mini-message-board) (push) Failing after 10s
Build and Push Docker Images / build (portfolio) (push) Failing after 9s
Build and Push Docker Images / build (restaurant) (push) Failing after 9s
Build and Push Docker Images / build (shopping-cart) (push) Failing after 9s
Build and Push Docker Images / build (signup_form) (push) Failing after 8s
Build and Push Docker Images / build (tictactoe) (push) Failing after 9s
Build and Push Docker Images / build (weather) (push) Failing after 9s
This commit is contained in:
parent
427e75b86a
commit
694c1f10dc
16 changed files with 423 additions and 0 deletions
61
.devops-context.md
Normal file
61
.devops-context.md
Normal file
|
@ -0,0 +1,61 @@
|
|||
# DevOps Context for Odin Code Projects
|
||||
|
||||
This file contains essential information about the DevOps setup for the Odin Code Projects. It helps the AI assistant (and any humans working on the project) understand the build, deployment, and infrastructure context.
|
||||
|
||||
## Build Process
|
||||
|
||||
* **GitHub Actions:** The build process is managed using GitHub Actions.
|
||||
* **Workflow:** The primary workflow is defined in `.github/workflows/build.yml`.
|
||||
* **Build Context:**
|
||||
* For most projects, the build context when building is the root of the project.
|
||||
* For the `restaurant` project, the build context for docker is the `restaurant/` folder, and the dockerfile is found at `restaurant/devops/Dockerfile`
|
||||
* **Image Naming:** Images are named using the format `ghcr.io/<github_username>/odin-codeprojects/<project_name>:<tag>`. The tag is either `latest` or the first 8 characters of the commit hash.
|
||||
* **Package files**: Most node projects have `package.json` and `package-lock.json` in the root, or in the `app/` folder.
|
||||
* **Projects with package.json:**
|
||||
* Battleship
|
||||
* restaurant
|
||||
* shopping-cart
|
||||
* weather
|
||||
* testing
|
||||
* todo
|
||||
|
||||
## Deployment
|
||||
|
||||
* **Kubernetes:** The applications are deployed to a Kubernetes cluster.
|
||||
* **Ingress**: All projects are exposed through ingress with the following settings.
|
||||
* ingressClassName: traefik
|
||||
* annotations:
|
||||
* cert-manager.io/cluster-issuer: letsencrypt
|
||||
* hosts:
|
||||
* <project_name>.odin.thecodedom.com
|
||||
* tls:
|
||||
* hosts:
|
||||
* <project_name>.odin.thecodedom.com
|
||||
* secretName: <project_name>-tls
|
||||
* **Ingress locations**: The ingress files are located at <project>/devops/<project>-ingress.yaml
|
||||
* **ArgoCD**: Application files are located at deploy/chart/templates/<project>-application.yaml
|
||||
|
||||
## Tools and Automation
|
||||
|
||||
* **Firebase Studio:** Firebase Studio was used to help create the devops process. Instructed by Smiggiddy though.
|
||||
* **CI/CD**: CI/CD is in place to build and test the code and deploy changes.
|
||||
|
||||
## Project List
|
||||
* All projects in this list are part of the build pipeline and can be deployed.
|
||||
- admin-dashboard
|
||||
- auth-expressjs
|
||||
- battleship
|
||||
- calculator
|
||||
- cv
|
||||
- cv-project
|
||||
- inventory
|
||||
- library
|
||||
- messages
|
||||
- nodejs-mini-message-board
|
||||
- portfolio
|
||||
- restaurant
|
||||
- shopping-cart
|
||||
- signup_form
|
||||
- tictactoe
|
||||
- todo
|
||||
- weather
|
40
README.md
Normal file
40
README.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Odin Code Projects: A Full-Stack Development Journey
|
||||
|
||||
Welcome to my collection of projects, created during my journey through the world of full-stack web development! This repository showcases a variety of applications, each representing a step forward in my learning process. From mastering the fundamentals of HTML, CSS, and JavaScript to diving deep into modern frameworks like React and backend technologies like Node.js and Express.js, each project in this collection has been an exercise in growth.
|
||||
|
||||
## My Learning Journey
|
||||
|
||||
My journey began with the foundational building blocks of web development. I honed my skills in creating responsive and dynamic user interfaces with HTML, CSS, and vanilla JavaScript. As I progressed, I embraced the power of component-based architectures by diving into React, a leading JavaScript library for building user interfaces. This shift allowed me to create complex applications with manageable, reusable components.
|
||||
|
||||
On the backend, I explored Node.js and Express.js to build robust APIs and server-side logic. I learned how to connect to databases, manage data, and handle user authentication, adding essential server-side capabilities to my toolkit.
|
||||
|
||||
## DevOps in Action: Kubernetes Deployment
|
||||
|
||||
Beyond crafting code, I've also focused on the crucial aspect of deployment and infrastructure. Leveraging my expertise in DevOps, I've deployed each of these projects to a Kubernetes cluster. This has provided me with hands-on experience managing containerized applications, handling scaling, and ensuring reliability in a production-like environment.
|
||||
|
||||
## Automation with Gemini and Firebase Studio
|
||||
|
||||
To enhance my workflow and automate the deployment process, I integrated cutting-edge tools like Google's Gemini and Firebase Studio. Gemini assisted me in rapidly generating deployment code snippets. As I want to continue learning more about AI, I'm using it to speed up tasks that may take longer.
|
||||
|
||||
## Project Showcase
|
||||
|
||||
Here are the projects that make up this collection, each showcasing different aspects of my full-stack development skills:
|
||||
|
||||
* [Admin Dashboard](admin-dashboard.odin.thecodedom.com)
|
||||
* [Battleship](battleship.odin.thecodedom.com)
|
||||
* [Calculator](calculator.odin.thecodedom.com)
|
||||
* [CV Project](cv-project.odin.thecodedom.com)
|
||||
* [Inventory](inventory.odin.thecodedom.com)
|
||||
* [Library](library.odin.thecodedom.com)
|
||||
* [Messages](messages.odin.thecodedom.com)
|
||||
* [Node.js Mini Message Board](nodejs-mini-message-board.odin.thecodedom.com)
|
||||
* [Portfolio](portfolio.odin.thecodedom.com)
|
||||
* [Restaurant](restaurant.odin.thecodedom.com)
|
||||
* [Shopping Cart](shopping-cart.odin.thecodedom.com)
|
||||
* [Signup Form](signup-form.odin.thecodedom.com)
|
||||
* [Tic Tac Toe](tictactoe.odin.thecodedom.com)
|
||||
* [Weather](weather.odin.thecodedom.com)
|
||||
|
||||
Each project has it's own folder and it's own documentation, so you can dive deeper into each project.
|
||||
|
||||
This journey has been a challenging, yet incredibly rewarding experience. I hope you enjoy exploring these projects as much as I enjoyed creating them!
|
23
admin-dashboard/devops/admin-dashboard-ingress.yaml
Normal file
23
admin-dashboard/devops/admin-dashboard-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: admin-dashboard-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: admin-dashboard.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: admin-dashboard-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- admin-dashboard.odin.thecodedom.com
|
||||
secretName: admin-dashboard-tls
|
23
battleship/devops/battleship-ingress.yaml
Normal file
23
battleship/devops/battleship-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: battleship-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: battleship.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: battleship-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- battleship.odin.thecodedom.com
|
||||
secretName: battleship-tls
|
23
calculator/devops/calculator-ingress.yaml
Normal file
23
calculator/devops/calculator-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: calculator-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: calculator.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: calculator-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- calculator.odin.thecodedom.com
|
||||
secretName: calculator-tls
|
23
cv-project/devops/cv-project-ingress.yaml
Normal file
23
cv-project/devops/cv-project-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: cv-project-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: cv-project.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: cv-project-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- cv-project.odin.thecodedom.com
|
||||
secretName: cv-project-tls
|
23
inventory/devops/inventory-ingress.yaml
Normal file
23
inventory/devops/inventory-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: inventory-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: inventory.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: inventory-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- inventory.odin.thecodedom.com
|
||||
secretName: inventory-tls
|
23
library/devops/library-ingress.yaml
Normal file
23
library/devops/library-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: library-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: library.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: library-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- library.odin.thecodedom.com
|
||||
secretName: library-tls
|
23
messages/devops/messages-ingress.yaml
Normal file
23
messages/devops/messages-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: messages-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: messages.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: messages-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- messages.odin.thecodedom.com
|
||||
secretName: messages-tls
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: nodejs-mini-message-board-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: nodejs-mini-message-board.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- pathType: Prefix
|
||||
path: "/"
|
||||
backend:
|
||||
service:
|
||||
name: nodejs-mini-message-board-service
|
||||
port:
|
||||
number: 3000
|
||||
tls:
|
||||
- hosts:
|
||||
- nodejs-mini-message-board.odin.thecodedom.com
|
||||
secretName: nodejs-mini-message-board-tls
|
23
portfolio/devops/portfolio-ingress.yaml
Normal file
23
portfolio/devops/portfolio-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: portfolio-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: portfolio.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- pathType: Prefix
|
||||
path: "/"
|
||||
backend:
|
||||
service:
|
||||
name: portfolio-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- portfolio.odin.thecodedom.com
|
||||
secretName: portfolio-tls
|
23
restaurant/devops/restaurant-ingress.yaml
Normal file
23
restaurant/devops/restaurant-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: restaurant-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: restaurant.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: restaurant-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- restaurant.odin.thecodedom.com
|
||||
secretName: restaurant-tls
|
23
shopping-cart/devops/shopping-cart-ingress.yaml
Normal file
23
shopping-cart/devops/shopping-cart-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: shopping-cart-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: shopping-cart.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: shopping-cart-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- shopping-cart.odin.thecodedom.com
|
||||
secretName: shopping-cart-tls
|
23
signup_form/devops/signup_form-ingress.yaml
Normal file
23
signup_form/devops/signup_form-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: signup-form-ingress
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: signup-form.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: signup-form-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- signup-form.odin.thecodedom.com
|
||||
secretName: signup-form-tls
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
23
tictactoe/devops/tictactoe-ingress.yaml
Normal file
23
tictactoe/devops/tictactoe-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: tictactoe-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: tictactoe.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- pathType: Prefix
|
||||
path: "/"
|
||||
backend:
|
||||
service:
|
||||
name: tictactoe-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- tictactoe.odin.thecodedom.com
|
||||
secretName: tictactoe-tls
|
23
weather/devops/weather-ingress.yaml
Normal file
23
weather/devops/weather-ingress.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: weather-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: weather.odin.thecodedom.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: weather-service
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- weather.odin.thecodedom.com
|
||||
secretName: weather-tls
|
Loading…
Add table
Add a link
Reference in a new issue