- Changed portfolio categories to contain more projects.
Some checks are pending
Node.js CI / build_image (push) Blocked by required conditions
Some checks are pending
Node.js CI / build_image (push) Blocked by required conditions
- Changed gitea workflow to only build to docker
This commit is contained in:
parent
aa75895db4
commit
a8ad93210a
@ -1,38 +1,34 @@
|
|||||||
name: Node.js CI
|
name: Node.js CI
|
||||||
on: [push]
|
on: [push]
|
||||||
jobs:
|
jobs:
|
||||||
build_app:
|
# build_app:
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
# runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
# steps:
|
||||||
- uses: actions/checkout@v4
|
# - uses: actions/checkout@v4
|
||||||
- name: Use Node.js
|
# - name: Use Node.js
|
||||||
uses: actions/setup-node@v4
|
# uses: actions/setup-node@v4
|
||||||
with:
|
# with:
|
||||||
node-version: '20.x'
|
# node-version: '20.x'
|
||||||
- run: npm ci
|
# - run: npm ci
|
||||||
- run: npm run build --production --if-present
|
# - run: npm run build --production --if-present
|
||||||
build_image:
|
build_image:
|
||||||
needs: build_app
|
needs: build_app
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
-
|
- name: Set up QEMU
|
||||||
name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
-
|
- name: Set up Docker Buildx
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
-
|
- name: Login to gitea registry
|
||||||
name: Login to gitea registry
|
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: gitea.rannes.dev
|
registry: gitea.rannes.dev
|
||||||
username: 'christian'
|
username: ${{ secrets.REGISTRY_USERNAME }}
|
||||||
password: '42e55f16fe0008a71fb5acc6ab674c9776b2df6f'
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
||||||
-
|
- name: Build and push
|
||||||
name: Build and push
|
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
push: true
|
push: true
|
||||||
tags: gitea.rannes.dev/rannes.dev/my-portfolio:latest
|
tags: gitea.rannes.dev/rannes.dev/my-portfolio:latest
|
||||||
|
@ -1,67 +1,81 @@
|
|||||||
<script>
|
<script>
|
||||||
import { blur, fade } from "svelte/transition";
|
import { blur, fade } from 'svelte/transition';
|
||||||
import "../app.css";
|
import '../app.css';
|
||||||
import ThemeSwitch from '$lib/ThemeSwitch.svelte';
|
import ThemeSwitch from '$lib/ThemeSwitch.svelte';
|
||||||
import '../app.css';
|
import '../app.css';
|
||||||
import CloudflareAnalytics from "../lib/CloudflareAnalytics.svelte";
|
import CloudflareAnalytics from '../lib/CloudflareAnalytics.svelte';
|
||||||
|
|
||||||
|
// Navigation links are generated based on this object
|
||||||
|
const nav = [
|
||||||
|
{
|
||||||
|
name: 'index',
|
||||||
|
subPages: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'whoami',
|
||||||
|
subPages: ['about', 'resume']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'portfolio',
|
||||||
|
subPages: ['learnings', 'svelte', 'next.js', 'homelab']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'contact',
|
||||||
|
subPages: ['get_in_touch', 'socials']
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
// Navigation links are generated based on this object
|
let selected = nav[0]; // keep track of the selected 'page' object.
|
||||||
const nav = [
|
let intSelected = 0; // selected page index
|
||||||
{
|
|
||||||
name: "index",
|
|
||||||
subPages: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "whoami",
|
|
||||||
subPages: ["about", "resume"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "portfolio",
|
|
||||||
subPages: ["learnings", "portfolio_project", "next.js_weather", "homelab"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "contact",
|
|
||||||
subPages: ["get_in_touch", "socials"],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
let selected = nav[0]; // keep track of the selected 'page' object.
|
// change the selected component (the event.originalTarget.id is not accessible in Chrome so switched to event.srcElement.id)
|
||||||
let intSelected = 0; // selected page index
|
function changeComponent(event) {
|
||||||
|
selected = nav[event.srcElement.id];
|
||||||
// change the selected component (the event.originalTarget.id is not accessible in Chrome so switched to event.srcElement.id)
|
intSelected = event.srcElement.id;
|
||||||
function changeComponent(event) {
|
}
|
||||||
selected = nav[event.srcElement.id];
|
|
||||||
intSelected = event.srcElement.id;
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<CloudflareAnalytics />
|
<CloudflareAnalytics />
|
||||||
<nav class="nav-container h-32 w-full mt-12">
|
<nav class="nav-container h-32 w-full mt-12">
|
||||||
<ul class="text-center">
|
<ul class="text-center">
|
||||||
{#each nav as main,i}
|
{#each nav as main, i}
|
||||||
{#if i != 0}
|
{#if i != 0}
|
||||||
{#if !nav[i].subPages[0]}
|
{#if !nav[i].subPages[0]}
|
||||||
<li class="nav-item font-jose inline-block"><a href={main.name} class={selected==nav[i] ? "nav-link text-2xl p-3" : "nav link text-2xl p-3"} on:click={changeComponent} id={i} >{main.name}</a></li>
|
<li class="nav-item font-jose inline-block">
|
||||||
{:else}
|
<a
|
||||||
<li class="nav-item font-jose inline-block"><button class={selected==nav[i] ? "nav-link text-2xl p-3" : "nav link text-2xl p-3"} on:click={changeComponent} id={i} >{main.name}</button></li>
|
href={main.name}
|
||||||
{/if}
|
class={selected == nav[i] ? 'nav-link text-2xl p-3' : 'nav link text-2xl p-3'}
|
||||||
{/if}
|
on:click={changeComponent}
|
||||||
{/each}
|
id={i}>{main.name}</a
|
||||||
</ul>
|
>
|
||||||
<hr class="nav-divider max-w-xl h-0.5 border-0 mx-auto bg-black rounded dark:bg-stone-100"/>
|
</li>
|
||||||
{#key selected}
|
{:else}
|
||||||
<ul in:blur={{ delay: 250 }} out:blur={{ duration: 250 }} class="text-center h-4 my-1">
|
<li class="nav-item font-jose inline-block">
|
||||||
{#each selected.subPages as subPage}
|
<button
|
||||||
<li class="sub-nav-item inline-block font-jose"><a class="sub-nav-link text-xl p-2"href={(subPage)}>{subPage.replace(/_/g, ' ')}</a></li>
|
class={selected == nav[i] ? 'nav-link text-2xl p-3' : 'nav link text-2xl p-3'}
|
||||||
{/each}
|
on:click={changeComponent}
|
||||||
|
id={i}>{main.name}</button
|
||||||
</ul>
|
>
|
||||||
{/key}
|
</li>
|
||||||
<li><ThemeSwitch class=""/></li>
|
{/if}
|
||||||
|
{/if}
|
||||||
|
{/each}
|
||||||
|
</ul>
|
||||||
|
<hr class="nav-divider max-w-xl h-0.5 border-0 mx-auto bg-black rounded dark:bg-stone-100" />
|
||||||
|
{#key selected}
|
||||||
|
<ul in:blur={{ delay: 250 }} out:blur={{ duration: 250 }} class="text-center h-4 my-1">
|
||||||
|
{#each selected.subPages as subPage}
|
||||||
|
<li class="sub-nav-item inline-block font-jose">
|
||||||
|
<a class="sub-nav-link text-xl p-2" href={subPage}>{subPage.replace(/_/g, ' ')}</a>
|
||||||
|
</li>
|
||||||
|
{/each}
|
||||||
|
</ul>
|
||||||
|
{/key}
|
||||||
|
<ThemeSwitch />
|
||||||
</nav>
|
</nav>
|
||||||
<div class="container text-center w-3/4 mx-auto">
|
<div class="container text-center w-3/4 mx-auto">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
<footer class="mt-12">
|
<footer class="mt-12">
|
||||||
<p class="text-sm text-gray-400">built and hosted by christian rannes 2024</p>
|
<p class="text-sm text-gray-400">built and hosted by christian rannes 2024</p>
|
||||||
</footer>
|
</footer>
|
||||||
|
Loading…
Reference in New Issue
Block a user