diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..63d0dd7 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,49 @@ +name: PUBLISH + +on: push + +permissions: + id-token: write # This is required for requesting the JWT + contents: read # This is required for actions/checkout + +jobs: + S3_SYNC: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: AWS - Set AWS Credentials + uses: aws-actions/configure-aws-credentials@v5.1.1 + with: + aws-region: ${{ vars.AWS_REGION }} + role-to-assume: ${{ secrets.AWS_IAM_GITHUB_OIDC_ROLE_ARN }} + role-session-name: gh_set_aws_credentials + + - name: AWS - Assume Role + id: aws_assume_role + uses: aws-actions/configure-aws-credentials@v5.1.1 + with: + aws-region: ${{ vars.AWS_REGION }} + role-to-assume: ${{ secrets.AWS_IAM_ASSUME_ROLE_ARN }} + role-session-name: gh_assume_role + role-chaining: true + + - name: AWS - S3 sync + run: | + # Mask sensitive info from logs + set +e + OUTPUT=$(aws s3 sync ./src s3://${{ secrets.AWS_S3_HP_DOT_DEV_S3_BUCKET }}/static --delete 2>&1) + EXIT_CODE=$? + if [ $EXIT_CODE -ne 0 ]; then + echo "S3 upload failed" + echo "$OUTPUT" | \ + sed 's/arn:aws:iam::[0-9]*:/arn:aws:iam::***:/g' | \ + sed 's/arn:aws:sts::[0-9]*:/arn:aws:sts::***:/g' | \ + sed 's/assumed-role\/[^/]*/assumed-role\/***\//g' | \ + sed 's/arn:aws:s3:::[^"]*"/arn:aws:s3:::***"/g' + fi + exit $EXIT_CODE diff --git a/README.md b/README.md index c16854b..245e093 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# hari.karthigasu.io \ No newline at end of file +# hariprasad.dev \ No newline at end of file diff --git a/assets/img/Hari_Karthigasu.pdf b/assets/img/Hari_Karthigasu.pdf deleted file mode 100644 index 972e1b1..0000000 Binary files a/assets/img/Hari_Karthigasu.pdf and /dev/null differ diff --git a/assets/img/dp.png b/assets/img/dp.png deleted file mode 100644 index 8d3a784..0000000 Binary files a/assets/img/dp.png and /dev/null differ diff --git a/index.html b/index.html deleted file mode 100644 index 4be83fb..0000000 --- a/index.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - Jenkins icon by Icons8 - Kubernetes icon by Icons8 - Cloud icon by Icons8 - Docker icon by Icons8 - Python icon by Icons8 - - - - - Hari Karthigasu - - - - - - - - - - - - -
-
- -

Hello! Hari Here!

- -
-
-
-
-
- -

A DevOps Enthusiast, Freelance consultant and Blog writer, passionate in latest technologies with more than half a decade of experience from retro data center to trendy Kubernetes and Cloud.

-
-
- Download CV -
-
- -
-
- -

Skills

