🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

GitHub 최신 기능 소개 2025 - 슬라이드 1/13
A

AI Generated

2025. 11. 4. · 15 Views

GitHub 최신 기능 소개 2025

2025년 GitHub의 최신 기능들을 실무에 바로 적용 가능한 코드 예제와 함께 소개합니다. GitHub Actions, Copilot, Security 등 핵심 기능들을 고급 개발자 관점에서 살펴봅니다.


카테고리:JavaScript
언어:JavaScript
메인 태그:#GitHub
서브 태그:
#GitHubActions#GitHubCopilot#CI/CD#Automation

들어가며

이 글에서는 GitHub 최신 기능 소개 2025에 대해 상세히 알아보겠습니다. 총 12가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. GitHub_Actions_매트릭스_전략
  2. GitHub_Actions_재사용_가능한_워크플로우
  3. GitHub_Copilot_커스텀_인스트럭션
  4. GitHub_Advanced_Security_코드_스캐닝
  5. GitHub_Environments_배포_보호_규칙
  6. GitHub_Dependabot_자동_보안_업데이트
  7. GitHub_Actions_캐싱_전략
  8. GitHub_Container_Registry_자동_배포
  9. GitHub_Branch_Protection_자동화
  10. GitHub_Actions_Composite_Actions
  11. GitHub_OIDC_무비밀_배포
  12. GitHub_GraphQL_API_고급_쿼리

1. GitHub Actions 매트릭스 전략

개요

여러 환경에서 동시에 테스트를 실행하는 매트릭스 전략으로 CI/CD 효율을 극대화할 수 있습니다.

코드 예제

name: Matrix Build
on: [push]
jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        node: [16, 18, 20]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - run: npm ci && npm test

설명

3개의 OS와 3개의 Node 버전 조합으로 총 9개의 환경에서 병렬 테스트를 실행합니다.


2. GitHub Actions 재사용 가능한 워크플로우

개요

워크플로우를 재사용 가능하게 만들어 여러 저장소에서 공통 CI/CD 로직을 공유할 수 있습니다.

코드 예제

# .github/workflows/reusable-deploy.yml
on:
  workflow_call:
    inputs:
      environment:
        required: true
        type: string
    secrets:
      token:
        required: true
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying to ${{ inputs.environment }}"
      - run: ./deploy.sh
        env:
          DEPLOY_TOKEN: ${{ secrets.token }}

설명

workflow_call 이벤트로 다른 워크플로우에서 호출 가능한 재사용 워크플로우를 정의합니다.


3. GitHub Copilot 커스텀 인스트럭션

개요

Copilot에게 프로젝트별 코딩 스타일과 규칙을 학습시켜 더 정확한 코드 제안을 받을 수 있습니다.

코드 예제

// .github/copilot-instructions.md
# Coding Guidelines
- Use TypeScript strict mode
- Prefer functional components with hooks
- Follow Airbnb style guide
- Always write unit tests with Jest
- Use async/await over promises
- Document complex functions with JSDoc

// 이후 Copilot이 자동으로 규칙을 따름
const fetchUser = async (id: string): Promise<User> => {
  // Copilot이 위 규칙에 맞춰 코드 생성
}

설명

프로젝트 루트에 .github/copilot-instructions.md 파일로 팀의 코딩 컨벤션을 설정합니다.


4. GitHub Advanced Security 코드 스캐닝

개요

CodeQL을 활용한 자동 보안 취약점 스캐닝으로 배포 전 보안 이슈를 사전에 감지합니다.

코드 예제

name: Security Scan
on: [push, pull_request]
jobs:
  analyze:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3
        with:
          languages: javascript, typescript
      - uses: github/codeql-action/analyze@v3

설명

CodeQL이 코드를 분석하여 SQL injection, XSS 등의 보안 취약점을 자동으로 탐지합니다.


5. GitHub Environments 배포 보호 규칙

개요

프로덕션 배포 시 필수 승인자와 대기 시간을 설정하여 안전한 배포 프로세스를 구축합니다.

코드 예제

# .github/workflows/deploy.yml
jobs:
  deploy-prod:
    runs-on: ubuntu-latest
    environment:
      name: production
      url: https://prod.example.com
    steps:
      - uses: actions/checkout@v4
      - name: Deploy
        run: ./deploy.sh
        env:
          API_KEY: ${{ secrets.PROD_API_KEY }}

# Settings에서 환경별 보호 규칙 설정:
# - Required reviewers: 2명
# - Wait timer: 10

설명

environment 설정으로 배포 전 승인 프로세스와 secrets 관리를 환경별로 분리합니다.


6. GitHub Dependabot 자동 보안 업데이트

