← 홈

🤵

⌘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

CLI 명령어

Jenkins CLI

java -jar jenkins-cli.jar -s http://localhost:8080/ help 도움말 표시
java -jar jenkins-cli.jar -s URL -auth user:token build JOB 작업 빌드
java -jar jenkins-cli.jar -s URL list-jobs 모든 작업 목록
java -jar jenkins-cli.jar -s URL get-job JOB 작업 설정 가져오기
java -jar jenkins-cli.jar -s URL create-job JOB < config.xml XML에서 작업 생성
java -jar jenkins-cli.jar -s URL delete-job JOB 작업 삭제
java -jar jenkins-cli.jar -s URL disable-job JOB 작업 비활성화
java -jar jenkins-cli.jar -s URL enable-job JOB 작업 활성화
java -jar jenkins-cli.jar -s URL restart Jenkins 재시작
java -jar jenkins-cli.jar -s URL safe-restart 안전 재시작

파이프라인

선언적 파이프라인

기본 파이프라인
pipeline {
  agent any

  stages {
    stage('Build') {
      steps {
        echo 'Building...'
        sh 'npm install'
        sh 'npm run build'
      }
    }

    stage('Test') {
      steps {
        echo 'Testing...'
        sh 'npm test'
      }
    }

    stage('Deploy') {
      steps {
        echo 'Deploying...'
        sh './deploy.sh'
      }
    }
  }
}
에이전트 옵션
// Any available agent
agent any

// No agent
agent none

// Specific label
agent {
  label 'linux'
}

// Docker
agent {
  docker {
    image 'node:18'
    args '-v /tmp:/tmp'
  }
}

// Kubernetes
agent {
  kubernetes {
    yaml '''
      spec:
        containers:
        - name: node
          image: node:18
    '''
  }
}
환경 변수
pipeline {
  agent any

  environment {
    APP_NAME = 'my-app'
    VERSION = '1.0.0'
    CREDENTIALS = credentials('my-credentials')
  }

  stages {
    stage('Build') {
      environment {
        STAGE_VAR = 'stage-specific'
      }
      steps {
        echo "Building ${APP_NAME} v${VERSION}"
        sh 'echo $CREDENTIALS_USR'
        sh 'echo $CREDENTIALS_PSW'
      }
    }
  }
}

파이프라인 기능

매개변수
pipeline {
  agent any

  parameters {
    string(name: 'VERSION', defaultValue: '1.0.0', description: 'Version to deploy')
    booleanParam(name: 'RUN_TESTS', defaultValue: true, description: 'Run tests?')
    choice(name: 'ENV', choices: ['dev', 'staging', 'prod'], description: 'Environment')
    text(name: 'CONFIG', defaultValue: '', description: 'Configuration')
  }

  stages {
    stage('Deploy') {
      steps {
        echo "Deploying ${params.VERSION} to ${params.ENV}"
      }
    }
  }
}
트리거
pipeline {
  agent any

  triggers {
    // Poll SCM every 5 minutes
    pollSCM('H/5 * * * *')

    // Cron schedule
    cron('H 4 * * 1-5')

    // Upstream job
    upstream(upstreamProjects: 'job1,job2', threshold: hudson.model.Result.SUCCESS)

    // GitHub hook
    githubPush()
  }

  stages {
    stage('Build') {
      steps {
        echo 'Building...'
      }
    }
  }
}
조건
pipeline {
  agent any

  stages {
    stage('Deploy to Prod') {
      when {
        branch 'main'
        environment name: 'DEPLOY', value: 'true'
      }
      steps {
        echo 'Deploying to production'
      }
    }

    stage('Test') {
      when {
        anyOf {
          branch 'main'
          branch 'develop'
        }
      }
      steps {
        sh 'npm test'
      }
    }

    stage('Skip on Tag') {
      when {
        not {
          tag '*'
        }
      }
      steps {
        echo 'Not a tag build'
      }
    }
  }
}

고급 파이프라인

