본문 바로가기
Program Development Tips/GitHub Actions

GitHub Actions: 나만의 액션 만들기 가이드

by Maccrey Coding 2024. 9. 1.
반응형

 

GitHub Actions 마켓플레이스에서 나만의 액션을 만드는 방법에 대해 알아보겠습니다.

GitHub Actions는 CI/CD(지속적 통합 및 지속적 배포)를 자동화할 수 있는 강력한 도구입니다.

자신만의 액션을 만들어 GitHub 워크플로우를 더욱 효율적으로 만들 수 있습니다. 그럼, 시작해볼까요?

GitHub Actions란?

GitHub Actions는 소스 코드 리포지토리에 작업(작업 단위)을 자동으로 실행할 수 있는 기능입니다.

이를 통해 코드 빌드, 테스트, 배포 등 여러 작업을 자동화할 수 있습니다. GitHub Actions는 workflow, jobs, steps로 구성됩니다.

  • Workflow: 작업의 흐름을 정의합니다.
  • Job: 워크플로우의 한 단위 작업입니다.
  • Step: Job 내에서 실행되는 개별 작업입니다.

나만의 액션 만들기

GitHub Actions에서 액션은 반복적으로 사용할 수 있는 작업 단위입니다. 액션은 크게 두 가지 유형이 있습니다.

  1. Docker 컨테이너 액션
  2. JavaScript 액션

1. Docker 컨테이너 액션

Docker 컨테이너 액션은 Docker 이미지를 사용하여 액션을 만듭니다. 이 방법은 복잡한 환경 구성이 필요할 때 유용합니다.

Docker 컨테이너 액션 만들기

1. 리포지토리 준비

먼저, 액션을 위한 새로운 리포지토리를 만듭니다. 예를 들어 my-docker-action이라는 이름의 리포지토리를 생성합니다.

 

2. Dockerfile 작성

리포지토리에 Dockerfile을 생성합니다. 이 파일은 액션의 동작을 정의하는 Docker 이미지를 구성합니다.

# 기본 이미지 설정
FROM ubuntu:20.04

# 필요한 패키지 설치
RUN apt-get update && apt-get install -y curl

# 액션 코드 복사
COPY entrypoint.sh /entrypoint.sh

# 실행 권한 부여
RUN chmod +x /entrypoint.sh

# 기본 명령어 설정
ENTRYPOINT ["/entrypoint.sh"]

 

3. Entrypoint 스크립트 작성

entrypoint.sh 파일을 작성하여 액션의 주 동작을 정의합니다. 예를 들어, 다음과 같이 작성할 수 있습니다.

#!/bin/bash

echo "Hello from my Docker action!"

 

4. action.yml 파일 작성

액션을 정의하는 action.yml 파일을 작성합니다. 이 파일에는 액션의 메타데이터와 입력, 출력 등이 정의됩니다.

name: 'My Docker Action'
description: 'A simple Docker action'
runs:
  using: 'docker'
  image: 'Dockerfile'

 

5. 커밋 및 푸시

모든 파일을 리포지토리에 커밋하고 푸시합니다.

git add .
git commit -m "Initial commit"
git push origin main

2. JavaScript 액션

JavaScript 액션은 Node.js 환경에서 실행되는 액션입니다. 이 방법은 Node.js 코드로 액션을 작성할 수 있어 간단한 작업에 적합합니다.

JavaScript 액션 만들기

1. 리포지토리 준비

my-javascript-action이라는 이름의 새로운 리포지토리를 생성합니다.

 

2. JavaScript 코드 작성

리포지토리에 index.js 파일을 작성합니다. 이 파일은 액션의 로직을 구현합니다.

const core = require('@actions/core');

try {
  const name = core.getInput('name');
  console.log(`Hello ${name}!`);
} catch (error) {
  core.setFailed(error.message);
}

 

3. package.json 및 dependencies 설정

package.json 파일을 생성하고 필요한 패키지를 설치합니다.

{
  "name": "my-javascript-action",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {
    "@actions/core": "^1.9.0"
  }
}

패키지를 설치합니다.

npm install

 

4. action.yml 파일 작성

JavaScript 액션의 메타데이터를 정의하는 action.yml 파일을 작성합니다.

name: 'My JavaScript Action'
description: 'A simple JavaScript action'
inputs:
  name:
    description: 'Name to greet'
    required: true
runs:
  using: 'node12'
  main: 'index.js'

 

5. 커밋 및 푸시

모든 파일을 리포지토리에 커밋하고 푸시합니다.

git add .
git commit -m "Initial commit"
git push origin main

액션 사용하기

이제 액션을 GitHub 워크플로우에서 사용할 수 있습니다.

.github/workflows 디렉토리에 워크플로우 파일을 생성하고 다음과 같이 액션을 사용합니다.

name: Example Workflow

on: [push]

jobs:
  example:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v2
      
    - name: Run my Docker action
      uses: your-username/my-docker-action@v1
      with:
        # 필요한 입력값 정의

    - name: Run my JavaScript action
      uses: your-username/my-javascript-action@v1
      with:
        name: 'World'

 

 

GitHub Actions에서 나만의 액션을 만드는 방법에 대해 알아보았습니다.

Docker 컨테이너 액션과 JavaScript 액션 두 가지 방법을 살펴보았는데요, 상황에 따라 적절한 방법을 선택하여 사용하면 됩니다.

액션을 잘 활용하면 CI/CD 파이프라인을 훨씬 더 효율적으로 구성할 수 있습니다.

 

추가로 궁금한 점이 있거나 도움이 필요하다면 언제든지 댓글로 질문해 주세요. 감사합니다!

공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

반응형