mirror of
https://github.com/softinio/softinio.com.git
synced 2025-09-05 11:16:41 -07:00
Merge pull request #68 from softinio/migrate-to-github-actions
Some checks are pending
Build and Deploy / build-and-deploy (push) Waiting to run
Some checks are pending
Build and Deploy / build-and-deploy (push) Waiting to run
migrate to github actions
This commit is contained in:
commit
57ddb18949
5 changed files with 152 additions and 37 deletions
67
.github/workflows/deploy.yml
vendored
Normal file
67
.github/workflows/deploy.yml
vendored
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
name: Build and Deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Nix
|
||||||
|
uses: cachix/install-nix-action@v31
|
||||||
|
with:
|
||||||
|
nix_path: nixpkgs=channel:nixos-unstable
|
||||||
|
|
||||||
|
- name: Setup Nix store cache
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: /nix/store
|
||||||
|
key: ${{ runner.os }}-nix-store-${{ hashFiles('**/flake.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-nix-store-
|
||||||
|
|
||||||
|
- name: Cache flake inputs
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ~/.cache/nix
|
||||||
|
key: ${{ runner.os }}-nix-flake-${{ hashFiles('**/flake.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-nix-flake-
|
||||||
|
|
||||||
|
- name: Build site (pull request)
|
||||||
|
if: github.event_name == 'pull_request'
|
||||||
|
run: |
|
||||||
|
# Update base URL for PR preview
|
||||||
|
sed -i "s|base_url = \"https://www.softinio.com\"|base_url = \"https://${{ github.head_ref }}.softinio.pages.dev\"|" ./config.toml
|
||||||
|
nix build
|
||||||
|
nix flake show
|
||||||
|
ls result
|
||||||
|
echo "Preview URL: https://${{ github.head_ref }}.softinio.pages.dev"
|
||||||
|
|
||||||
|
- name: Deploy to Cloudflare Pages (pull request)
|
||||||
|
if: github.event_name == 'pull_request'
|
||||||
|
run: |
|
||||||
|
nix develop --command wrangler pages deploy result --branch=${{ github.head_ref }} --project-name=softinio --commit-dirty=true
|
||||||
|
env:
|
||||||
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build site (main branch)
|
||||||
|
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
||||||
|
run: |
|
||||||
|
nix build
|
||||||
|
|
||||||
|
- name: Deploy to Cloudflare Pages (main branch)
|
||||||
|
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
||||||
|
run: |
|
||||||
|
nix develop --command wrangler pages deploy result --project-name=softinio --commit-dirty=true
|
||||||
|
env:
|
||||||
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
@ -1,35 +0,0 @@
|
||||||
steps:
|
|
||||||
- name: build
|
|
||||||
image: nixos/nix
|
|
||||||
commands:
|
|
||||||
- echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
|
|
||||||
- nix profile install nixpkgs#gnused --impure
|
|
||||||
- sed -i "s|base_url = \"https://www.softinio.com\"|base_url = \"https://$CI_COMMIT_BRANCH.softinio.com\"|" ./config.toml
|
|
||||||
- nix build
|
|
||||||
- nix flake show
|
|
||||||
- ls result
|
|
||||||
- nix develop --command wrangler pages deploy result --branch=$CI_COMMIT_BRANCH --project-name=softinio --commit-dirty=true
|
|
||||||
environment:
|
|
||||||
CLOUDFLARE_ACCOUNT_ID:
|
|
||||||
from_secret: cloudflare_account_id
|
|
||||||
CLOUDFLARE_API_TOKEN:
|
|
||||||
from_secret: cloudflare_api_token
|
|
||||||
when:
|
|
||||||
event: [push]
|
|
||||||
branch:
|
|
||||||
exclude: [ main ]
|
|
||||||
|
|
||||||
- name: deploy
|
|
||||||
image: nixos/nix
|
|
||||||
commands:
|
|
||||||
- echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
|
|
||||||
- nix build
|
|
||||||
- nix develop --command wrangler pages deploy result --project-name=softinio --commit-dirty=true
|
|
||||||
environment:
|
|
||||||
CLOUDFLARE_ACCOUNT_ID:
|
|
||||||
from_secret: cloudflare_account_id
|
|
||||||
CLOUDFLARE_API_TOKEN:
|
|
||||||
from_secret: cloudflare_api_token
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
branch: main
|
|
83
CLAUDE.md
Normal file
83
CLAUDE.md
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This is a personal blog and portfolio website for Salar Rahmanian (softinio.com) built with Zola static site generator, managed with Nix Flakes, and deployed to Cloudflare Pages.
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
### Development
|
||||||
|
```bash
|
||||||
|
# Enter development shell with all dependencies
|
||||||
|
nix develop
|
||||||
|
|
||||||
|
# Start local development server
|
||||||
|
zola serve
|
||||||
|
|
||||||
|
# Build the site
|
||||||
|
zola build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Building with Nix
|
||||||
|
```bash
|
||||||
|
# Build the site using Nix
|
||||||
|
nix build
|
||||||
|
|
||||||
|
# The output will be in result/
|
||||||
|
|
||||||
|
# Update flake inputs to latest versions
|
||||||
|
nix flake update
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deployment
|
||||||
|
```bash
|
||||||
|
# Deploy to Cloudflare Pages
|
||||||
|
wrangler pages deploy public/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
```bash
|
||||||
|
# Check for broken links and validate build
|
||||||
|
zola check
|
||||||
|
```
|
||||||
|
|
||||||
|
### CI/CD
|
||||||
|
|
||||||
|
This project uses GitHub Actions for continuous integration and deployment:
|
||||||
|
|
||||||
|
- **Main branch pushes**: Deploys directly to production (https://www.softinio.com)
|
||||||
|
- **Pull requests**: Deploys to preview URLs (https://[branch-name].softinio.com)
|
||||||
|
- **Other branch pushes**: No deployment (only builds on PR creation)
|
||||||
|
|
||||||
|
Required secrets in GitHub repository settings:
|
||||||
|
- `CLOUDFLARE_ACCOUNT_ID`: Your Cloudflare account ID
|
||||||
|
- `CLOUDFLARE_API_TOKEN`: Cloudflare API token with Pages:Edit permissions
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Technology Stack
|
||||||
|
- **Static Site Generator**: Zola (Rust-based) - NOT Hugo
|
||||||
|
- **Theme**: Tabi theme (pinned to specific commit in flake.nix)
|
||||||
|
- **Package Management**: Nix Flakes
|
||||||
|
- **Hosting**: Cloudflare Pages
|
||||||
|
- **Comments**: Isso (self-hosted at comments.softinio.com)
|
||||||
|
- **Analytics**: Matomo (self-hosted at wisdom.softinio.com)
|
||||||
|
|
||||||
|
### Content Structure
|
||||||
|
- `content/post/`: Main blog articles with full metadata
|
||||||
|
- `content/projects/`: Project showcase pages
|
||||||
|
- `content/talks/`: Conference presentations
|
||||||
|
- `content/til/`: "Today I Learned" short posts
|
||||||
|
- `content/archived/`: Archived posts
|
||||||
|
|
||||||
|
### Key Configuration Files
|
||||||
|
- `config.toml`: Zola site configuration with theme settings, CSP headers, and integrations
|
||||||
|
- `flake.nix`: Nix development environment and build configuration
|
||||||
|
- `wrangler.toml`: Cloudflare deployment configuration
|
||||||
|
|
||||||
|
### Template Customizations
|
||||||
|
- `templates/partials/custom_header.html`: Matomo analytics integration
|
||||||
|
- `templates/shortcodes/`: YouTube and PeerTube video embedding
|
||||||
|
- `templates/subscribe.html`: Newsletter subscription page
|
|
@ -1,4 +1,4 @@
|
||||||
[](https://ci.softinio.com/repos/1)
|
[](https://github.com/softinio/softinio.com/actions/workflows/deploy.yml)
|
||||||
|
|
||||||
# softinio.com
|
# softinio.com
|
||||||
Personal Blog of Salar Rahmanian, https://www.softinio.com
|
Personal Blog of Salar Rahmanian, https://www.softinio.com
|
||||||
|
|
|
@ -3,7 +3,7 @@ theme = "tabi"
|
||||||
title = "Salar Rahmanian"
|
title = "Salar Rahmanian"
|
||||||
description = "Software Engineer based in San Francisco Bay Area"
|
description = "Software Engineer based in San Francisco Bay Area"
|
||||||
author = "Salar Rahmanian"
|
author = "Salar Rahmanian"
|
||||||
generate_feed = true
|
generate_feeds = true
|
||||||
compile_sass = true
|
compile_sass = true
|
||||||
minify_html = true
|
minify_html = true
|
||||||
build_search_index = true
|
build_search_index = true
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue