카테고리 없음

[임시] 시험공부 github action

염몽이 2023. 4. 23. 23:42

action.yml 파일 설명

name: 액션의 이름을 정의합니다.

name: 'Custom GitHub Action'

description: 액션의 설명을 정의합니다.

description: 'A GitHub Action that takes an input and returns the square of the number'

inputs: 액션의 입력 변수를 정의합니다. 여기서는 num이라는 입력 변수를 사용합니다.

inputs:
  num:
    description: 'Enter a number'
    required: true
    default: "1"

outputs: 액션의 출력 변수를 정의합니다. 여기서는 num_squared라는 출력 변수를 사용합니다.

outputs:
  num_squared:
    description: 'Square of the input'
    value: ${{ steps.get-square.outputs.num_squared }}

runs: 액션 실행 방법을 정의합니다. 여기서는 composite 방식을 사용합니다.

runs:
  using: 'composite'

steps: 액션을 구성하는 단계를 정의합니다. 여기서는 Python을 설치, 의존성을 설치, 입력 변수를 쉘로 전달, 제곱 값을 계산하는 단계로 구성되어 있습니다.

  steps:
    - name: Install Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.10'

위 단계에서 actions/setup-python@v4를 사용하여 Python 3.10 버전을 설치합니다.

    - name: Install Dependencies
      run: pip install -r requirements.txt
      shell: bash

위 단계에서 requirements.txt 파일에 명시된 Python 패키지들을 설치합니다.

    - name: Pass Inputs to Shell
      run: |
        echo "INPUT_NUM=${{ inputs.num }}" >> $GITHUB_ENV
      shell: bash

위 단계에서 inputs.num 값을 GITHUB_ENV 파일에 추가하여, 다음 단계에서 해당 값을 사용할 수 있도록 합니다.

    - name: Fetch the numbers square 
      id: get-square
      run: python src/get_num_square.py 
      shell: bash

위 단계에서 get_num_square.py 스크립트를 실행하여 제곱 값을 계산하고, 해당 값을 num_squared 출력 변수에 저장합니다.

이 3개의 파일은 사용자 정의 GitHub Action을 구현하는 데 사용되며, 저장소에 푸시 이벤트가 발생할 때마다 이 워크플로우가 실행됩니다. 각 파일의 동작과 입력 및 출력 값에 대해 자세히 설명하겠습니다. 여기에서는 파일 간에 어떻게 값이 주고받아지는지에 초점을 맞추겠습니다.

  1. .github/workflows/main.yml 파일:
  • 이 파일은 워크플로우를 정의합니다. 푸시 이벤트가 발생하면 워크플로우가 시작됩니다.
  • jobs 섹션에서 get-num-square 작업을 정의합니다.
    • steps 섹션에서는 워크플로우에 포함된 작업 단계를 정의합니다.
      1. 사용자 정의 액션을 실행합니다. 이 작업에서 입력 값 num11로 설정합니다. 이 값은 with 절에서 num 변수에 설정되어 action.yml 파일의 입력으로 전달됩니다.
  1. action.yml 파일:
  • 이 파일은 사용자 정의 GitHub Action의 메타데이터를 정의합니다. 입력 및 출력 변수와 실행 방법을 포함합니다.
  • 입력 변수 num을 정의하고 필수로 지정하며 기본값을 1로 설정합니다. 여기에서는 .github/workflows/main.yml에서 전달된 11 값을 사용합니다.
    1. 입력 변수 num을 쉘 환경 변수 INPUT_NUM으로 설정하여 다음 단계에서 사용할 수 있도록 합니다. 이렇게 하면 get_num_square.py에서 INPUT_NUM 환경 변수를 사용하여 입력 값을 읽을 수 있습니다.
  1. get_num_square.py 파일:
  • 이 Python 스크립트는 INPUT_NUM 환경 변수를 사용하여 입력된 숫자의 제곱을 계산합니다.
  • os.environ.get("INPUT_NUM")를 사용하여 INPUT_NUM 환경 변수 값을 가져옵니다. 여기에서는 11이라는 값이 됩니다.
  • 제곱 값을 계산한 후, print(f"::set-output name=num_squared::{num ** 2}")를 사용하여 제곱 값을 num_squared라는 출력 변수에 설정합니다. 이렇게 하면 액션 단계의 출력 값으로 사용할 수 있습니다.
  1. 워크플로우 출력:
  • 워크플로우에서 사용자 정의 액션을 실행한 후에는, 출력 변수 num_squared에 제곱 값이 저장됩니다.
  • .github/workflows/main.yml 파일에서 최종 단계인 "Print the square"에서 echo "${{ steps.get_square.outputs.num_squared }}"를 실행하면, 이전 단계에서 설정된 num_squared 출력 값을 출력합니다. 여기서는 121이 출력됩니다.