-
Notifications
You must be signed in to change notification settings - Fork 0
142 lines (125 loc) Β· 5.3 KB
/
deploy.yml
File metadata and controls
142 lines (125 loc) Β· 5.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: Deploy to Micro.blog
on:
push:
branches:
- main
paths:
- 'layouts/**'
- 'static/**'
- 'content/**'
- 'theme.toml'
- 'plugin.json'
workflow_dispatch:
inputs:
theme_id:
description: 'Override theme ID (optional)'
required: false
type: string
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: read
deployments: write
steps:
- name: Start deployment
uses: bobheadxi/deployments@v1
id: deployment
with:
step: start
token: ${{ secrets.GITHUB_TOKEN }}
env: production
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
cache-dependency-path: '.github/deploy/requirements.txt'
- name: Install dependencies
run: |
cd .github/deploy
pip install -r requirements.txt
- name: Generate cache key date prefix
id: cache-key
run: |
# Generate a date-based prefix for cache key (changes daily)
DATE_PREFIX=$(date -u +%Y-%m-%d)
echo "date_prefix=${DATE_PREFIX}" >> $GITHUB_OUTPUT
echo "π
Cache date prefix: ${DATE_PREFIX}"
- name: Restore session cookie from cache
id: cache-session
uses: actions/cache@v4
with:
path: .session-cookie
key: microblog-session-${{ github.repository }}-${{ steps.cache-key.outputs.date_prefix }}
restore-keys: |
microblog-session-${{ github.repository }}-
- name: Authenticate to Micro.blog
if: steps.cache-session.outputs.cache-hit != 'true'
env:
GMAIL_EMAIL: ${{ vars.GMAIL_EMAIL }}
GMAIL_APP_PASSWORD: ${{ secrets.GMAIL_APP_PASSWORD }}
MICROBLOG_EMAIL: ${{ vars.MICROBLOG_EMAIL }}
MICROBLOG_SITE_ID: ${{ vars.MICROBLOG_SITE_ID }}
run: |
echo "π No cached session found - authenticating..."
python3 .github/deploy/microblog_auth.py --output .session-cookie
- name: Validate session cookie
env:
MICROBLOG_THEME_ID: ${{ inputs.theme_id || vars.MICROBLOG_THEME_ID }}
run: |
echo "π Validating session cookie..."
python3 .github/deploy/microblog_deploy.py --validate-only
- name: Deploy to Micro.blog
env:
MICROBLOG_THEME_ID: ${{ inputs.theme_id || vars.MICROBLOG_THEME_ID }}
run: |
echo "π Deploying to Micro.blog..."
python3 .github/deploy/microblog_deploy.py --all --timeout 120
- name: Enable Cloudflare Development Mode
run: |
echo "π§ Enabling Cloudflare Development Mode (bypasses cache for 3 hours)..."
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/${{ secrets.CLOUDFLARE_ZONE_ID }}/settings/development_mode" \
-H "Authorization: Bearer ${{ secrets.CLOUDFLARE_API_TOKEN }}" \
-H "Content-Type: application/json" \
--data '{"value":"on"}' \
--silent --show-error
echo "β
Development mode enabled - changes will be visible immediately"
- name: Create deployment summary
if: always()
run: |
echo "## Micro.blog Deployment" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
# Session cache status with monitoring info
if [ "${{ steps.cache-session.outputs.cache-hit }}" = "true" ]; then
echo "- π **Authentication:** Used cached session β
" >> $GITHUB_STEP_SUMMARY
echo " - Cache key: \`microblog-session-${{ github.repository }}-${{ steps.cache-key.outputs.date_prefix }}\`" >> $GITHUB_STEP_SUMMARY
else
echo "- π **Authentication:** Fresh login via email π§" >> $GITHUB_STEP_SUMMARY
echo " - β οΈ Email polling may take up to 15 minutes if Micro.blog is slow" >> $GITHUB_STEP_SUMMARY
fi
if [ "${{ job.status }}" = "success" ]; then
echo "- β
**Deployment Status:** Successful" >> $GITHUB_STEP_SUMMARY
else
echo "- β **Deployment Status:** Failed" >> $GITHUB_STEP_SUMMARY
echo " - If auth failed, retry manually - email may already be waiting" >> $GITHUB_STEP_SUMMARY
fi
echo "- π¨ **Theme ID:** ${{ inputs.theme_id || vars.MICROBLOG_THEME_ID }}" >> $GITHUB_STEP_SUMMARY
echo "- π **Completed:** $(date -u '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Changed Files" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
git diff --name-only HEAD~1 HEAD | grep -E '(layouts/|static/|theme\.toml|plugin\.json)' || echo "No theme files changed"
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
- name: Update deployment status
uses: bobheadxi/deployments@v1
if: always()
with:
step: finish
token: ${{ secrets.GITHUB_TOKEN }}
status: ${{ job.status }}
env: ${{ steps.deployment.outputs.env }}
deployment_id: ${{ steps.deployment.outputs.deployment_id }}
env_url: https://micro.blog/hatcher