← Home

🔄GitHub Actions

⌘K
ðŸĪ–
Claude Code AI Tools
ðŸĪ—
Hugging Face AI Tools
ðŸĶœ
LangChain AI Tools
🧠
Keras AI Tools
ðŸĶ™
Ollama AI Tools
🐍
Python Programming Languages
ðŸŸĻ
JavaScript Programming Languages
🔷
TypeScript Programming Languages
⚛ïļ
React Programming Languages
ðŸđ
Go Programming Languages
ðŸĶ€
Rust Programming Languages
📊
MATLAB Programming Languages
🗄ïļ
SQL Programming Languages
⚙ïļ
C/C++ Programming Languages
☕
Java Programming Languages
ðŸŸĢ
C# Programming Languages
🍎
Swift Programming Languages
🟠
Kotlin Programming Languages
â–ē
Next.js Programming Languages
💚
Vue.js Programming Languages
ðŸ”Ĩ
Svelte Programming Languages
ðŸŽĻ
Tailwind CSS Programming Languages
💚
Node.js Programming Languages
🌐
HTML Programming Languages
ðŸŽĻ
CSS/SCSS Programming Languages
🐘
PHP Programming Languages
💎
Ruby Programming Languages
ðŸ”ī
Scala Programming Languages
📊
R Programming Languages
ðŸŽŊ
Dart Programming Languages
💧
Elixir Programming Languages
🌙
Lua Programming Languages
🐊
Perl Programming Languages
🅰ïļ
Angular Programming Languages
🚂
Express.js Programming Languages
ðŸą
NestJS Programming Languages
ðŸ›Īïļ
Ruby on Rails Programming Languages
◾ïļ
GraphQL Programming Languages
🟊
Haskell Programming Languages
💚
Nuxt.js Programming Languages
🔷
SolidJS Programming Languages
⚡
htmx Programming Languages
ðŸ’ŧ
VS Code Development Tools
🧠
PyCharm Development Tools
📓
Jupyter Development Tools
🧠
IntelliJ IDEA Development Tools
💚
Neovim Development Tools
ðŸ”Ū
Emacs Development Tools
🔀
Git DevOps & CLI
ðŸģ
Docker DevOps & CLI
â˜ļïļ
Kubernetes DevOps & CLI
☁ïļ
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux Commands DevOps & CLI
ðŸ’ŧ
Bash Scripting DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
ðŸ”Ļ
Makefile DevOps & CLI
🧊
Pytest DevOps & CLI
🊟
Windows DevOps & CLI
ðŸ“Ķ
Package Managers DevOps & CLI
🍎
macOS DevOps & CLI
🏗ïļ
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
⎈
Helm DevOps & CLI
ðŸ”Ļ
Jenkins DevOps & CLI
ðŸ”Ĩ
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
ðŸ’ŧ
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁ïļ
Azure CLI DevOps & CLI
☁ïļ
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂ïļ
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
ðŸ”Ē
NumPy Databases & Data
🐞
Pandas Databases & Data
ðŸ”Ĩ
PyTorch Databases & Data
🧠
TensorFlow Databases & Data
📈
Matplotlib Databases & Data
🐘
PostgreSQL Databases & Data
🐎
MySQL Databases & Data
🍃
MongoDB Databases & Data
ðŸ”ī
Redis Databases & Data
🔍
Elasticsearch Databases & Data
ðŸĪ–
Scikit-learn Databases & Data
👁ïļ
OpenCV Databases & Data
⚡
Apache Spark Databases & Data
ðŸŠķ
SQLite Databases & Data
⚡
Supabase Databases & Data
ðŸ”ĩ
Neo4j Databases & Data
ðŸ“Ļ
Apache Kafka Databases & Data
🐰
RabbitMQ Databases & Data
ðŸ”Ī
Regex Utilities
📝
Markdown Utilities
📄
LaTeX Utilities
🔐
SSH & GPG Utilities
🌐
curl & HTTP Utilities
📜
reStructuredText Utilities
🚀
Postman Utilities
🎎
FFmpeg Utilities
🖞ïļ
ImageMagick Utilities
🔍
ripgrep Utilities
🔍
fzf Utilities
📗
Microsoft Excel Office Applications
📘
Microsoft Word Office Applications
📙
Microsoft PowerPoint Office Applications
📝
Hancom Hangul Hancom Office
ðŸ“―ïļ
Hancom Hanshow Hancom Office
📊
Hancom Hancell Hancom Office
📄
Google Docs Google Workspace
📊
Google Sheets Google Workspace
ðŸ“―ïļ
Google Slides Google Workspace
🔌
Cadence Virtuoso EDA & Hardware
⚙ïļ
Synopsys EDA EDA & Hardware
💎
Verilog & VHDL EDA & Hardware
⚡
LTSpice EDA & Hardware
🔧
KiCad EDA & Hardware
📝
Notion Productivity
💎
Obsidian Productivity
💎
Slack Productivity
ðŸŽŪ
Discord Productivity
ðŸŽĻ
Figma Design Tools
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest Testing
⚡
Vitest Testing
🎭
Playwright Testing
ðŸŒē
Cypress Testing
🌐
Selenium Testing
💙
Flutter Mobile Development
ðŸ“ą
React Native Mobile Development
🍎
SwiftUI Mobile Development
ðŸ“ą
Expo Mobile Development
🐍
Django Web Frameworks
⚡
FastAPI Web Frameworks
ðŸŒķïļ
Flask Web Frameworks
🍃
Spring Boot Web Frameworks
ðŸļ
Gin Web Frameworks
⚡
Vite Build Tools
ðŸ“Ķ
Webpack Build Tools
⚡
esbuild Build Tools
🐘
Gradle Build Tools
ðŸŠķ
Maven Build Tools
🔧
CMake Build Tools
ðŸŽŪ
Unity Game Development
ðŸĪ–
Godot Game Development
🔌
Arduino Embedded & IoT
🔍
Nmap Security
🐕
Datadog Monitoring
📖
Swagger/OpenAPI Documentation
No results found
EN KO

