- Changed portfolio categories to contain more projects.
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:
ChrQR 2024-05-17 21:14:25 +02:00
parent aa75895db4
commit a8ad93210a
4 changed files with 87 additions and 77 deletions

View File

@ -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

View File

@ -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>