병렬 스테이지
pipeline {
  agent any

  stages {
    stage('Test') {
      parallel {
        stage('Unit Tests') {
          steps {
            sh 'npm run test:unit'
          }
        }
        stage('Integration Tests') {
          steps {
            sh 'npm run test:integration'
          }
        }
        stage('E2E Tests') {
          steps {
            sh 'npm run test:e2e'
          }
        }
      }
    }
  }
}
Post 액션
pipeline {
  agent any

  stages {
    stage('Build') {
      steps {
        sh 'npm run build'
      }
    }
  }

  post {
    always {
      echo 'This always runs'
      cleanWs()
    }
    success {
      echo 'Build succeeded!'
      slackSend channel: '#ci', message: 'Build passed'
    }
    failure {
      echo 'Build failed!'
      mail to: 'team@example.com', subject: 'Build Failed'
    }
    unstable {
      echo 'Build is unstable'
    }
    changed {
      echo 'Status changed from last build'
    }
  }
}
입력 및 승인
pipeline {
  agent any

  stages {
    stage('Deploy') {
      input {
        message 'Deploy to production?'
        ok 'Yes, deploy!'
        submitter 'admin,deployers'
        parameters {
          string(name: 'VERSION', defaultValue: '1.0.0')
        }
      }
      steps {
        echo "Deploying version ${VERSION}"
      }
    }
  }
}
타임아웃 및 재시도
pipeline {
  agent any

  options {
    timeout(time: 1, unit: 'HOURS')
    retry(3)
    timestamps()
    buildDiscarder(logRotator(numToKeepStr: '10'))
  }

  stages {
    stage('Deploy') {
      options {
        timeout(time: 5, unit: 'MINUTES')
      }
      steps {
        retry(3) {
          sh './deploy.sh'
        }
      }
    }
  }
}

스크립트 파이프라인

Groovy 스크립트

기본 스크립트
node {
  stage('Checkout') {
    checkout scm
  }

  stage('Build') {
    sh 'npm install'
    sh 'npm run build'
  }

  stage('Test') {
    try {
      sh 'npm test'
    } catch (e) {
      currentBuild.result = 'UNSTABLE'
    }
  }

  stage('Deploy') {
    if (env.BRANCH_NAME == 'main') {
      sh './deploy.sh'
    }
  }
}
공유 라이브러리
// vars/buildPipeline.groovy
def call(Map config = [:]) {
  pipeline {
    agent any

    stages {
      stage('Build') {
        steps {
          sh "npm install"
          sh "npm run build"
        }
      }
    }
  }
}

// Jenkinsfile
@Library('my-shared-library') _

buildPipeline(
  name: 'my-app',
  branch: env.BRANCH_NAME
)

자격 증명

자격 증명 사용

사용자명/비밀번호
pipeline {
  agent any

  stages {
    stage('Deploy') {
      steps {
        withCredentials([usernamePassword(
          credentialsId: 'my-creds',
          usernameVariable: 'USERNAME',
          passwordVariable: 'PASSWORD'
        )]) {
          sh 'echo $USERNAME'
          sh './deploy.sh'
        }
      }
    }
  }
}
비밀 텍스트
withCredentials([string(credentialsId: 'api-key', variable: 'API_KEY')]) {
  sh 'curl -H "Authorization: Bearer $API_KEY" https://api.example.com'
}
SSH 키
withCredentials([sshUserPrivateKey(
  credentialsId: 'ssh-key',
  keyFileVariable: 'SSH_KEY',
  usernameVariable: 'SSH_USER'
)]) {
  sh 'ssh -i $SSH_KEY $SSH_USER@server.com'
}
Docker 레지스트리
docker.withRegistry('https://registry.example.com', 'docker-creds') {
  def image = docker.build('my-app:latest')
  image.push()
}

통합

일반 통합

Git 체크아웃
checkout([$class: 'GitSCM',
  branches: [[name: '*/main']],
  extensions: [],
  userRemoteConfigs: [[
    credentialsId: 'github-creds',
    url: 'https://github.com/org/repo.git'
  ]]
])

// Or simply
checkout scm
Docker 빌드
stage('Docker') {
  steps {
    script {
      def image = docker.build('my-app:${BUILD_NUMBER}')
      docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-creds') {
        image.push()
        image.push('latest')
      }
    }
  }
}
Slack 알림
post {
  success {
    slackSend(
      channel: '#ci-cd',
      color: 'good',
      message: "Build ${currentBuild.fullDisplayName} succeeded"
    )
  }
  failure {
    slackSend(
      channel: '#ci-cd',
      color: 'danger',
      message: "Build ${currentBuild.fullDisplayName} failed"
    )
  }
}
이메일 알림
post {
  failure {
    emailext(
      subject: "FAILED: ${currentBuild.fullDisplayName}",
      body: "Build failed. Check console at ${BUILD_URL}",
      recipientProviders: [developers(), requestor()]
    )
  }
}