Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 488822bb61 | |||
| 0dfcc25984 | |||
| 4c8665ebe2 | |||
| d083660f1c | |||
| e9a8b6de97 | |||
|
|
505f8d6a36 | ||
| 26a2a9dc96 | |||
| 578e1661cd | |||
|
|
3e2e9196a2 | ||
| 338accdd22 | |||
| 7882c3ecc7 | |||
| db79f912ee | |||
|
|
e165c5fea0 | ||
| 8e32c5aaff | |||
| 36eaa0c132 | |||
| 24c837cf84 | |||
|
|
420b971044 | ||
| 2c86390c7f | |||
| f32b75e31d | |||
| 4bcd542e7b | |||
| ce75e7ca5e | |||
| bf3a7ef261 | |||
| b09e2dc849 | |||
| cae8cd3a39 | |||
| 620b496957 | |||
| 4b58117454 | |||
| 68f2080bda | |||
| 07fa86b17c | |||
| 1577ee4c27 | |||
| e0a3d391b3 | |||
| 99032f7a62 | |||
| 03f74a8181 | |||
| 405fdf297c | |||
| 5b6b6e479f | |||
| 04344808bd | |||
| 6ec27345c3 | |||
| 5e02443409 |
@@ -1,154 +0,0 @@
|
||||
name: release-image-gitea
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 3.*
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-js
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.3.10
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 24.14.0
|
||||
|
||||
- name: Install Dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
- name: Cache Astro Build Cache
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
.astro
|
||||
node_modules/.vite
|
||||
key: ${{ runner.os }}-astro-${{ hashFiles('**/*.astro', 'astro.config.mjs') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-astro-
|
||||
|
||||
- name: Lint Code
|
||||
run: bun run lint
|
||||
|
||||
- name: Build Project
|
||||
run: bun run build
|
||||
|
||||
release:
|
||||
runs-on: ubuntu-js
|
||||
needs: build
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Login to Registry
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ${{ vars.REPOSITORY_HOST }}
|
||||
username: ${{ gitea.actor }}
|
||||
password: ${{ secrets.REPOSITORY_TOKEN }}
|
||||
|
||||
- name: Login to Docker
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ${{ vars.DH_REGISTRY }}
|
||||
username: ${{ secrets.DH_USERNAME }}
|
||||
password: ${{ secrets.DH_TOKEN }}
|
||||
|
||||
- name: Create Kubeconfig
|
||||
run: |
|
||||
mkdir $HOME/.kube
|
||||
echo "${{ secrets.KUBECONFIG_BUILDX }}" > $HOME/.kube/config
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
driver: kubernetes
|
||||
driver-opts: |
|
||||
namespace=gitea
|
||||
qemu.install=true
|
||||
buildkitd-config-inline: |
|
||||
[registry."docker.io"]
|
||||
mirrors = ["harbor.alexlebens.net/proxy-hub.docker/"]
|
||||
|
||||
- name: Available Platforms
|
||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||
|
||||
- name: Extract Metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v6
|
||||
with:
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=tag
|
||||
type=sha,format=long
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
images: |
|
||||
${{ vars.REPOSITORY_HOST }}/${{ gitea.repository }}
|
||||
|
||||
- name: Get Version Info
|
||||
id: version
|
||||
run: |
|
||||
echo "version=$(git describe --tags --always)" >> $GITHUB_OUTPUT
|
||||
echo "commit=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||
if git describe --tags --exact-match HEAD 2>/dev/null; then
|
||||
echo "is_release=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "is_release=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Build and Push Image
|
||||
uses: docker/build-push-action@v7
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
platforms: linux/amd64
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
build-args: |
|
||||
VERSION=${{ steps.version.outputs.version }}
|
||||
COMMIT_SHA=${{ steps.version.outputs.commit }}
|
||||
IS_RELEASE=${{ steps.version.outputs.is_release }}
|
||||
file: ./Dockerfile
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
- name: ntfy Success
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: success()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Release Success - Site Profile'
|
||||
priority: 3
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,successfully,completed
|
||||
details: 'Image for Site Profile has been released!'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
|
||||
- name: ntfy Failed
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: failure()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Release Failure - Site Profile'
|
||||
priority: 4
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,failed
|
||||
details: 'Image for Site Profile has failed to be released.'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-profile/actions?workflow=release-image.yml", "clear": true}]'
|
||||
image: true
|
||||
@@ -1,154 +0,0 @@
|
||||
name: release-image-harbor
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 3.*
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-js
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.3.10
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 24.14.0
|
||||
|
||||
- name: Install Dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
- name: Cache Astro Build Cache
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
.astro
|
||||
node_modules/.vite
|
||||
key: ${{ runner.os }}-astro-${{ hashFiles('**/*.astro', 'astro.config.mjs') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-astro-
|
||||
|
||||
- name: Lint Code
|
||||
run: bun run lint
|
||||
|
||||
- name: Build Project
|
||||
run: bun run build
|
||||
|
||||
release:
|
||||
runs-on: ubuntu-js
|
||||
needs: build
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Login to Registry
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ${{ vars.REGISTRY_HOST }}
|
||||
username: ${{ vars.REGISTRY_USER }}
|
||||
password: ${{ secrets.REGISTRY_SECRET }}
|
||||
|
||||
- name: Login to Docker
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ${{ vars.DH_REGISTRY }}
|
||||
username: ${{ secrets.DH_USERNAME }}
|
||||
password: ${{ secrets.DH_TOKEN }}
|
||||
|
||||
- name: Create Kubeconfig
|
||||
run: |
|
||||
mkdir $HOME/.kube
|
||||
echo "${{ secrets.KUBECONFIG_BUILDX }}" > $HOME/.kube/config
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
driver: kubernetes
|
||||
driver-opts: |
|
||||
namespace=gitea
|
||||
qemu.install=true
|
||||
buildkitd-config-inline: |
|
||||
[registry."docker.io"]
|
||||
mirrors = ["harbor.alexlebens.net/proxy-hub.docker/"]
|
||||
|
||||
- name: Available Platforms
|
||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||
|
||||
- name: Extract Metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v6
|
||||
with:
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=tag
|
||||
type=sha,format=long
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
images: |
|
||||
${{ vars.REGISTRY_HOST }}/images/site-profile
|
||||
|
||||
- name: Get Version Info
|
||||
id: version
|
||||
run: |
|
||||
echo "version=$(git describe --tags --always)" >> $GITHUB_OUTPUT
|
||||
echo "commit=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||
if git describe --tags --exact-match HEAD 2>/dev/null; then
|
||||
echo "is_release=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "is_release=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Build and Push Image
|
||||
uses: docker/build-push-action@v7
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
platforms: linux/amd64
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
build-args: |
|
||||
VERSION=${{ steps.version.outputs.version }}
|
||||
COMMIT_SHA=${{ steps.version.outputs.commit }}
|
||||
IS_RELEASE=${{ steps.version.outputs.is_release }}
|
||||
file: ./Dockerfile
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
- name: ntfy Success
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: success()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Release Success - Site Profile'
|
||||
priority: 3
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,successfully,completed
|
||||
details: 'Image for Site Profile has been released!'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
|
||||
- name: ntfy Failed
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: failure()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Release Failure - Site Profile'
|
||||
priority: 4
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,failed
|
||||
details: 'Image for Site Profile has failed to be released.'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-profile/actions?workflow=release-image.yml", "clear": true}]'
|
||||
image: true
|
||||
340
.gitea/workflows/release-image.yaml
Normal file
340
.gitea/workflows/release-image.yaml
Normal file
@@ -0,0 +1,340 @@
|
||||
name: release-image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- release
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-js
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
ref: release
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 24.14.0
|
||||
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.3.10
|
||||
|
||||
- name: Install Dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
- name: Cache Astro Build Cache
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
.astro
|
||||
node_modules/.vite
|
||||
key: ${{ runner.os }}-astro-${{ hashFiles('**/*.astro', 'astro.config.mjs') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-astro-
|
||||
|
||||
- name: Lint Code
|
||||
run: bun run lint
|
||||
|
||||
- name: Build Project
|
||||
run: bun run build
|
||||
|
||||
- name: ntfy Failed
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: failure()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Test Failure - Site Profile'
|
||||
priority: 4
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,failed
|
||||
details: 'During release tests failed for building Site Profile'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-profile/actions?workflow=release-image.yaml", "clear": true}]'
|
||||
image: true
|
||||
|
||||
guarddog:
|
||||
runs-on: ubuntu-js
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
ref: release
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.12'
|
||||
|
||||
- name: Install GuardDog
|
||||
run: |
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install guarddog
|
||||
|
||||
- name: Run GuardDog
|
||||
run: |
|
||||
guarddog npm scan ./
|
||||
|
||||
- name: ntfy Failed
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: failure()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Security Failure - Site Profile'
|
||||
priority: 4
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,failed
|
||||
details: 'During release guarddog scan failed for Site Profile'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-profile/actions?workflow=release-image.yaml", "clear": true}]'
|
||||
image: true
|
||||
|
||||
semantic-release:
|
||||
needs: [ build, guarddog ]
|
||||
runs-on: ubuntu-js
|
||||
outputs:
|
||||
new-release-published: ${{ steps.semantic.outputs.new-release-published }}
|
||||
new-release-version: ${{ steps.semantic.outputs.new-release-version }}
|
||||
new-release-git-tag: ${{ steps.semantic.outputs.new-release-git-tag }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.BOT_TOKEN }}
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 24.14.0
|
||||
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.3.10
|
||||
|
||||
- name: Install Dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
- name: Run Semantic Release
|
||||
id: semantic
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
NODE_PATH: ${{ github.workspace }}/node_modules
|
||||
run: |
|
||||
bun run semantic-release
|
||||
|
||||
release-harbor:
|
||||
runs-on: ubuntu-js
|
||||
needs: semantic-release
|
||||
if: ${{ needs.semantic-release.outputs.new-release-published == 'true' }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
ref: release
|
||||
|
||||
- name: Login to Harbor Registry
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ${{ vars.REGISTRY_HOST }}
|
||||
username: ${{ vars.REGISTRY_USER }}
|
||||
password: ${{ secrets.REGISTRY_SECRET }}
|
||||
|
||||
- name: Login to Docker
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ${{ vars.DH_REGISTRY }}
|
||||
username: ${{ secrets.DH_USERNAME }}
|
||||
password: ${{ secrets.DH_TOKEN }}
|
||||
|
||||
- name: Create Kubeconfig
|
||||
run: |
|
||||
mkdir $HOME/.kube
|
||||
echo "${{ secrets.KUBECONFIG_BUILDX }}" > $HOME/.kube/config
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
driver: kubernetes
|
||||
driver-opts: |
|
||||
namespace=gitea
|
||||
qemu.install=true
|
||||
buildkitd-config-inline: |
|
||||
[registry."docker.io"]
|
||||
mirrors = ["harbor.alexlebens.net/proxy-hub.docker/"]
|
||||
|
||||
- name: Available Platforms
|
||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||
|
||||
- name: Extract Metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v6
|
||||
with:
|
||||
images: |
|
||||
${{ vars.REGISTRY_HOST }}/images/site-profile
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=sha,format=long
|
||||
type=raw,value=latest,enable=${{ needs.semantic-release.outputs.new-release-published == 'true' }}
|
||||
type=semver,pattern={{version}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||
type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||
type=semver,pattern={{major}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||
|
||||
- name: Build and Push Image
|
||||
uses: docker/build-push-action@v7
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
platforms: linux/amd64
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
build-args: |
|
||||
APP_VERSION=${{ needs.semantic-release.outputs.new-release-version }}
|
||||
COMMIT_SHA=${{ github.sha }}
|
||||
IS_RELEASE=true
|
||||
file: ./Dockerfile
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
- name: ntfy Success
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: success()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Release Success - Site Profile'
|
||||
priority: 3
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,successfully,completed
|
||||
details: 'Harbor Image for Site Profile has been released!'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
|
||||
- name: ntfy Failed
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: failure()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Release Failure - Site Profile'
|
||||
priority: 4
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,failed
|
||||
details: 'Harbor Image for Site Profile has failed to be released.'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-profile/actions?workflow=release-image.yml", "clear": true}]'
|
||||
image: true
|
||||
|
||||
release-gitea:
|
||||
runs-on: ubuntu-js
|
||||
needs: [ semantic-release, release-harbor ]
|
||||
if: |
|
||||
always() &&
|
||||
needs.semantic-release.outputs.new-release-published == 'true'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
ref: release
|
||||
|
||||
- name: Login to Gitea Registry
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ${{ vars.REPOSITORY_HOST }}
|
||||
username: ${{ gitea.actor }}
|
||||
password: ${{ secrets.REPOSITORY_TOKEN }}
|
||||
|
||||
- name: Login to Docker
|
||||
uses: docker/login-action@v4
|
||||
with:
|
||||
registry: ${{ vars.DH_REGISTRY }}
|
||||
username: ${{ secrets.DH_USERNAME }}
|
||||
password: ${{ secrets.DH_TOKEN }}
|
||||
|
||||
- name: Create Kubeconfig
|
||||
run: |
|
||||
mkdir $HOME/.kube
|
||||
echo "${{ secrets.KUBECONFIG_BUILDX }}" > $HOME/.kube/config
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v4
|
||||
with:
|
||||
driver: kubernetes
|
||||
driver-opts: |
|
||||
namespace=gitea
|
||||
qemu.install=true
|
||||
buildkitd-config-inline: |
|
||||
[registry."docker.io"]
|
||||
mirrors = ["harbor.alexlebens.net/proxy-hub.docker/"]
|
||||
|
||||
- name: Available Platforms
|
||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||
|
||||
- name: Extract Metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v6
|
||||
with:
|
||||
images: |
|
||||
${{ vars.REPOSITORY_HOST }}/${{ gitea.repository }}
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=sha,format=long
|
||||
type=raw,value=latest,enable=${{ needs.semantic-release.outputs.new-release-published == 'true' }}
|
||||
type=semver,pattern={{version}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||
type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||
type=semver,pattern={{major}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||
|
||||
- name: Build and Push Image
|
||||
uses: docker/build-push-action@v7
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
platforms: linux/amd64
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
build-args: |
|
||||
APP_VERSION=${{ needs.semantic-release.outputs.new-release-version }}
|
||||
COMMIT_SHA=${{ github.sha }}
|
||||
IS_RELEASE=true
|
||||
file: ./Dockerfile
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
- name: ntfy Success
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: success()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Release Success - Site Profile'
|
||||
priority: 3
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,successfully,completed
|
||||
details: 'Gitea Image for Site Profile has been released!'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
|
||||
- name: ntfy Failed
|
||||
uses: niniyas/ntfy-action@master
|
||||
if: failure()
|
||||
with:
|
||||
url: '${{ secrets.NTFY_URL }}'
|
||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||
title: 'Release Failure - Site Profile'
|
||||
priority: 4
|
||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||
tags: action,failed
|
||||
details: 'Gitea Image for Site Profile has failed to be released.'
|
||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-profile/actions?workflow=release-image.yaml", "clear": true}]'
|
||||
image: true
|
||||
@@ -4,6 +4,9 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths-ignore:
|
||||
- '.gitea/workflows/**'
|
||||
- '**.md'
|
||||
|
||||
pull_request:
|
||||
branches:
|
||||
@@ -16,16 +19,16 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.3.10
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 24.14.0
|
||||
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.3.10
|
||||
|
||||
- name: Install Dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
|
||||
18
.releaserc.json
Normal file
18
.releaserc.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"branches": ["release"],
|
||||
"tagFormat": "${version}",
|
||||
"plugins": [
|
||||
"@semantic-release/commit-analyzer",
|
||||
"@semantic-release/release-notes-generator",
|
||||
"@semantic-release/changelog",
|
||||
"semantic-release-export-data",
|
||||
["@semantic-release/npm", { "npmPublish": false }],
|
||||
["@semantic-release/git", {
|
||||
"assets": ["package.json", "CHANGELOG.md"],
|
||||
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
||||
}],
|
||||
["@saithodev/semantic-release-gitea", {
|
||||
"giteaUrl": "https://gitea.alexlebens.dev"
|
||||
}]
|
||||
]
|
||||
}
|
||||
277
CHANGELOG.md
Normal file
277
CHANGELOG.md
Normal file
@@ -0,0 +1,277 @@
|
||||
# [3.7.0](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.6.0...3.7.0) (2026-03-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* incorrect name of step ([db79f91](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/db79f912eeb4f3741945c95d42508451e9558c1e))
|
||||
* use semantic release outputs ([578e166](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/578e1661cd3966b9886c952dbb564d1a2290f5dc))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add automation to release using release-please in workflows ([99032f7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/99032f7a62a88bd8310a0eacfa2ab03c17ed9685))
|
||||
* add if to ignore harbor release result ([ce75e7c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ce75e7ca5ec723c6a30f760f930d027012da6de9))
|
||||
* add outputs of semantic release ([36eaa0c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/36eaa0c13264cfc9acfb311d4e9fba35ced95d39))
|
||||
* add release branch, update and merge release workflow ([68f2080](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/68f2080bdaa4b5a10a0d72657d511d287288e68c))
|
||||
* add semantic release ([620b496](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/620b496957e49aa5615c043dbebb31367df38aaf))
|
||||
* add token ([e0a3d39](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e0a3d391b314717402b9577899c37c131a73c71d))
|
||||
* change release format ([24c837c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/24c837cf84a2bffb2a9b44a6905f2cbdb58facc6))
|
||||
* ignore on docs updates ([4b58117](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/4b58117454109cbc3f40df0d1edc5185ca6415f0))
|
||||
* install deps ([f32b75e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/f32b75e31d8ac4a3e55f86812bfa0790bfaede57))
|
||||
* remove old release workflows ([7882c3e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/7882c3ecc763b2fe396e412d2ba81d7a0629bb11))
|
||||
* remove release-please ([07fa86b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/07fa86b17cab585088e299aab081b122db386ade))
|
||||
* setup node for semantic release ([bf3a7ef](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/bf3a7ef261b437e877fd7c9d1a477dfac1ee0400))
|
||||
* use different workflow for gitea ([1577ee4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1577ee4c2791cb40d2af4b891e37c6c3f4db459a))
|
||||
|
||||
# [3.7.0](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.6.0...3.7.0) (2026-03-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* incorrect name of step ([db79f91](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/db79f912eeb4f3741945c95d42508451e9558c1e))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add automation to release using release-please in workflows ([99032f7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/99032f7a62a88bd8310a0eacfa2ab03c17ed9685))
|
||||
* add if to ignore harbor release result ([ce75e7c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ce75e7ca5ec723c6a30f760f930d027012da6de9))
|
||||
* add outputs of semantic release ([36eaa0c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/36eaa0c13264cfc9acfb311d4e9fba35ced95d39))
|
||||
* add release branch, update and merge release workflow ([68f2080](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/68f2080bdaa4b5a10a0d72657d511d287288e68c))
|
||||
* add semantic release ([620b496](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/620b496957e49aa5615c043dbebb31367df38aaf))
|
||||
* add token ([e0a3d39](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e0a3d391b314717402b9577899c37c131a73c71d))
|
||||
* change release format ([24c837c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/24c837cf84a2bffb2a9b44a6905f2cbdb58facc6))
|
||||
* ignore on docs updates ([4b58117](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/4b58117454109cbc3f40df0d1edc5185ca6415f0))
|
||||
* install deps ([f32b75e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/f32b75e31d8ac4a3e55f86812bfa0790bfaede57))
|
||||
* remove old release workflows ([7882c3e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/7882c3ecc763b2fe396e412d2ba81d7a0629bb11))
|
||||
* remove release-please ([07fa86b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/07fa86b17cab585088e299aab081b122db386ade))
|
||||
* setup node for semantic release ([bf3a7ef](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/bf3a7ef261b437e877fd7c9d1a477dfac1ee0400))
|
||||
* use different workflow for gitea ([1577ee4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1577ee4c2791cb40d2af4b891e37c6c3f4db459a))
|
||||
|
||||
# [3.7.0](https://gitea.alexlebens.dev/alexlebens/site-profile/compare/3.6.0...3.7.0) (2026-03-12)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add automation to release using release-please in workflows ([99032f7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/99032f7a62a88bd8310a0eacfa2ab03c17ed9685))
|
||||
* add if to ignore harbor release result ([ce75e7c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ce75e7ca5ec723c6a30f760f930d027012da6de9))
|
||||
* add outputs of semantic release ([36eaa0c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/36eaa0c13264cfc9acfb311d4e9fba35ced95d39))
|
||||
* add release branch, update and merge release workflow ([68f2080](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/68f2080bdaa4b5a10a0d72657d511d287288e68c))
|
||||
* add semantic release ([620b496](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/620b496957e49aa5615c043dbebb31367df38aaf))
|
||||
* add token ([e0a3d39](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e0a3d391b314717402b9577899c37c131a73c71d))
|
||||
* change release format ([24c837c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/24c837cf84a2bffb2a9b44a6905f2cbdb58facc6))
|
||||
* ignore on docs updates ([4b58117](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/4b58117454109cbc3f40df0d1edc5185ca6415f0))
|
||||
* install deps ([f32b75e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/f32b75e31d8ac4a3e55f86812bfa0790bfaede57))
|
||||
* remove release-please ([07fa86b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/07fa86b17cab585088e299aab081b122db386ade))
|
||||
* setup node for semantic release ([bf3a7ef](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/bf3a7ef261b437e877fd7c9d1a477dfac1ee0400))
|
||||
* use different workflow for gitea ([1577ee4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1577ee4c2791cb40d2af4b891e37c6c3f4db459a))
|
||||
|
||||
# 1.0.0 (2026-03-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add comments ([a0f83c8](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/a0f83c874c8b4d66168ed54f93919ffaafe2250b))
|
||||
* add env ([ea9ae01](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ea9ae016d706b03793a1f4218c9d407ed45e26a4))
|
||||
* add paths ([976bc0c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/976bc0c413904bc5b8772a8e5674c1c92ae09eb4))
|
||||
* add remote patterns for images ([ba73c1b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ba73c1b24ff48acc2589b3e7ad1a104a9c813a9d))
|
||||
* change selected count ([fe38992](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/fe3899242a0e2c951371f42561705ec8d2fa1093))
|
||||
* clean up comments ([4d7886b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/4d7886b93c78e89e3fa49d122573fc1a2d4feb39))
|
||||
* command order ([0a2979e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/0a2979ecfef952826138c0095ff917ac8926aedb))
|
||||
* correct credentials ([1a34b93](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1a34b932b06b410e47653eb98e03cca06385bd14))
|
||||
* correct matchhost ([882063e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/882063ea43004d26ccb6b6ccc706d99e4ef7f4be))
|
||||
* create new Date to compare posts ([01ee8fa](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/01ee8fac98b5bb110670860cf87b1aa3e1b52a9a))
|
||||
* debug logs ([8d5c02e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/8d5c02e2d124d7b9c82e03f01b93ac5f8074335d))
|
||||
* **deps:** update astro monorepo ([ef810ef](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ef810efd24a3bfb09ab0dd82fdd144ff92e9e7ef))
|
||||
* **deps:** update dependency shiki to v4 ([da28e5b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/da28e5b50e60b4e01a7c9ec98297d272945cb1ce))
|
||||
* downgrade python ([7a77f0d](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/7a77f0d2d2489707bbf5cc815a531282393fa5eb))
|
||||
* fix footer accent color ([9eb0f37](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/9eb0f37cb2c8dce3602616e490a6214adb6f2f10))
|
||||
* fix lint error ([4c4421c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/4c4421c8a897ea54472c3dd1696bcf0dc0ec4e3b))
|
||||
* force 3d scaling for button transform ([959d3bd](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/959d3bd71d3c6ed3fc34196ff2edaee0441a36c5))
|
||||
* hidden button background color on light mode, darken ([0d87af3](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/0d87af3aca5e10f13358e480aa56f860ff0ae211))
|
||||
* info logs ([c927235](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/c927235a5aeb6e6d600eb4de78d4144dd7853d21))
|
||||
* install and run ([e29631c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e29631c4af2d87d0e3518751d0e6327006d4e38d))
|
||||
* move host rules to workflow ([ba2477e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ba2477e7af9ab97045c836634de57384e199f881))
|
||||
* only binary ([31aad55](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/31aad5511fbf288991e5eab1551204fc9513e253))
|
||||
* padding, margin, and width issues ([6d3f3a4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/6d3f3a49ab80c7c49c0552fc18c09cff2a34be57))
|
||||
* path ([d9833e1](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/d9833e1c27c5b60d4dd1e180e4108623639d6681))
|
||||
* remove argument ([093e1e2](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/093e1e2ccb55085f34595ffccecf322f9bba4199))
|
||||
* remove border from blog cards ([875b8a7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/875b8a7f47698cb397992dbedf48b1d1a35c0cfa))
|
||||
* remove description ([c2bf64c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/c2bf64c6ccdf52345f3eecf52b59d472fde372da))
|
||||
* remove errant semicolon ([1ddc76a](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1ddc76ae693d6903226ae6ffef635d9ed3adad4f))
|
||||
* remove unused property ([3d9120c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/3d9120c5700244137427b929c360920e7227ad6d))
|
||||
* run theme on page swap ([c4be465](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/c4be4653bea0b4101cfbe20c082b3268c01ddba8))
|
||||
* update lock ([fb8f642](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/fb8f642c52fe82469e4bc3b41f8b62ca5ca80e46))
|
||||
* use uvx ([c3e4519](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/c3e4519682599bafe0c9857be90937542be31fd8))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add additional layout for small screens ([890dbdf](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/890dbdf313c4596e73734fdca5376c86d4cdc852))
|
||||
* add an all page with cards to link to it ([7327795](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/7327795d394f05039a3e0fe0e6615453138bcd6a))
|
||||
* add applications page ([9678b3c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/9678b3c7185b166d710ab7e0a83cdbdc89cc0ff6))
|
||||
* add automation to release using release-please in workflows ([99032f7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/99032f7a62a88bd8310a0eacfa2ab03c17ed9685))
|
||||
* add background shimmer effect, use mask for content scroll fade ([5e37e2b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/5e37e2bb539a8d35bd3de3c47f0b2c5d227197c5))
|
||||
* add category logo to blog page ([5b94283](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/5b94283498131c4265b7f5bb364d81e8ff642a88))
|
||||
* add client:load ([ceb70c7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ceb70c70491d7075cd744a12158bf6a9bf7da367))
|
||||
* add creds for dhi ([8797864](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/879786484d10a6be14e1cb7a5a6d28ebb6b1a95f))
|
||||
* add dark mode logo ([f984a1f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/f984a1f759b14e11c9d9ccd3d389ee3b4cd94d67))
|
||||
* add dark mode swap to logo ([97b1fa0](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/97b1fa0316dff19bbfc8e34041826fb95b71f2d8))
|
||||
* add dates to selected ([091af90](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/091af909d49c31568edd00b195c10f4b45c843db))
|
||||
* add docker login ([a8d6446](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/a8d6446674d872456952146f0b31562f41a873f8))
|
||||
* add docs link to footer ([22860c4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/22860c4714c353f407ad0e2383976819a059c232))
|
||||
* add gap to distinguish ([f030da5](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/f030da549ead68a2334ed70ae32b6c19ef686a93))
|
||||
* add gap to header above md ([d3b2b40](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/d3b2b40ccbbac494a02cddc1944d698627abcc6f))
|
||||
* add guarddog scan to workflow ([14f7bdc](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/14f7bdc024868a02566b00bf2a3b52c74a210788))
|
||||
* add if to ignore harbor release result ([ce75e7c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ce75e7ca5ec723c6a30f760f930d027012da6de9))
|
||||
* add logos to category cards ([4c1da43](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/4c1da43c6833a5e36e52a39fcbe93d2a2422418e))
|
||||
* add logos to category header pages ([d7d4336](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/d7d43369dc239af1775d99b631fb86368bcac102))
|
||||
* add margin to bring in the content ([fa618b0](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/fa618b0524912eab62a670b926d70c1d29968780))
|
||||
* add photoswipe to view images embeded in posts ([ae57c60](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ae57c6093599f3bb0b6bc6b0856a96fab997e1f6))
|
||||
* add release branch, update and merge release workflow ([68f2080](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/68f2080bdaa4b5a10a0d72657d511d287288e68c))
|
||||
* add rounded option to hero component and use it for about page ([95432d9](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/95432d9059cc05afc1a97033e42d7a4322c27a54))
|
||||
* add rybbit tracking ([efad6c3](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/efad6c30d1387d97b74286d1dec158998b90c047))
|
||||
* add scroll reset on navigation ([07c7ede](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/07c7edeb0f49fd082d109f85f3407c41ee1924ca))
|
||||
* add security feature ([a7e7e5b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/a7e7e5b0e803b604801ed7aee0bdcd81781c612f))
|
||||
* add semantic release ([620b496](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/620b496957e49aa5615c043dbebb31367df38aaf))
|
||||
* add shiki to markdown rendering for code highlighting ([b7f76c5](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/b7f76c584752942d0beaec5f8d815dbe139dd1c1))
|
||||
* add thanks for Icons8 ([6cddae6](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/6cddae61ed40a4f30d121d8f054749c09ee4be59))
|
||||
* add token ([e0a3d39](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e0a3d391b314717402b9577899c37c131a73c71d))
|
||||
* add weather widget ([b6dfc73](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/b6dfc738f15737937fbc6dd438d173c0f4b1e526))
|
||||
* adjust height of fade effect ([7498870](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/7498870d9221e8f2e403596cfdcb916a59e6bd4f))
|
||||
* adjust layout of recent posts ([568220d](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/568220d39c4ede230b512b18eb28dc46d941dcca))
|
||||
* adjustment pass on spacing between sections ([b3c377f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/b3c377f62dbaf2f6f5e38dc5f023023db42e8baf))
|
||||
* better reactive layout for small screen sizes ([56d841a](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/56d841a3358df55b59b310247a4b862827ca116c))
|
||||
* change cache path ([30b2e98](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/30b2e980c0c6d13e8b66de99ee7f811110999360))
|
||||
* change responsive height of image ([e25a3d0](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e25a3d0189941cb640c18d423d2b168975a7fd38))
|
||||
* change selected blogs to switch to card form on small screens ([44bd1e4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/44bd1e48100dbeecdeecad1c2111cfdb3fd144e7))
|
||||
* consistent gaps and margins ([05d7ad6](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/05d7ad6557da8aa190396361c57e6534bf02cc2d))
|
||||
* convert hero section to use randomly selected images stored in directus ([c9cb15f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/c9cb15f201136c0579bf44106e70efafbda2e0a6))
|
||||
* convert to bun ([1f2820e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1f2820e4b49f827018a2cc1624cc9921a0a48241))
|
||||
* disable ([1573331](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1573331f8775aebff7aa9fee896bdc0dd468c16b))
|
||||
* disable security feature ([04dfecc](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/04dfecc099f4e319e6a673bcb1e774bdd07bc73e))
|
||||
* enable cache ([16e14f6](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/16e14f63efdfabbca6a31e66495761eb53bb755d))
|
||||
* enable guarddog ([19e8080](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/19e80809c16f6d30653d1e181fffa84bf4a4ffa1))
|
||||
* enable security feature ([0434480](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/04344808bdd9a22f3c8ac4c21dec16e71b398b59))
|
||||
* final refactor of sections ([a74cc77](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/a74cc775d027c95dd989355126d74a3bc2502ef5))
|
||||
* hide cards on small screens ([e2f5bbb](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e2f5bbbe9cefd893a40cbd9f14ce819da8ab1c0e))
|
||||
* ignore on docs updates ([4b58117](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/4b58117454109cbc3f40df0d1edc5185ca6415f0))
|
||||
* imporve theme toggle button ([a09a4ee](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/a09a4ee2404a5621568e141d32929353a78e750c))
|
||||
* imporvement pass over sections ([8a649b7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/8a649b7647804a63013bc9a44485f36e60dfdb7f))
|
||||
* improve behavior of showmore, fix alignment ([7f2a272](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/7f2a27248a986a1e8921269862220d82d75f89cf))
|
||||
* improve layout for single and two images ([e6d4e34](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e6d4e34a0a55260c0f2ee1d166cb6eabcf8f1f61))
|
||||
* improve logos and clickability of cards on about and apps ([63cbcdf](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/63cbcdf39b1e07a6307c6ab27d75f8edd4902e5b))
|
||||
* improve navbar, add opacity fade beneath, layout, and refactor ([5ac23f0](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/5ac23f08a4e4519ac7179ec916fdc91abca5883a))
|
||||
* install deps ([f32b75e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/f32b75e31d8ac4a3e55f86812bfa0790bfaede57))
|
||||
* major refactor of cards to standardize styles ([104fe35](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/104fe35ee8d6801d4cf1e6cfe4ad5bb9ff42d2a0))
|
||||
* make cards fixed height ([9dfcf6f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/9dfcf6f00698b472753b96117c59a5f8e1c536ea))
|
||||
* make weather fetching dynamic ([7f7f710](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/7f7f710fe84eca8fbcadc9566f56942f63224d36))
|
||||
* markdown support for rss ([6156012](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/6156012c0068cb26ee5aad1045b7f8da04412092))
|
||||
* minor tweaks ([d42ba08](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/d42ba0804197e0f1813aff9178e001a4c5deded1))
|
||||
* move all categories card to bottom of category section ([2fbc9a7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/2fbc9a764f6b93a088c46b88d6cbd9a0ad9a1152))
|
||||
* move all posts to bottom of recent section ([940342c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/940342cc3f07a0002da4596d7f7047010faf0f96))
|
||||
* move categories to directus ([93bf44f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/93bf44f89ab093563c58c5ce1f9bec530c852a87))
|
||||
* move directus to local endpoint ([197ad63](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/197ad63ada2e5a2335b4e0984bbdf8ee96d07b2f))
|
||||
* move improved components out of ui folder ([47a6373](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/47a637353cfe34d95558490474968e40c9d779c3))
|
||||
* move post metadata to snippet component ([cc8bade](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/cc8bade886fee861f9ab7ad1d54fd5415ab2ec7b))
|
||||
* move url configuration to support file ([6f1728a](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/6f1728a909c4b33a52a31677aeff29c9b5a83261))
|
||||
* organize footer to consistency ([c6f3179](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/c6f3179efba8920efed80e03eca09a3016d2ac16))
|
||||
* organize layout to consistency ([8270728](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/8270728e8fbf51b429617fbb6f14369791f58de5))
|
||||
* organize to consistency ([21085a1](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/21085a1620687f60006cabcb9eef233768e286ea))
|
||||
* organize to consistency ([62dd636](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/62dd636d4ee0b4a4fb0d4e8f10b50171aa694f15))
|
||||
* organize to consistency ([0497731](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/0497731c455158e09e7bd876fb8237910ce47826))
|
||||
* organize to consistency ([6c2c6da](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/6c2c6da91d94b04448f2b744414adeabdd6bec1c))
|
||||
* organize to consistency pass on sections ([429cf94](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/429cf9402313d97feb486a91729fbf33f10160ca))
|
||||
* redo how images, icons, and logos are handled ([76dfef4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/76dfef41774182ca4a3ec8ae36542c786a2a08b2))
|
||||
* redo layout, smaller and with logo ([3414535](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/341453510fe707ecd2892a34e3af1eb295630d4d))
|
||||
* reduce scale effect ([b8379bb](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/b8379bbc38dae300e25caab2c1e77b993744cc20))
|
||||
* refactor blog components ([6423ffb](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/6423ffba639130cafd9d7d526588a6b707f81687))
|
||||
* refactor buttons, except for theme ([342ae89](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/342ae8900af878b9ae77f82cf95eca62ad67a1d5))
|
||||
* refactor how blog cards layout, add metadata, better responsiveness ([265fd4f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/265fd4f2cbe064c2d4a4f7b063b65b1ec623fa95))
|
||||
* refactor pass along pages ([e52d85f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e52d85f9314fbb8b6aeb0667bcec8e475c1b2c5d))
|
||||
* release 2.10.0 ([fcd3057](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/fcd3057f40d1198012fba2754d95fb2109b2bcd4))
|
||||
* release 2.10.1 ([2cdef1a](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/2cdef1a5533da355daf4934d3e2a383ae65bfa4a))
|
||||
* release 2.11.0 ([440c952](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/440c95224d9f5c6e9fdaff7e7d663ca87aa358fc))
|
||||
* release 2.12.0 ([1a8473b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1a8473b96483bbac6ad26904916ecb2226e8243c))
|
||||
* release 2.13.0 ([2c9486f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/2c9486f6872a1b2126661a0c5a44c1f1e68bf6c2))
|
||||
* release 2.13.1 ([db2711d](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/db2711d8782977c639f031ac24213c356d05de57))
|
||||
* release 2.14.0 ([0416ab7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/0416ab7f9e299cbcaede6372f396a3f25bde12aa))
|
||||
* release 2.14.1 ([d415dda](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/d415dda6615cfc6b79e27212846e9b176a016ed9))
|
||||
* release 2.15.0 ([f3b8d10](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/f3b8d101064ebe4b6cf1adb17145156dbe2a209b))
|
||||
* release 2.15.1 ([c5cda00](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/c5cda006bb24b326e1d18a650689ba0590afd5db))
|
||||
* release 2.16.0 ([c69eb58](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/c69eb58a49bf99a8063b8d33118ac2a77febf9dc))
|
||||
* release 2.17.0 ([d19433a](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/d19433ae4eedaa2fec3dcc0e839e6b08035d6f5d))
|
||||
* release 2.17.1 ([cc5e975](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/cc5e975ea6adaa8acb8625de91091eb914ec67ce))
|
||||
* release 2.17.2 ([469d9ba](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/469d9ba3f723c2d085dd3bda829291ef59c5a879))
|
||||
* release 2.18.0 ([ddbcb33](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ddbcb338123ada672c90610ad40f9df578acbab6))
|
||||
* release 2.18.1 ([62066c6](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/62066c6f3bdc7c0d9fa9cf9bf636310a60b6f045))
|
||||
* release 2.19.0 ([6ddc382](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/6ddc382dac0647231a60a976d351563368d0ffdc))
|
||||
* release 2.19.1 ([f4676d1](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/f4676d151fa288175db792288bbdb86bc044a822))
|
||||
* release 2.20.0 ([2c20770](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/2c2077053bb6bff438d312c4e9df1a9764e30c90))
|
||||
* release 2.20.1 ([95ea235](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/95ea235f9f4dd1bbdcb0c6b95c437c4703c77726))
|
||||
* release 2.21.0 ([89fd0eb](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/89fd0eb7ce5cfc3b433c9a6ef11299976c94640c))
|
||||
* release 2.22.0 ([8b07837](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/8b07837c0d2ce15cf0243564dc51e863faa6cb9c))
|
||||
* release 2.23.0 ([50f050c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/50f050c0b6db2affc331178b1a5e84fb74346635))
|
||||
* release 2.24.0 ([ce9c9c3](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ce9c9c38574d907ea4c72f90e68d705c1f2f507f))
|
||||
* release 2.25.0 ([e91ffd8](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e91ffd8686381c4e0ea39c13b4d05b3644f90799))
|
||||
* release 2.3.0 ([bf73905](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/bf7390565846c3629edf4dc3a2daa00509478d15))
|
||||
* release 2.3.2 ([49969e2](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/49969e27b0884b166f521e1b44d461551eebcdfd))
|
||||
* release 2.4.0 ([d0ff16c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/d0ff16c8dc13aaa4ca390684bea495f95914de04))
|
||||
* release 2.5.0 ([880bafd](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/880bafd41ec25223c770148cb32e4b651c3997d2))
|
||||
* release 2.6.0 ([3f5682f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/3f5682f80ca4ee0c857bc335d8729f7c28d4c038))
|
||||
* release 2.7.0 ([00ef91b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/00ef91b644fbc96a0fc76ab7460c3619c5db76ae))
|
||||
* release 2.8.0 ([a57f43e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/a57f43e082fb43d438c058990bd245b62cd11bba))
|
||||
* release 2.9.0 ([0f403fa](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/0f403fa274566ad0e08b04d6566f2f922134e92a))
|
||||
* release 3.0.0, major astro update to 6.0 ([962f354](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/962f3542089a96ffaf583c716d21ca9ccc0e26e4))
|
||||
* release 3.2.0 ([ec10d45](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ec10d45fd0d73affd240eaea8b87c74c5e262bb6))
|
||||
* release 3.3.0 ([8184d42](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/8184d429421462d9e991129874293ed86e30a49a))
|
||||
* release 3.5.0 ([6ec2734](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/6ec27345c3e920be11e055e2eb370cecd4a6e651))
|
||||
* release 3.6.0 ([03f74a8](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/03f74a8181c429eeb69ebdcec6bc23ad11c6bd00))
|
||||
* remove emoji ([734e9ca](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/734e9cacaefad037c059decc41a7576315096a61))
|
||||
* remove extra spacing ([5877086](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/5877086cc3935378681035920138a708a919d374))
|
||||
* remove hardcoded descriptions ([754f6a2](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/754f6a22f00a9e19cfdc5ace2632977530be8a57))
|
||||
* remove hardcoded descriptions ([c7d3ca7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/c7d3ca725248cf5faf9c3f2b8c92816b892e02e9))
|
||||
* remove mdx ([4203b63](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/4203b638930daa3fce44de0d81c8e01bea601c01))
|
||||
* remove option ([19e17ea](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/19e17ea94713b017f392eab90a982c29debf2eae))
|
||||
* remove partytown int ([b55c3a0](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/b55c3a0e3151614cd400194922f1ac506202377d))
|
||||
* remove partytown int ([e63abf0](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e63abf03ef1d8dbc2f81fade07bd7058bd8777dd))
|
||||
* remove release-please ([07fa86b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/07fa86b17cab585088e299aab081b122db386ade))
|
||||
* remove security feature ([5e02443](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/5e02443409996b763f8dd4bc5c4e96ed38cc9083))
|
||||
* remove static robots ([4dbc5d1](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/4dbc5d12a3c5bf60e4efe4d33ab9d9c8baa62b87))
|
||||
* remove text-justify from content ([a45a4d7](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/a45a4d7dd7535ea67e738b028d87d7854165b8b3))
|
||||
* remove unused files ([00a86b1](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/00a86b120624f81d4f4b4cff9aa89510f7fa90eb))
|
||||
* remove unused packages ([505670d](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/505670dbf81bbf4b8306520e0df0683cfaea44db))
|
||||
* remove unused properties ([0a17e3b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/0a17e3b8af679df1624118bf7dea95e5fd877123))
|
||||
* rename button components to include button in name for consistency ([5271be5](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/5271be52a22d536f7b6662d4ebab98413f9e4dcd))
|
||||
* reorganize blog layout ([1f3fed9](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1f3fed93a15101e26e766b34d906ddb7853b2a90))
|
||||
* replace timeago with dayjs ([405fdf2](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/405fdf297cf5d57e499a600253741bfdd891cdd2))
|
||||
* responsive for small screen ([5b6b6e4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/5b6b6e479f0c164ccc365587c669ea02850743a8))
|
||||
* reword titles and descriptions ([68f1794](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/68f179456a6c677f5a900db984a58c6b0422ea3e))
|
||||
* scale logos ([0fc359a](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/0fc359a973e0d7b2de191b76d828f89f3e6fe694))
|
||||
* setup node ([113f42c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/113f42ca21d2a917b527e65d61934e34d5628b1a))
|
||||
* setup node for semantic release ([bf3a7ef](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/bf3a7ef261b437e877fd7c9d1a477dfac1ee0400))
|
||||
* shorten transition time ([3eae720](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/3eae720221fb5b895942589e3ac5b1cd9825b426))
|
||||
* simplify layout of the features cards ([31621e4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/31621e4f7efe5f0bfe394453f24d8120ff6f2ade))
|
||||
* slight optimization ([fe6604a](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/fe6604a5d993c516d542a5988b78f78e123241ea))
|
||||
* tweak to gradient ([20d8c73](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/20d8c7323f81a6801b7fc77b10351d3f4a24d8de))
|
||||
* tweaks to background to be more pastel ([ea15224](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/ea15224eae8b3771f8d5cd5eb68809b12336d016))
|
||||
* update BaseHead ([18211ad](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/18211ad4852ac0a0cb25d82309f91746f27ba0a1))
|
||||
* update features ([7fafa5c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/7fafa5c4cf0d708dd750a46f207ac13c92cba0f3))
|
||||
* update layout's width ([6fca640](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/6fca640fd8bca269e9295618175f62639b31053f))
|
||||
* update robots.txt ([744e72e](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/744e72efc9e405ee86ab962fdfa5a8a99a5cb162))
|
||||
* update workflow to major version ([dc08830](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/dc088306ceee7fc8ddbe0279e836511541350a90))
|
||||
* use different workflow for gitea ([1577ee4](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/1577ee4c2791cb40d2af4b891e37c6c3f4db459a))
|
||||
* use hardened image ([d464f0f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/d464f0fe43417e0965158ef5a99d3fb912fe0382))
|
||||
* use latest alpine ([e476efb](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e476efb96b14b5bdd1a10e31a676e55f4222ffab))
|
||||
* use many to one relationship for categories in directus ([e7c660c](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/e7c660c142010fd45d8fcf4027aad9f191ea394e))
|
||||
* use mask to blend content to background ([0c63c6b](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/0c63c6bef4472dc078323c937ca516d42ff0b91e))
|
||||
* use masonary style layout ([8a7b6b9](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/8a7b6b97b79a1eafc525bd25e0132af0d36a551b))
|
||||
* use metadata snippet for blog cards ([18c2b54](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/18c2b54f658e029f99e608fdfe5eb15d61fbe04a))
|
||||
* use slate for accent ([8c5488f](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/8c5488fad58710074669d1ef7618110dd724447d))
|
||||
|
||||
|
||||
### Reverts
|
||||
|
||||
* release 2.2.2 ([f34f4b2](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/f34f4b25324c2effae642ae96a8a88aed0028435))
|
||||
* release 2.2.3 ([b3bb769](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/b3bb769c477fbc5b07256a8e16b376672633228b))
|
||||
* release 2.2.4 ([fde3973](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/fde397386ce5eacc347812c8a1c6620ef387dd08))
|
||||
* release 2.2.5 ([00b63a5](https://gitea.alexlebens.dev/alexlebens/site-profile/commit/00b63a5bea3969b5c587b330a4125e876093dcd8))
|
||||
13
Dockerfile
13
Dockerfile
@@ -1,4 +1,6 @@
|
||||
FROM dhi.io/bun:1.3.10-debian13-dev AS builder
|
||||
ARG REGISTRY=dhi.io
|
||||
FROM ${REGISTRY}/bun:1.3.10-alpine3.22-dev AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json bun.lock ./
|
||||
@@ -15,16 +17,19 @@ FROM build-deps AS build
|
||||
COPY . .
|
||||
RUN bun run build
|
||||
|
||||
FROM dhi.io/bun:1.3.10-alpine3.22 AS runtime
|
||||
FROM ${REGISTRY}/bun:1.3.10-alpine3.22 AS runtime
|
||||
WORKDIR /app
|
||||
COPY --from=prod-deps /app/node_modules /app/node_modules
|
||||
COPY --from=build /app/dist /app/dist
|
||||
|
||||
LABEL version="3.3.0"
|
||||
LABEL description="Astro based personal website"
|
||||
ARG APP_VERSION=latest
|
||||
ARG APP_VERSION
|
||||
|
||||
ENV HOST=0.0.0.0
|
||||
ENV PORT=4321
|
||||
|
||||
LABEL version=$APP_VERSION
|
||||
LABEL description="Astro based personal website"
|
||||
|
||||
EXPOSE $PORT
|
||||
CMD ["bun", "run", "./dist/server/entry.mjs"]
|
||||
|
||||
@@ -13,8 +13,6 @@ import { getSiteURL } from './src/support/url';
|
||||
export default defineConfig({
|
||||
site: getSiteURL(),
|
||||
|
||||
// security: { csp: true },
|
||||
|
||||
image: {
|
||||
remotePatterns: [
|
||||
{ protocol: 'https', hostname: '*.alexlebens.net' },
|
||||
|
||||
15
package.json
15
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "site-profile",
|
||||
"type": "module",
|
||||
"version": "3.3.0",
|
||||
"version": "3.7.0",
|
||||
"homepage": "https://www.alexlebens.dev",
|
||||
"bugs": {
|
||||
"url": "https://gitea.alexlebens.dev/alexlebens/site-profile/issues",
|
||||
@@ -28,7 +28,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/check": "^0.9.7",
|
||||
"@astrojs/node": "^10.0.0",
|
||||
"@astrojs/node": "^10.0.1",
|
||||
"@astrojs/react": "^5.0.0",
|
||||
"@astrojs/rss": "^4.0.17",
|
||||
"@astrojs/sitemap": "^3.7.1",
|
||||
@@ -43,8 +43,9 @@
|
||||
"@tailwindcss/vite": "^4.2.1",
|
||||
"@types/react": "^19.2.14",
|
||||
"@types/unist": "^3.0.3",
|
||||
"astro": "^6.0.2",
|
||||
"astro": "^6.0.4",
|
||||
"astro-icon": "^1.1.5",
|
||||
"dayjs": "^1.11.20",
|
||||
"markdown-it": "^14.1.1",
|
||||
"marked": "^17.0.4",
|
||||
"marked-shiki": "^1.2.1",
|
||||
@@ -62,6 +63,11 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint-react/eslint-plugin": "^2.13.0",
|
||||
"@saithodev/semantic-release-gitea": "^2.1.0",
|
||||
"@semantic-release/changelog": "^6.0.3",
|
||||
"@semantic-release/commit-analyzer": "^13.0.1",
|
||||
"@semantic-release/git": "^10.0.1",
|
||||
"@semantic-release/release-notes-generator": "^14.1.0",
|
||||
"@tailwindcss/forms": "^0.5.11",
|
||||
"@tailwindcss/typography": "^0.5.19",
|
||||
"@types/markdown-it": "^14.1.2",
|
||||
@@ -75,7 +81,8 @@
|
||||
"prettier": "^3.8.1",
|
||||
"prettier-plugin-astro": "^0.14.1",
|
||||
"prettier-plugin-tailwindcss": "^0.7.2",
|
||||
"timeago.js": "^4.0.2",
|
||||
"semantic-release": "^25.0.3",
|
||||
"semantic-release-export-data": "^1.2.0",
|
||||
"typescript": "^5.9.3",
|
||||
"typescript-eslint": "^8.57.0"
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ const { slug, title, description, logoLight, logoDark, count, publishDate } = As
|
||||
</svg>
|
||||
{count}
|
||||
</span>
|
||||
<span class="inline-flex items-center">
|
||||
<div class="inline-flex items-center">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="16"
|
||||
@@ -68,8 +68,10 @@ const { slug, title, description, logoLight, logoDark, count, publishDate } = As
|
||||
<circle cx="12" cy="12" r="10"></circle>
|
||||
<polyline points="12 6 12 12 16 14"></polyline>
|
||||
</svg>
|
||||
{publishDate}
|
||||
</span>
|
||||
<span>
|
||||
{publishDate}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -10,7 +10,7 @@ const { dayName, label, icon, temp } = Astro.props;
|
||||
---
|
||||
|
||||
<div class="smooth-reveal-2 group flex flex-col">
|
||||
<div class="card-base w-40">
|
||||
<div class="card-base w-32 sm:w-40">
|
||||
<div class="p-5 text-center">
|
||||
<span class="card-text-description block font-bold text-xs uppercase tracking-widest">
|
||||
{dayName}
|
||||
|
||||
@@ -6,7 +6,7 @@ import type { Post } from '@lib/directusTypes';
|
||||
import CategoryCard from '@components/cards/CategoryCard.astro';
|
||||
import LargeCategoryCard from '@components/cards/LargeCategoryCard.astro';
|
||||
import directus from '@lib/directus';
|
||||
import { timeago } from '@support/time';
|
||||
import { formatFromNow } from '@support/time';
|
||||
|
||||
const global = await directus.request(readSingleton('site_global'));
|
||||
|
||||
@@ -93,7 +93,7 @@ const categories = (await directus.request(readItems('categories')))
|
||||
logoLight={category.logoLight}
|
||||
logoDark={category.logoDark}
|
||||
count={postMap.get(category.slug)?.length ?? 0}
|
||||
publishDate={timeago(postMap.get(category.slug)?.[0]?.published_date)}
|
||||
publishDate={formatFromNow(postMap.get(category.slug)?.[0]?.published_date)}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
@@ -106,7 +106,7 @@ const categories = (await directus.request(readItems('categories')))
|
||||
logoLight={global.all_logoLight}
|
||||
logoDark={global.all_logoDark}
|
||||
count={posts.length}
|
||||
publishDate={timeago(posts[0]?.published_date)}
|
||||
publishDate={formatFromNow(posts[0]?.published_date)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,34 +1,13 @@
|
||||
import { format, register } from 'timeago.js';
|
||||
import dayjs from 'dayjs';
|
||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||
|
||||
const TimeAgoConfiguration: string[][] = [
|
||||
['today', 'today'],
|
||||
['%s seconds ago', 'in %s seconds'],
|
||||
['1 minute ago', 'in 1 minute'],
|
||||
['%s minutes ago', 'in %s minutes'],
|
||||
['1 hour ago', 'in 1 hour'],
|
||||
['%s hours ago', 'in %s hours'],
|
||||
['1 day ago', 'in 1 day'],
|
||||
['%s days ago', 'in %s days'],
|
||||
['1 week ago', 'in 1 week'],
|
||||
['%s weeks ago', 'in %s weeks'],
|
||||
['1 month ago', 'in 1 month'],
|
||||
['%s months ago', 'in %s months'],
|
||||
['1 year ago', 'in 1 year'],
|
||||
['%s years ago', 'in %s years'],
|
||||
];
|
||||
dayjs.extend(relativeTime);
|
||||
|
||||
function timeago(date?: Date): string {
|
||||
function formatFromNow(date: Date | null): string {
|
||||
if (!date) {
|
||||
return 'today';
|
||||
return 'none';
|
||||
}
|
||||
|
||||
const localeFunc = (number: number, index: number, _?: number): [string, string] => {
|
||||
return TimeAgoConfiguration[index] as [string, string];
|
||||
};
|
||||
|
||||
register('timeago', localeFunc);
|
||||
|
||||
return format(date, 'timeago');
|
||||
return dayjs(date).fromNow()
|
||||
}
|
||||
|
||||
function formatDate(date: Date): string {
|
||||
@@ -46,4 +25,4 @@ function formatShortDate(date: Date): string {
|
||||
})
|
||||
}
|
||||
|
||||
export { formatDate, formatShortDate, timeago };
|
||||
export { formatFromNow, formatDate, formatShortDate, };
|
||||
|
||||
Reference in New Issue
Block a user