- -
-
-
-
-
- -
- -
-
-
-
-
- - -
Container Orchestration
-
-
- -
-
-
-
-
- - -
CI & CD
-
-
- -
-
-
-
-
- -
Cloud Technologies
-
-
- -
-
-
-
-
- -
Containerization
-
-
- -
-
-
-
-
- -
Python Script
-
-
- -
-
-
-
-
- -
Golang
-
-
-
-
-
- - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/icons/aws.png b/src/icons/aws.png new file mode 100644 index 0000000..6f5d898 Binary files /dev/null and b/src/icons/aws.png differ diff --git a/src/icons/cicd.png b/src/icons/cicd.png new file mode 100644 index 0000000..b5aecd0 Binary files /dev/null and b/src/icons/cicd.png differ diff --git a/src/icons/docker.png b/src/icons/docker.png new file mode 100644 index 0000000..d522e52 Binary files /dev/null and b/src/icons/docker.png differ diff --git a/src/icons/golang.png b/src/icons/golang.png new file mode 100644 index 0000000..5ad1a3e Binary files /dev/null and b/src/icons/golang.png differ diff --git a/src/icons/kubernetes.png b/src/icons/kubernetes.png new file mode 100644 index 0000000..6febc23 Binary files /dev/null and b/src/icons/kubernetes.png differ diff --git a/src/icons/python.png b/src/icons/python.png new file mode 100644 index 0000000..8d239d9 Binary files /dev/null and b/src/icons/python.png differ diff --git a/src/img/dp-new.jpeg b/src/img/dp-new.jpeg new file mode 100644 index 0000000..972c44c Binary files /dev/null and b/src/img/dp-new.jpeg differ diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..5d775f9 --- /dev/null +++ b/src/index.html @@ -0,0 +1,172 @@ + + + + + + + + + Hari Prasad Karthigasu + + + + + + + +
+
+ Hari Karthigasu's profile picture +
+
+
+
+
+

Hi, I'm Hari — a passionate Cloud, DevOps, and Platform Engineer based in The Netherlands. With over a decade of hands-on experience, I’ve worked on everything from traditional data centers to modern, scalable cloud. + I mainly work with AWS and follow DevOps practices, focusing on building solutions that are reliable, automated, and efficient.

+ Since 2021, I’ve been part of the AWS Community Builders program, where I share what I learn through articles and videos. + I enjoy solving real-world problems and sharing the lessons I’ve learned

In my spare time, I enjoy biking, going for walks, and doing photography. +

+
+
+ +
+
+

Contents

+
+
+
+
+
+

Popular

+ +

Recent

+
+
+
+
+ +
+
+

Tech

+
+
+
+
+
+

+ AWS + • + Kubernetes + • + Jenkins + • + Python + • + Golang +