📋 Workflow Basics

🏗ïļ Workflow Structure

name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm test Basic workflow structure

ðŸŽŊ Triggers (on)

on: push Trigger on any push
on: [push, pull_request] Multiple events
on: push: branches: [main, develop] paths: - "src/**" - "!**.md" Branch and path filters
on: schedule: - cron: "0 0 * * *" Scheduled (daily at midnight)
on: workflow_dispatch: inputs: environment: type: choice options: [dev, prod] Manual trigger with inputs
on: release: types: [published] On release published
on: workflow_call: inputs: config: type: string required: true Reusable workflow

⚙ïļ Jobs

🔧 Job Configuration

jobs: build: runs-on: ubuntu-latest Basic job on Ubuntu
jobs: build: runs-on: windows-latest Run on Windows
jobs: build: runs-on: macos-latest Run on macOS
jobs: build: runs-on: [self-hosted, linux] Self-hosted runner
jobs: test: needs: build runs-on: ubuntu-latest Job dependency
jobs: deploy: needs: [build, test] if: github.ref == 'refs/heads/main' Conditional job
jobs: build: timeout-minutes: 30 continue-on-error: true Timeout and error handling

📊 Matrix Strategy

jobs: test: strategy: matrix: node: [16, 18, 20] os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} Multi-version matrix
strategy: matrix: include: - node: 18 experimental: true exclude: - os: windows-latest node: 16 Include/exclude combinations
strategy: fail-fast: false max-parallel: 2 Matrix options

🔀 Concurrency

concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true Cancel duplicate workflows

ðŸ‘Ģ Steps

📝 Step Basics

steps: - name: Checkout uses: actions/checkout@v4 Use an action
steps: - name: Run script run: echo "Hello" Run shell command
steps: - name: Multi-line script run: | echo "Line 1" echo "Line 2" Multi-line script
steps: - run: dir shell: pwsh Specify shell (pwsh, bash, python)
steps: - name: Conditional step if: github.event_name == 'push' run: echo "Pushed" Conditional step
steps: - name: Always run if: always() run: echo "Cleanup" Always run (even on failure)

📁 Working Directory & Timeout

steps: - run: npm test working-directory: ./frontend Set working directory
steps: - run: long-task timeout-minutes: 10 Step timeout
steps: - run: risky-command continue-on-error: true Continue on error

🔌 Common Actions

⭐ Essential Actions

