OpenAPI 자동화

2025. 10. 9. 20:05·CI-CD
반응형

👋 들어가기 전

 

긴 연휴동안, 가족과의 시간을 잘 보내기도 했지만, 자동화를 위한 여정도 만만치 않게 오래 보냈다.

 

뭐가 그렇게 하고싶어서, 추석 틈틈히 했을까...  하나씩 살펴보자.


🎯 목표

 

1️⃣ 외부 이벤트

현재는 아래 사진처럼, github action에서 내가 수동 트리거를 줘야하지만, 최후의 목표는 커스텀 이벤트를 통해 돌리는 것

 

핵심은 trigger중 , workflow_dispatch를 사용하면 input과 함께 트리거를 만들 수 있다.

 

관령 링크

name: 🤖 Auto Generation

on:
  workflow_dispatch:

 

2️⃣ 나머지 작업 중, 부딪힌 문제들

실제 스크립트 코드나, 파이썬 코드는 보안상 보여줄 수 없고, 시간이 많이 걸린 문제 해결 관련된

코드만, 부분적으로 공개하겠다.

 

😂  파이썬 의존성 문제

 

분명 pip로 install을 했음에도, 모든 파이썬 파일에서 의존성을 못찾는 문제가 발생했다.

 

문제 해결의 핵심은, 워크플로우에 파이썬 버전을 명시한 후, pip install을 하는 것

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'  # 필요한 버전

      - name: 🧰 Running setup script...
        run: |
          make setup
          pip install requests GitPython # 파이썬 의존성 설치

 

✅ 액션을 통해, git 관려된 작업을 할 때, permission이 필요함

관련 링크

name: 🤖 Auto Generation

on:
  workflow_dispatch:

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

permissions:
  contents: write   # 이 줄이 있어야 푸시 가능
  pull-requests: write # pr 생성
권한 
설명 주요 사용 예시 기본값
actions 워크플로 및 작업 실행(workflow runs) 관리 권한 다른 워크플로 트리거(workflow_dispatch), 취소, 재실행 등 read
checks 체크런(check runs) 및 체크결과(check suites) 읽기/쓰기 CI 도구(예: lint 결과, 테스트 리포트)를 체크로 업로드 read
contents 리포지토리의 파일, 브랜치, 태그 등에 대한 접근 코드 checkout, 파일 커밋, 태그 푸시 등 read
deployments GitHub Deployments API 권한 배포 상태 업데이트(deployment status 작성 등) read
id-token OpenID Connect 토큰 요청 권한 AWS, GCP, Azure 등 외부 클라우드 인증 (OIDC federation) none
issues 이슈 생성/편집/닫기 권한 자동 이슈 생성, 코멘트 달기 등 read
discussions GitHub Discussions 읽기/쓰기 커뮤니티 Q&A 자동 관리, 공지 등 read
packages GitHub Packages (npm, Docker, Maven 등) 접근 패키지 publish 또는 pull read
pages GitHub Pages 관련 권한 Pages 배포(gh-pages 브랜치 푸시) read
pull-requests Pull Request 데이터 접근 PR 코멘트, 리뷰 작성, 상태 업데이트 read
repository-projects Repository-level Projects (Kanban-style boards) 접근 자동으로 카드 추가/이동 등 read
security-events 보안 경고(SAST, Dependabot 등) 접근 보안 경고 자동 분석, 레포트 생성 read
statuses 커밋 상태(Status checks) 읽기/쓰기 ci/test passed 같은 상태 업데이트 read

 

⭐️ 특정 브랜치에서 머지 될 때만, 동작하게 하고 싶음

workflow에서 실행되면, 환경변수로 다양한 정보를 알려주는데, 이번에 쓴 내용만 먼저 살펴보자.

    1. github.event.pull_request.merged
      • pull_request 이벤트 중 closed 타입에서만 사용
      • 현재 event가 merged됐는 지 (true or false)
    2. github.event.pull_request.head.ref
      • pull request의 source branch를 의미함
    3. github.workflow
      • workflow yaml파일의 name 값을 가져온다. 
    4. github.ref
      • 워크플로우가 실행된 Git 참조(Ref) 값
      • 즉, 어떤 브랜치나 태그에서 실행됐는지 나타냄

위 내용을 이용해서, pull request가 머지되고, release/xx 형태의 브랜치가 source 브랜치일 때,
jobs을 실행시키고 싶다.

    •  
name: 🏷️ Deploy

on:
    pull_request:
        types:
            - closed
        branches:
            - develop

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

permissions:
  contents: write   # 이 줄이 있어야 푸시 가능

jobs:
  deploy:
    if: ${{ github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'release') }}
    runs-on: macos-15

 

반응형

'CI-CD' 카테고리의 다른 글

Fastlane (2) 출시 및 배포  (0) 2025.02.13
Fastlane (1) 설치 및 테스트  (0) 2025.02.12
xcodebuild  (0) 2025.02.12
'CI-CD' 카테고리의 다른 글
  • Fastlane (2) 출시 및 배포
  • Fastlane (1) 설치 및 테스트
  • xcodebuild
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (329) N
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (41)
        • swift (34)
        • python (6)
        • Kotlin (1)
      • iOS (134)
        • UIKit (37)
        • Combine (1)
        • SwiftUI (34)
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (1)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (21)
        • 어노테이션 (6)
        • 튜토리얼 (14)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (11) N
        • 이론 (10) N
        • MCP (1)
        • LangGraph (0)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SwiftUI
    CS
    Tuist
    프로그래머스
    GIT
    concurrency
    boostcamp
    dfs
    AVFoundation
    UIKit
    protocol
    dp
    투포인터
    dispatch
    Spring
    백준
    lifecycle
    Swift
    property
    IOS
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
OpenAPI 자동화
상단으로

티스토리툴바