fix(ci): use plain docker build instead of buildx (runner /dev/null issue)
CI/CD Pipeline / Build & Deploy (push) Failing after 17s

This commit is contained in:
wh-leader
2026-05-11 13:33:30 +02:00
parent 83845f4894
commit 58f0a00d4c
4 changed files with 133 additions and 128 deletions
+68 -51
View File
@@ -19,8 +19,8 @@ const blogPosts = (await getCollection('blog'))
---
<BaseLayout
title="Inicio"
description="Portfolio personal de David Aragón - Builder construyendo productos y compartiendo el viaje"
title="Home"
description="David Aragón's portfolio - Builder creating products and sharing the journey"
>
<Header />
@@ -37,15 +37,15 @@ const blogPosts = (await getCollection('blog'))
</div>
<div class="flex-1 text-center md:text-left">
<h1 class="text-4xl md:text-5xl font-bold mb-6">
Hola, soy <span class="text-primary">David Aragón</span>
Hi, I'm <span class="text-primary">David Aragón</span>
</h1>
<p class="text-xl text-text-secondary mb-6 leading-relaxed">
Builder construyendo productos que resuelven problemas reales.
De orfebre a fotógrafo a developer. Ahora construyendo en público.
Builder creating products that solve real problems.
From goldsmith to photographer to developer. Now building in public.
</p>
<p class="text-lg text-text-secondary mb-8">
Actualmente trabajando en <strong class="text-primary">WarrantyHub</strong> -
gestión digital de garantías para hogares.
Currently working on <strong class="text-primary">WarrantyHub</strong> -
digital warranty management for home users.
</p>
<div class="flex flex-wrap justify-center md:justify-start gap-4">
<a
@@ -53,14 +53,14 @@ const blogPosts = (await getCollection('blog'))
class="bg-primary hover:bg-primary/80 text-background px-8 py-3 rounded-lg
font-semibold transition-colors"
>
Leer Blog
Read Blog
</a>
<a
href="/about"
class="bg-surface hover:bg-surface/80 text-text-primary px-8 py-3 rounded-lg
font-semibold border border-text-tertiary/20 transition-colors"
>
Sobre Mí
About Me
</a>
</div>
</div>
@@ -70,36 +70,44 @@ const blogPosts = (await getCollection('blog'))
<!-- Latest Blog Posts -->
<section class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
<div class="flex items-center justify-between mb-8">
<h2 class="text-3xl font-bold">Últimas Publicaciones</h2>
<h2 class="text-3xl font-bold">Latest Posts</h2>
<a
href="/blog"
class="text-primary hover:text-secondary transition-colors font-medium"
>
Ver todas
View all
</a>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{blogPosts.length > 0 ? (
blogPosts.map(post => (
blogPosts.map((post) => (
<Card href={`/blog/${post.slug}`}>
<div class="mb-3">
<Tag label={post.data.category} variant="secondary" />
</div>
<h3 class="text-xl font-semibold mb-2 text-text-primary">{post.data.title}</h3>
<p class="text-text-secondary mb-4">{post.data.description}</p>
<div class="flex items-center justify-between text-sm text-text-tertiary">
<time datetime={post.data.publishDate.toISOString()}>
<div class="mb-4">
<time class="text-sm text-text-tertiary">
{formatDate(post.data.publishDate)}
</time>
<span class="text-primary font-medium">Leer más →</span>
</div>
<h3 class="text-xl font-semibold mb-3 text-text-primary group-hover:text-primary transition-colors">
{post.data.title}
</h3>
<p class="text-text-secondary mb-4 line-clamp-3">
{post.data.description}
</p>
<div class="flex flex-wrap gap-2 mb-4">
{post.data.tags?.slice(0, 3).map((tag: string) => (
<Tag>{tag}</Tag>
))}
</div>
<div class="text-sm">
<span class="text-primary font-medium">Read more →</span>
</div>
</Card>
))
) : (
<div class="col-span-full text-center py-12">
<p class="text-text-secondary">
Publicaciones próximamente. Suscríbete para recibir actualizaciones.
Posts coming soon. Subscribe to receive updates.
</p>
</div>
)}
@@ -110,28 +118,33 @@ const blogPosts = (await getCollection('blog'))
{projects.length > 0 && (
<section class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
<div class="flex items-center justify-between mb-8">
<h2 class="text-3xl font-bold">Proyectos</h2>
<h2 class="text-3xl font-bold">Projects</h2>
<a
href="/projects"
class="text-primary hover:text-secondary transition-colors font-medium"
>
Ver todos
View all
</a>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
{projects.map(project => (
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{projects.map((project) => (
<Card href={`/projects/${project.slug}`}>
<h3 class="text-xl font-semibold mb-2 text-text-primary">{project.data.title}</h3>
<p class="text-text-secondary mb-4">{project.data.description}</p>
<div class="flex flex-wrap gap-2 mb-4">
{project.data.tags.slice(0, 3).map(tag => (
<Tag label={tag} variant="primary" />
))}
<div class="mb-4">
<span class="text-sm text-text-tertiary capitalize">
{project.data.status}
</span>
</div>
<div class="flex items-center justify-between">
<span class="text-sm text-text-tertiary capitalize">{project.data.status}</span>
<span class="text-primary text-sm font-medium">Ver proyecto →</span>
<h3 class="text-xl font-semibold mb-3 text-text-primary group-hover:text-primary transition-colors">
{project.data.title}
</h3>
<p class="text-text-secondary mb-4">
{project.data.description}
</p>
<div class="flex flex-wrap gap-2">
{project.data.tags?.slice(0, 4).map((tag: string) => (
<Tag>{tag}</Tag>
))}
</div>
</Card>
))}
@@ -141,31 +154,35 @@ const blogPosts = (await getCollection('blog'))
<!-- Newsletter CTA -->
<section class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
<div class="bg-gradient-to-r from-primary/10 to-secondary/10 rounded-2xl p-8 md:p-12 text-center border border-primary/20">
<h2 class="text-3xl font-bold mb-4">Construyendo en Público</h2>
<p class="text-text-secondary mb-6 max-w-2xl mx-auto">
Suscríbete para recibir actualizaciones sobre lanzamientos, aprendizajes técnicos,
y el viaje de construcción de productos.
<div class="bg-gradient-to-r from-primary/10 to-secondary/10 border border-primary/20
rounded-2xl p-8 md:p-12 text-center">
<h2 class="text-3xl font-bold mb-4">Stay Updated</h2>
<p class="text-text-secondary text-lg mb-8 max-w-2xl mx-auto">
Get occasional updates about launches, learnings, and technical decisions.
No spam, no BS - just real builder content.
</p>
<form class="flex flex-col sm:flex-row gap-3 max-w-md mx-auto">
<input
<form
class="max-w-md mx-auto flex flex-col sm:flex-row gap-4"
method="POST"
action="/api/subscribe"
>
<input
type="email"
placeholder="tu@email.com"
name="email"
placeholder="your@email.com"
required
class="flex-1 px-4 py-3 rounded-lg bg-background border border-text-tertiary/20
text-text-primary placeholder-text-tertiary focus:outline-none focus:border-primary"
class="flex-1 px-6 py-3 rounded-lg bg-surface border border-text-tertiary/20
text-text-primary placeholder-text-tertiary focus:outline-none
focus:border-primary transition-colors"
/>
<button
<button
type="submit"
class="bg-primary hover:bg-primary/80 text-background px-6 py-3 rounded-lg
class="bg-primary hover:bg-primary/80 text-background px-8 py-3 rounded-lg
font-semibold transition-colors whitespace-nowrap"
>
Suscribirse
Subscribe
</button>
</form>
<p class="text-xs text-text-tertiary mt-4">
Sin spam. Cancela cuando quieras.
</p>
</div>
</section>
</main>