- uses: actions/checkout@v4 with: fetch-depth: 0 # Full history Checkout repository
- uses: actions/setup-node@v4 with: node-version: 20 cache: npm Setup Node.js with cache
- uses: actions/setup-python@v5 with: python-version: "3.11" cache: pip Setup Python
- uses: actions/setup-java@v4 with: java-version: 17 distribution: temurin Setup Java
- uses: actions/setup-go@v5 with: go-version: "1.21" Setup Go

ðŸ’ū Caching & Artifacts

- uses: actions/cache@v4 with: path: ~/.npm key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-npm- Cache dependencies
- uses: actions/upload-artifact@v4 with: name: build-output path: dist/ retention-days: 5 Upload artifact
- uses: actions/download-artifact@v4 with: name: build-output path: ./dist Download artifact

ðŸģ Docker & Registry

- uses: docker/setup-buildx-action@v3 Setup Docker Buildx
- uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} Login to GHCR
- uses: docker/build-push-action@v5 with: push: true tags: ghcr.io/${{ github.repository }}:latest cache-from: type=gha cache-to: type=gha,mode=max Build and push Docker image

🔐 Variables & Secrets

📋 Environment Variables

env: NODE_ENV: production API_URL: https://api.example.com Workflow-level env
jobs: build: env: CI: true Job-level env
steps: - run: echo $MY_VAR env: MY_VAR: value Step-level env
steps: - run: echo "value=${{ env.MY_VAR }}" >> $GITHUB_OUTPUT id: step1 - run: echo ${{ steps.step1.outputs.value }} Pass output between steps

🔑 Secrets

steps: - run: echo "${{ secrets.API_KEY }}" Use repository secret
steps: - run: ./deploy.sh env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET }} Secrets as env vars
jobs: deploy: environment: production steps: - run: echo ${{ secrets.PROD_KEY }} Environment-specific secrets

ðŸŽŦ GitHub Token

steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} Auto-generated token
permissions: contents: write pull-requests: write issues: read Token permissions

ðŸ“Ķ Contexts & Expressions

🐙 GitHub Context

${{ github.repository }} owner/repo
${{ github.ref }} refs/heads/main or refs/tags/v1
${{ github.sha }} Commit SHA
${{ github.actor }} User who triggered
${{ github.event_name }} push, pull_request, etc.
${{ github.run_number }} Workflow run number
${{ github.workspace }} Workspace path

ðŸ§Ū Expressions

if: ${{ github.ref == 'refs/heads/main' }} String comparison
if: contains(github.event.head_commit.message, '[skip ci]') Contains check
if: startsWith(github.ref, 'refs/tags/') Starts with check
if: success() && github.ref == 'refs/heads/main' Combined conditions
if: failure() Run on failure
if: cancelled() Run on cancel
${{ toJson(github.event) }} Convert to JSON
${{ fromJson(needs.job1.outputs.matrix) }} Parse JSON

🚀 Deployment

🌍 Environments

jobs: deploy: environment: name: production url: https://example.com steps: - run: ./deploy.sh Deploy to environment
jobs: deploy: environment: name: staging concurrency: group: staging cancel-in-progress: true Environment with concurrency

📄 GitHub Pages

permissions: pages: write id-token: write jobs: deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - uses: actions/configure-pages@v4 - uses: actions/upload-pages-artifact@v3 with: path: ./dist - uses: actions/deploy-pages@v4 id: deployment Deploy to GitHub Pages

☁ïļ Cloud Deployments

- uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_KEY }} aws-secret-access-key: ${{ secrets.AWS_SECRET }} aws-region: us-east-1 - run: aws s3 sync ./dist s3://bucket Deploy to AWS S3
- uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - uses: azure/webapps-deploy@v2 with: app-name: my-app package: ./dist Deploy to Azure

ðŸ’Ą Tips & Best Practices

âœĻ Useful Tips

  • Reusable Workflows: Use workflow_call to create reusable workflows
  • Composite Actions: Create action.yml for reusable step sequences
  • Path Filters: Use paths/paths-ignore to reduce unnecessary runs
  • Timeouts: Set timeout-minutes to prevent hung workflows
  • Concurrency: Use concurrency groups to cancel duplicate runs
  • Cache Everything: Cache dependencies, build outputs, Docker layers
  • Minimal Permissions: Use permissions key to limit GITHUB_TOKEN scope
  • Debug with tmate: Use mxschmitt/action-tmate for SSH debugging