preloader
Tech

About Github Actions

About Github Actions

GitHub Actions는 GitHub에서 제공하는 지속적인 통합(Continuous Integration, CI) 및 지속적인 배포(Continuous Deployment, CD) 서비스입니다. Github Actions의 특징은 다음과 같습니다!

  • 워크플로우 자동화
    • 코드 빌드, 테스트, 패키지 등의 작업을 자동화할 수 있습니다. 이벤트가 발생할 때마다 특정 작업을 실행하도록 워크플로우를 구성할 수 있습니다.
  • CI/CD 파이프라인 구축
    • 코드 변경 사항이 있을 때마다 자동으로 빌드, 테스트, 배포 등의 프로세스를 수행할 수 있습니다. 이를 통해 지속적인 통합과 배포를 용이하게 할 수 있습니다.
  • 다양한 런너 지원
    • Linux, Windows, macOS 등 다양한 가상 머신 환경을 제공합니다. 또한 자체 호스트된 런너를 사용할 수도 있습니다.
  • 다양한 언어 및 도구 지원
    • 다양한 프로그래밍 언어와 도구를 지원합니다. 예를 들어, Node.js, Python, Java, .NET, Ruby, PHP, Go 등의 언어와 AWS, Azure, Google Cloud 등의 클라우드 서비스를 활용할 수 있습니다.
  • 시크릿 관리
    • 암호, 액세스 토큰 등의 민감한 데이터를 안전하게 저장하고 관리할 수 있습니다.
  • 재사용 가능한 워크플로우
    • 프로젝트 간에 워크플로우를 공유하고 일관성 있는 프로세스를 구축할 수 있습니다.

간단한 예시를 들어보자면 Python 프로젝트의 경우 코드 푸시마다 자동으로 테스트를 실행하고 빌드를 수행하고, 테스트가 성공하면 배포할 수 있습니다. 이를 이용하여 이메일 알림, Slack 메시지 전송, Docker 컨테이너 빌드, 클라우드 서비스 배포 등의 작업등도 할 수 있습니다!

Example

예시로 Repository가 업데이트 될때마다 Issue에 랜덤 정수를 등록하도록 해보겠습니다! (참고자료 - [github-actions])

Repository의 .github/workflows 폴더를 만들고 yml 파일을 만들어줍니다.
저는 add_random_number_shell.yml 이라고 만들었습니다!

name: Add Random Number to Issue
on:
  push:
    branches:
      - main 

jobs:
  add_random_number_to_issue:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      
      - name: Generate random number
        id: random_number
        run: echo "::set-output name=random::$(shuf -i 1-1000 -n 1)"
      
      - name: Create Issue
        run: |
          echo "Creating issue..."
          curl -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
          -H "Accept: application/vnd.github.v3+json" \
          https://api.github.com/repos/${{ github.repository }}/issues \
          -d '{"title": "Random Number (Using shell): ${{ steps.random_number.outputs.random }}"}'          

그리고 코드를 푸쉬해주세요!

그 후 Repository에 가서 Issues 탭과 Actions 탭을 확인을 해보면 다음과 같이 확인할 수 있습니다.

그럼 불친절한 포스팅은 이만…

support-btn
도움이 되셨다면 몰랑이에게 밀크티를...!
더 다양한 포스팅을 채우도록 노력할게요!
comments powered by Disqus