← 홈

🔄GitHub Actions

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 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 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

📋 워크플로우 기본

🏗️ 워크플로우 구조

name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm test 기본 워크플로우 구조

🎯 트리거 (on)

on: push 모든 push에서 트리거
on: [push, pull_request] 여러 이벤트
on: push: branches: [main, develop] paths: - "src/**" - "!**.md" 브랜치 및 경로 필터
on: schedule: - cron: "0 0 * * *" 스케줄 (매일 자정)
on: workflow_dispatch: inputs: environment: type: choice options: [dev, prod] 입력이 있는 수동 트리거
on: release: types: [published] 릴리스 게시 시
on: workflow_call: inputs: config: type: string required: true 재사용 가능한 워크플로우

⚙️ Job

🔧 Job 설정

jobs: build: runs-on: ubuntu-latest Ubuntu에서 기본 job
jobs: build: runs-on: windows-latest Windows에서 실행
jobs: build: runs-on: macos-latest macOS에서 실행
jobs: build: runs-on: [self-hosted, linux] 셀프 호스팅 러너
jobs: test: needs: build runs-on: ubuntu-latest Job 의존성
jobs: deploy: needs: [build, test] if: github.ref == 'refs/heads/main' 조건부 job
jobs: build: timeout-minutes: 30 continue-on-error: true 타임아웃 및 오류 처리

📊 매트릭스 전략

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 }} 다중 버전 매트릭스
strategy: matrix: include: - node: 18 experimental: true exclude: - os: windows-latest node: 16 조합 포함/제외
strategy: fail-fast: false max-parallel: 2 매트릭스 옵션

🔀 동시성

concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true 중복 워크플로우 취소

👣 스텝

📝 스텝 기본

steps: - name: Checkout uses: actions/checkout@v4 액션 사용
steps: - name: Run script run: echo "Hello" 셸 명령 실행
steps: - name: Multi-line script run: | echo "Line 1" echo "Line 2" 여러 줄 스크립트
steps: - run: dir shell: pwsh 셸 지정 (pwsh, bash, python)
steps: - name: Conditional step if: github.event_name == 'push' run: echo "Pushed" 조건부 스텝
steps: - name: Always run if: always() run: echo "Cleanup" 항상 실행 (실패 시에도)

📁 작업 디렉토리 & 타임아웃

steps: - run: npm test working-directory: ./frontend 작업 디렉토리 설정
steps: - run: long-task timeout-minutes: 10 스텝 타임아웃
steps: - run: risky-command continue-on-error: true 오류 시 계속

🔌 일반 액션

필수 액션

- uses: actions/checkout@v4 with: fetch-depth: 0 # Full history 저장소 체크아웃
- uses: actions/setup-node@v4 with: node-version: 20 cache: npm 캐시와 함께 Node.js 설정
- uses: actions/setup-python@v5 with: python-version: "3.11" cache: pip Python 설정
- uses: actions/setup-java@v4 with: java-version: 17 distribution: temurin Java 설정
- uses: actions/setup-go@v5 with: go-version: "1.21" Go 설정

💾 캐싱 & 아티팩트

- uses: actions/cache@v4 with: path: ~/.npm key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-npm- 의존성 캐시
- uses: actions/upload-artifact@v4 with: name: build-output path: dist/ retention-days: 5 아티팩트 업로드
- uses: actions/download-artifact@v4 with: name: build-output path: ./dist 아티팩트 다운로드

🐳 Docker & 레지스트리

- uses: docker/setup-buildx-action@v3 Docker Buildx 설정
- uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} 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 Docker 이미지 빌드 및 푸시

🔐 변수 & 시크릿

📋 환경 변수

env: NODE_ENV: production API_URL: https://api.example.com 워크플로우 레벨 env
jobs: build: env: CI: true Job 레벨 env
steps: - run: echo $MY_VAR env: MY_VAR: value 스텝 레벨 env
steps: - run: echo "value=${{ env.MY_VAR }}" >> $GITHUB_OUTPUT id: step1 - run: echo ${{ steps.step1.outputs.value }} 스텝 간 출력 전달

🔑 시크릿

steps: - run: echo "${{ secrets.API_KEY }}" 저장소 시크릿 사용
steps: - run: ./deploy.sh env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET }} 시크릿을 env 변수로
jobs: deploy: environment: production steps: - run: echo ${{ secrets.PROD_KEY }} 환경별 시크릿

🎫 GitHub 토큰

steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} 자동 생성 토큰
permissions: contents: write pull-requests: write issues: read 토큰 권한

📦 컨텍스트 & 표현식

🐙 GitHub 컨텍스트

${{ github.repository }} owner/repo
${{ github.ref }} refs/heads/main 또는 refs/tags/v1
${{ github.sha }} 커밋 SHA
${{ github.actor }} 트리거한 사용자
${{ github.event_name }} push, pull_request 등
${{ github.run_number }} 워크플로우 실행 번호
${{ github.workspace }} 워크스페이스 경로

🧮 표현식

if: ${{ github.ref == 'refs/heads/main' }} 문자열 비교
if: contains(github.event.head_commit.message, '[skip ci]') 포함 확인
if: startsWith(github.ref, 'refs/tags/') 시작 확인
if: success() && github.ref == 'refs/heads/main' 복합 조건
if: failure() 실패 시 실행
if: cancelled() 취소 시 실행
${{ toJson(github.event) }} JSON으로 변환
${{ fromJson(needs.job1.outputs.matrix) }} JSON 파싱

🚀 배포

🌍 환경

jobs: deploy: environment: name: production url: https://example.com steps: - run: ./deploy.sh 환경에 배포
jobs: deploy: environment: name: staging concurrency: group: staging cancel-in-progress: true 동시성이 있는 환경

📄 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 GitHub Pages에 배포

☁️ 클라우드 배포

- 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 AWS S3에 배포
- uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - uses: azure/webapps-deploy@v2 with: app-name: my-app package: ./dist Azure에 배포

💡 팁 & 모범 사례

유용한 팁

  • 재사용 워크플로우: workflow_call로 재사용 가능한 워크플로우 생성
  • 복합 액션: 재사용 가능한 스텝 시퀀스를 위한 action.yml 생성
  • 경로 필터: 불필요한 실행을 줄이기 위해 paths/paths-ignore 사용
  • 타임아웃: 멈춘 워크플로우 방지를 위해 timeout-minutes 설정
  • 동시성: 중복 실행 취소를 위해 동시성 그룹 사용
  • 모든 것을 캐시: 의존성, 빌드 출력, Docker 레이어 캐시
  • 최소 권한: permissions 키로 GITHUB_TOKEN 범위 제한
  • tmate로 디버그: SSH 디버깅을 위해 mxschmitt/action-tmate 사용