Docker 컨테이너로 나만의 GitHub 작업 빌드

GitHub Actions는 리포지토리의 편안함에서 팀이 코드에서 클라우드로 이동할 수 있도록 지원하는 강력한 플랫폼입니다.

이 게시물에서는 Dockerfile을 사용하여 재사용 가능한 GitHub Action을 빌드하는 방법을 간략하게 살펴보겠습니다.

더 자세히 알아보려면 GitHub Actions: Write Docker container actions 과정을 확인하십시오.

시작하다



대부분의 GitHub Actions는 오픈 소스 GitHub 리포지토리이므로 커뮤니티 구축 Actions를 쉽게 검색하고 발견할 수 있습니다. 고유한 작업을 생성하려면 먼저 GitHub 리포지토리를 생성하고 해당 리포지토리에 Dockerfile이 필요합니다. Docker에 대한 전문가일 필요는 없지만 높은 수준에서 Docker를 사용하면 코드를 스크립트로 실행할 수 있습니다.

이 작업에서 Docker 이미지(알파인)는 bash 스크립트를 실행할 수 있는 환경을 제공합니다. 지금까지 Dockerfile에 몇 가지 Docker 항목을 넣고 계속 진행할 수 있습니다.

지적해야 할 것 중 하나는 ENTRYPOINT의 생성입니다. Anentrypoint.sh은 bash를 작성하는 곳입니다. 다른 언어가 선호되는 경우 index.rb 또는 index.js가 될 수 있습니다. 우리에게 가장 필요한 것은 진입점을 위한 실행 파일입니다.

또한 실행 가능 여부와 그 의미에 대해 설명하고 싶습니다. 파일 경로만 사용하여 명령줄에서 실행할 수 있음을 의미합니다. 쉬운 스크립팅에 도움이 됩니다. 실행 파일을 만들기 위해 이것을 작성할 수 있는 다른 언어가 있습니다. 예를 들어 설명과 이 코드를 이미 mash로 작성했기 때문에 오늘은 bash를 고수할 것입니다.

// Dockerfile

FROM alpine
RUN apk add --no-cache jq
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

아래 bash 코드는 작업 실행기의 표준 환경 변수 중 하나인 GITHUB_EVENT_PATH에서 몇 가지 항목을 검색합니다. 코드에는 .take 키워드가 포함되어 있음을 확인하는 주석 본문에 대한 조건도 포함되어 있습니다.

// entrypoint.sh

#!/bin/sh

BODY="$(jq '.comment.body' $GITHUB_EVENT_PATH)"
ISSUE_NUMBER="$(jq '.issue.number' $GITHUB_EVENT_PATH)"
LOGIN="$(jq '.comment.user.login' $GITHUB_EVENT_PATH | tr -d \")"
REPO="$(jq '.repository.full_name' $GITHUB_EVENT_PATH | tr -d \")"

if [[ $BODY == *".take"* ]]; then
  echo "Assigning issue $ISSUE_NUMBER to $LOGIN"
  echo "Using the link: https://api.github.com/repos/$REPO/issues/$ISSUE_NUMBER/assignees"
  curl -H "Authorization: token $GITHUB_TOKEN" -d '{"assignees":["'"$LOGIN"'"]}' https://api.github.com/repos/$REPO/issues/$ISSUE_NUMBER/assignees
fi

bash의 끝에서 우리는 GitHub API와 직접 통신하기 위해 curl 명령을 활용하고 있습니다. 이 curl 명령은 단순성을 위한 것입니다. 이 모든 작업은 octokit.rest.js 또는 더 나은 github-script 라이브러리를 사용하여 수행할 수 있습니다.

이제 이를 GitHub에 푸시하여 저장소에서 테스트할 수 있습니다. 내 리포지토리bdougie/take-action에서 이 실제 작업을 활용하여 내 작업에서 응답을 받았는데 제대로 작동한 것 같습니다.

이 튜토리얼의 전체 버전에 관심이 있는 경우 이전에 YouTube에서 녹화한 동영상에서 발췌한 것입니다.



이것은 28일간의 Actions 시리즈의 일부입니다. 더 많은 GitHub 작업 팁에 대한 알림을 받으려면 여기 Dev에서 GitHub 조직을 팔로우하세요.

02:00

좋은 웹페이지 즐겨찾기