Skip to content

Kaizen

Kaizen #131

Workflow file for this run

name: Kaizen
on:
workflow_dispatch:
schedule:
- cron: "42 09,23 * * *" # every day at [09,23]:42 UTC
push:
branches:
- main
paths:
- 'algorithms/**'
- 'system-design/**'
permissions:
contents: read
jobs:
consolidate-data:
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- name: 🛡️ Harden the runner
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
with:
egress-policy: audit
- name: 📦 Checkout code
uses: actions/checkout@v5
with:
token: ${{ secrets.RELEASE_PAT }}
- name: 🛠️ Setup git
run: |
git config --global user.name "radagastbot[bot]"
git config --global user.email "radagastbot[bot]@users.noreply.github.com"
- name: ⬇️ Get latest parser asset URL
id: get_asset
run: |
ASSET_URL=$(curl -sL -H "Accept: application/vnd.github.v3+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/josimar-silva/kaizen/releases" | \
jq -r '[.[] | select(.tag_name | startswith("kaizen-parser/"))][0].assets[] | select(.name | test("kaizen-.*-x86_64-unknown-linux-musl.tar.gz$")).browser_download_url')
echo "url=$ASSET_URL" >> "$GITHUB_OUTPUT"
- name: ⬇️ Download parser
run: curl -L -o kaizen-parser.tar.gz '${{ steps.get_asset.outputs.url }}'
- name: 📦 Unzip parser
run: tar -xzf kaizen-parser.tar.gz
- name: ⚙️ Install parser
run: mv kaizen-*/parser .
- name: 📝 Generate kaizen data
run: |
./parser parse \
--repository https://github.com/josimar-silva/kaizen \
--output data.json \
--analysis-dirs algorithms/analysis,system-design/analysis
env:
RUST_LOG: info
- name: ⬆️ Update website data
run: mv -f data.json website/public
- name: 📤 Push new data to repo
run: |
git add website/public/data.json
if git diff --staged --quiet; then
echo "もう!"
else
git commit -m "kaizen($(date +'%Y-%m-%d')): publish data for ${{ github.sha }}"
git push
fi