mirror of
https://github.com/tiennm99/blog.git
synced 2026-10-11 03:13:10 +00:00
Eliminates the job responsible for deploying to GitHub Pages in the workflow, leaving only the CloudFlare Pages deployment. This streamlines deployment targets and reduces redundancy.
131 lines
4.0 KiB
YAML
131 lines
4.0 KiB
YAML
name: Build and deploy
|
|
on:
|
|
schedule:
|
|
- cron: "0 0 * * *"
|
|
push:
|
|
branches:
|
|
- main
|
|
workflow_dispatch:
|
|
permissions:
|
|
contents: read
|
|
pages: write
|
|
id-token: write
|
|
deployments: write
|
|
concurrency:
|
|
group: pages
|
|
cancel-in-progress: true
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
DART_SASS_VERSION: 1.83.0
|
|
GO_VERSION: 1.23.4
|
|
HUGO_VERSION: 0.140.2
|
|
NODE_VERSION: 22.12.0
|
|
TZ: Asia/Ho_Chi_Minh
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v5
|
|
with:
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
cache: false
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NODE_VERSION }}
|
|
- name: Setup Pages
|
|
id: pages
|
|
uses: actions/configure-pages@v5
|
|
- name: Create directory for user-specific executable files
|
|
run: |
|
|
mkdir -p "${HOME}/.local"
|
|
- name: Install Dart Sass
|
|
run: |
|
|
curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz"
|
|
tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz"
|
|
rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz"
|
|
echo "${HOME}/.local/dart-sass" >> "${GITHUB_PATH}"
|
|
- name: Install Hugo
|
|
run: |
|
|
curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz"
|
|
mkdir "${HOME}/.local/hugo"
|
|
tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz"
|
|
rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz"
|
|
echo "${HOME}/.local/hugo" >> "${GITHUB_PATH}"
|
|
- name: Verify installations
|
|
run: |
|
|
echo "Dart Sass: $(sass --version)"
|
|
echo "Go: $(go version)"
|
|
echo "Hugo: $(hugo version)"
|
|
echo "Node.js: $(node --version)"
|
|
- name: Install Node.js dependencies
|
|
run: |
|
|
[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true
|
|
- name: Configure Git
|
|
run: |
|
|
git config core.quotepath false
|
|
- name: Cache restore
|
|
id: cache-restore
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: ${{ runner.temp }}/hugo_cache
|
|
key: hugo-${{ github.run_id }}
|
|
restore-keys:
|
|
hugo-
|
|
- name: Build the site
|
|
run: |
|
|
hugo \
|
|
--gc \
|
|
--minify \
|
|
--baseURL "https://miti99.com/" \
|
|
--cacheDir "${{ runner.temp }}/hugo_cache"
|
|
- name: Cache save
|
|
id: cache-save
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: ${{ runner.temp }}/hugo_cache
|
|
key: ${{ steps.cache-restore.outputs.cache-primary-key }}
|
|
- name: Upload artifact
|
|
uses: actions/upload-pages-artifact@v3
|
|
with:
|
|
path: ./public
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
name: Deploy to CloudFlare Pages
|
|
needs: build
|
|
steps:
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: github-pages
|
|
path: .
|
|
- name: Extract artifact
|
|
run: |
|
|
mkdir -p public
|
|
tar -xf artifact.tar -C public
|
|
- name: Deploy
|
|
uses: cloudflare/wrangler-action@v3
|
|
with:
|
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
command: pages deploy ./public --project-name=miti99
|
|
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
|
|
submit-indexnow:
|
|
runs-on: ubuntu-latest
|
|
name: Check and submit to IndexNow
|
|
needs: deploy
|
|
steps:
|
|
- name: indexnow-action
|
|
uses: bojieyang/indexnow-action@v2
|
|
with:
|
|
sitemap-location: 'https://miti99.com/sitemap.xml'
|
|
key: ${{ secrets.INDEXNOW_KEY }}
|