개요

의존성 패키지의 보안 취약점을 자동으로 감지하고 PR을 생성하여 패키지를 업데이트합니다.

코드 예제

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 10
    reviewers:
      - "security-team"
    labels:
      - "dependencies"
      - "security"
    commit-message:
      prefix: "chore"
      include: "scope"

설명

주간 단위로 npm 패키지를 검사하고 보안 업데이트가 필요한 경우 자동으로 PR을 생성합니다.


7. GitHub Actions 캐싱 전략

개요

빌드 아티팩트와 의존성을 캐싱하여 CI/CD 실행 시간을 대폭 단축시킬 수 있습니다.

코드 예제

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.npm
            .next/cache
          key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-
      - run: npm ci
      - run: npm run build

설명

package-lock.json 해시를 키로 사용하여 의존성과 빌드 캐시를 효율적으로 관리합니다.


8. GitHub Container Registry 자동 배포

개요

Docker 이미지를 GitHub Container Registry에 자동으로 빌드하고 배포하는 워크플로우입니다.

코드 예제

jobs:
  docker:
    runs-on: ubuntu-latest
    permissions:
      packages: write
    steps:
      - uses: actions/checkout@v4
      - uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - uses: docker/build-push-action@v5
        with:
          push: true
          tags: ghcr.io/${{ github.repository }}:latest

설명

GitHub의 내장 Container Registry에 Docker 이미지를 빌드하고 푸시합니다.


9. GitHub Branch Protection 자동화

개요

API를 통해 브랜치 보호 규칙을 코드로 관리하고 자동화할 수 있습니다.

코드 예제

// scripts/setup-branch-protection.js
const { Octokit } = require("@octokit/rest");

const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });

await octokit.repos.updateBranchProtection({
  owner: "myorg",
  repo: "myrepo",
  branch: "main",
  required_status_checks: {
    strict: true,
    contexts: ["test", "lint"]
  },
  required_pull_request_reviews: {
    required_approving_review_count: 2
  },
  enforce_admins: true
});

설명

Octokit API로 브랜치 보호 규칙을 프로그래밍 방식으로 설정하여 인프라를 코드로 관리합니다.


10. GitHub Actions Composite Actions

개요

여러 스텝을 하나의 재사용 가능한 액션으로 묶어 워크플로우를 간결하게 유지합니다.

코드 예제

# .github/actions/setup-node-pnpm/action.yml
name: 'Setup Node with pnpm'
description: 'Setup Node.js and pnpm with caching'
runs:
  using: "composite"
  steps:
    - uses: actions/setup-node@v4
      with:
        node-version: 20
    - uses: pnpm/action-setup@v3
      with:
        version: 8
    - run: pnpm install --frozen-lockfile
      shell: bash

# 사용
- uses: ./.github/actions/setup-node-pnpm

설명

반복되는 setup 로직을 composite action으로 추상화하여 모든 워크플로우에서 재사용합니다.


11. GitHub OIDC 무비밀 배포

개요

OIDC를 사용하여 장기 credentials 없이 AWS, Azure 등에 안전하게 배포할 수 있습니다.

코드 예제

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123456789:role/GitHubActions
          aws-region: us-east-1
      - run: aws s3 sync ./dist s3://my-bucket
      # AWS credentials는 자동으로 단기 토큰 발급

설명

OIDC 토큰으로 단기 credentials를 발급받아 secrets 관리 없이 클라우드 리소스에 접근합니다.


12. GitHub GraphQL API 고급 쿼리

개요

GraphQL API로 복잡한 저장소 데이터를 효율적으로 조회하고 자동화 스크립트를 작성합니다.

코드 예제

const query = `
  query($owner: String!, $repo: String!) {
    repository(owner: $owner, name: $repo) {
      pullRequests(first: 10, states: OPEN) {
        nodes {
          number
          title
          reviews(first: 5) {
            totalCount
          }
          commits(last: 1) {
            nodes {
              commit {
                statusCheckRollup {
                  state
                }
              }
            }
          }
        }
      }
    }
  }
`;

const data = await fetch('https://api.github.com/graphql', {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}` },
  body: JSON.stringify({ query, variables: { owner, repo } })
});

설명

한 번의 요청으로 PR, 리뷰, 커밋 상태를 포함한 복잡한 데이터를 효율적으로 가져옵니다.


마치며

이번 글에서는 GitHub 최신 기능 소개 2025에 대해 알아보았습니다. 총 12가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#GitHub #GitHubActions #GitHubCopilot #CI/CD #Automation

#GitHub#GitHubActions#GitHubCopilot#CI/CD#Automation#JavaScript

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.