+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/js/scripts.js b/src/scripts.js similarity index 100% rename from js/scripts.js rename to src/scripts.js diff --git a/css/styles.css b/src/styles.css similarity index 98% rename from css/styles.css rename to src/styles.css index a4c22c8..d47471f 100644 --- a/css/styles.css +++ b/src/styles.css @@ -19,12 +19,12 @@ --orange: #fd7e14; --yellow: #ffc107; --green: #28a745; - --teal: #1abc9c; + --midnight-blue: #003366; --cyan: #17a2b8; --white: #fff; --gray: #6c757d; --gray-dark: #343a40; - --primary: #1abc9c; + --primary: #003366; --secondary: #2c3e50; --success: #28a745; --info: #17a2b8; @@ -159,13 +159,14 @@ sup { } a { - color: #1abc9c; + color: #003366; text-decoration: none; background-color: transparent; } a:hover { color: #117964; text-decoration: underline; + background-color: #e2e6ea; } a:not([href]) { @@ -472,7 +473,7 @@ mark, color: #6c757d; } .blockquote-footer::before { - content: "— "; + content: "— "; } .img-fluid { @@ -2457,13 +2458,13 @@ fieldset:disabled a.btn { .btn-primary { color: #fff; - background-color: #1abc9c; - border-color: #1abc9c; + background-color: #003366; + border-color: #003366; } .btn-primary:hover { color: #fff; - background-color: #159a80; - border-color: #148f77; + background-color: #d4af37; + border-color: #d4af37; } .btn-primary:focus, .btn-primary.focus { color: #fff; @@ -2473,8 +2474,8 @@ fieldset:disabled a.btn { } .btn-primary.disabled, .btn-primary:disabled { color: #fff; - background-color: #1abc9c; - border-color: #1abc9c; + background-color: #003366; + border-color: #003366; } .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { color: #fff; @@ -2696,25 +2697,25 @@ fieldset:disabled a.btn { } .btn-outline-primary { - color: #1abc9c; - border-color: #1abc9c; + color: #003366; + border-color: #003366; } .btn-outline-primary:hover { color: #fff; - background-color: #1abc9c; - border-color: #1abc9c; + background-color: #003366; + border-color: #003366; } .btn-outline-primary:focus, .btn-outline-primary.focus { box-shadow: 0 0 0 0.2rem rgba(26, 188, 156, 0.5); } .btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #1abc9c; + color: #003366; background-color: transparent; } .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { color: #fff; - background-color: #1abc9c; - border-color: #1abc9c; + background-color: #003366; + border-color: #003366; } .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { box-shadow: 0 0 0 0.2rem rgba(26, 188, 156, 0.5); @@ -2897,7 +2898,7 @@ fieldset:disabled a.btn { .btn-link { font-weight: 400; - color: #1abc9c; + color: #003366; text-decoration: none; } .btn-link:hover { @@ -3175,7 +3176,7 @@ input[type=button].btn-block { .dropdown-item.active, .dropdown-item:active { color: #fff; text-decoration: none; - background-color: #1abc9c; + background-color: #003366; } .dropdown-item.disabled, .dropdown-item:disabled { color: #6c757d; @@ -3500,8 +3501,8 @@ input[type=button].btn-block { } .custom-control-input:checked ~ .custom-control-label::before { color: #fff; - border-color: #1abc9c; - background-color: #1abc9c; + border-color: #003366; + background-color: #003366; } .custom-control-input:focus ~ .custom-control-label::before { box-shadow: 0 0 0 0.2rem rgba(26, 188, 156, 0.25); @@ -3556,8 +3557,8 @@ input[type=button].btn-block { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e"); } .custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { - border-color: #1abc9c; - background-color: #1abc9c; + border-color: #003366; + background-color: #003366; } .custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); @@ -3759,7 +3760,7 @@ input[type=button].btn-block { width: 1rem; height: 1rem; margin-top: -0.25rem; - background-color: #1abc9c; + background-color: #003366; border: 0; border-radius: 1rem; -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; @@ -3788,7 +3789,7 @@ input[type=button].btn-block { .custom-range::-moz-range-thumb { width: 1rem; height: 1rem; - background-color: #1abc9c; + background-color: #003366; border: 0; border-radius: 1rem; -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; @@ -3820,7 +3821,7 @@ input[type=button].btn-block { margin-top: 0; margin-right: 0.2rem; margin-left: 0.2rem; - background-color: #1abc9c; + background-color: #003366; border: 0; border-radius: 1rem; -ms-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; @@ -3941,7 +3942,7 @@ input[type=button].btn-block { .nav-pills .nav-link.active, .nav-pills .show > .nav-link { color: #fff; - background-color: #1abc9c; + background-color: #003366; } .nav-fill .nav-item { @@ -4576,7 +4577,7 @@ input[type=button].btn-block { padding: 0.5rem 0.75rem; margin-left: -0.125rem; line-height: 1.25; - color: #1abc9c; + color: #003366; background-color: #fff; border: 0.125rem solid #dee2e6; } @@ -4605,8 +4606,8 @@ input[type=button].btn-block { .page-item.active .page-link { z-index: 3; color: #fff; - background-color: #1abc9c; - border-color: #1abc9c; + background-color: #003366; + border-color: #003366; } .page-item.disabled .page-link { color: #6c757d; @@ -4682,7 +4683,7 @@ a.badge:hover, a.badge:focus { .badge-primary { color: #fff; - background-color: #1abc9c; + background-color: #003366; } a.badge-primary:hover, a.badge-primary:focus { color: #fff; @@ -4959,7 +4960,7 @@ a.badge-dark:focus, a.badge-dark.focus { color: #fff; text-align: center; white-space: nowrap; - background-color: #1abc9c; + background-color: #003366; transition: width 0.6s ease; } @media (prefers-reduced-motion: reduce) { @@ -5039,8 +5040,8 @@ a.badge-dark:focus, a.badge-dark.focus { .list-group-item.active { z-index: 2; color: #fff; - background-color: #1abc9c; - border-color: #1abc9c; + background-color: #003366; + border-color: #003366; } .list-group-item + .list-group-item { border-top-width: 0; @@ -6067,7 +6068,7 @@ a.close.disabled { } .bg-primary { - background-color: #1abc9c !important; + background-color: #003366 !important; } a.bg-primary:hover, a.bg-primary:focus, @@ -6077,13 +6078,13 @@ button.bg-primary:focus { } .bg-secondary { - background-color: #2c3e50 !important; + background-color: #003366 !important; } a.bg-secondary:hover, a.bg-secondary:focus, button.bg-secondary:hover, button.bg-secondary:focus { - background-color: #1a252f !important; + background-color: #003366 !important; } .bg-success { @@ -6195,7 +6196,7 @@ button.bg-dark:focus { } .border-primary { - border-color: #1abc9c !important; + border-color: #003366 !important; } .border-secondary { @@ -9748,7 +9749,7 @@ button.bg-dark:focus { } .text-primary { - color: #1abc9c !important; + color: #003366 !important; } a.text-primary:hover, a.text-primary:focus { @@ -10040,13 +10041,13 @@ h3 { color: #fff; } #mainNav .navbar-nav li.nav-item a.nav-link:hover { - color: #1abc9c; + color: #003366; } #mainNav .navbar-nav li.nav-item a.nav-link:active, #mainNav .navbar-nav li.nav-item a.nav-link:focus { color: #fff; } #mainNav .navbar-nav li.nav-item a.nav-link.active { - color: #1abc9c; + color: #003366; } #mainNav .navbar-toggler { font-size: 80%; @@ -10068,11 +10069,11 @@ h3 { } #mainNav .navbar-nav > li.nav-item > a.nav-link.active { color: #fff; - background: #1abc9c; + background: #003366; } #mainNav .navbar-nav > li.nav-item > a.nav-link.active:active, #mainNav .navbar-nav > li.nav-item > a.nav-link.active:focus, #mainNav .navbar-nav > li.nav-item > a.nav-link.active:hover { color: #fff; - background: #1abc9c; + background: #003366; } #mainNav.navbar-shrink { @@ -10151,7 +10152,7 @@ h3 { top: 1rem; font-size: 3rem; line-height: 3rem; - color: #1abc9c; + color: #003366; opacity: 1; } @@ -10194,7 +10195,7 @@ h3 { } .floating-label-form-group-with-focus label { - color: #1abc9c; + color: #003366; } form .row:first-child .floating-label-form-group { @@ -10204,10 +10205,54 @@ form .row:first-child .floating-label-form-group { .footer { padding-top: 5rem; padding-bottom: 5rem; - background-color: #2c3e50; + background-color: #003366; color: #fff; } .copyright { - background-color: #1a252f; -} \ No newline at end of file + background-color: #003366; +} + + + +/* Custom Overrides to remove yellow highlight and greenish border shadow from .btn-primary */ + +.btn-primary:focus, +.btn-primary:active, +.btn-primary:focus:active, +.btn-primary:hover { + outline: none !important; + box-shadow: none !important; + background-color: #003366 !important; /* keep consistent primary */ + border-color: #003366 !important; + color: white !important; +} + +/* Optional: Remove focus/active shadow for all buttons */ +button:focus, +button:active, +.btn:focus, +.btn:active { + outline: none !important; + box-shadow: none !important; +} + + +/* Disable white background on hover for the navbar brand "Hari Karthigasu" */ +.navbar-brand:hover { + background-color: transparent !important; + color: white !important; +} + + +/* Add smooth hover effect to "View" buttons */ +.btn-primary { + transition: transform 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease; +} + +.btn-primary:hover { + transform: scale(1.05); + background-color: #0052a2 !important; + color: #fff !important; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); +}