-### Using Secrets
+## Using Secrets
```yaml
steps:
- name: Deploy
@@ -484,7 +492,7 @@ steps:
-### GITHUB_TOKEN Permissions
+## GITHUB_TOKEN Permissions
```yaml
permissions:
contents: read
@@ -505,11 +513,11 @@ Default token is scoped per-repo
-### Build, Test & Publish
+## Build, Test & Publish
```yaml
jobs:
build:
@@ -537,11 +545,11 @@ jobs:
-### Deploy to Azure
+## Deploy to Azure
```yaml
deploy:
needs: build
@@ -572,14 +580,14 @@ p { font-size: 85%; margin: 0.2em 0; }
-### 📦 Artifacts — Share between jobs
+## 📦 Artifacts — Share between jobs
```yaml
- uses: actions/upload-artifact@v4
with:
@@ -595,7 +603,7 @@ p { font-size: 88%; margin: 0.2em 0; }
-### ⚡ Caching — Speed up builds
+## ⚡ Caching — Speed up builds
```yaml
- uses: actions/setup-node@v4
with:
@@ -641,7 +649,7 @@ Or manual cache control:
@@ -649,7 +657,7 @@ h1 { font-size: 1.6em; margin-bottom: 0.1em; }
-### 🔄 Reusable Workflows
+## 🔄 Reusable Workflows
```yaml
# .github/workflows/ci.yml
on:
@@ -672,7 +680,7 @@ jobs:
-### 🧩 Composite Actions
+## 🧩 Composite Actions
```yaml
# .github/actions/setup/action.yml
name: 'Project Setup'
@@ -739,7 +747,7 @@ h2 { font-size: 1.5em; margin-bottom: 0.3em; }
@@ -747,7 +755,7 @@ p { font-size: 85%; margin: 0.15em 0; }
-### 🌍 Environments
+## 🌍 Environments
- **Protection rules** — require approvals
- **Wait timers** — delay before deploy
- **Branch restrictions** — only `main` → prod
@@ -765,7 +773,7 @@ jobs:
-### 🔑 OIDC for Cloud Auth
+## 🔑 OIDC for Cloud Auth
No stored secrets — federated identity
```yaml
@@ -885,7 +893,7 @@ updates:
## Key Principles of the Framework
-