Git·GitHub·Gitea

Gitea Actions, Act Runner 이용하기

무무11 2024. 12. 6. 20:48

회사에서 이미 Gitea를 사용중이었고 배포자동화를 위해서 Gitea Actions와 Act Runner를 이용해야했다.

 

사용법은 공식문서에 아주 잘 나와있어서 따라하면서 아주 큰 어려움은 없었다. 

 

https://docs.gitea.com/usage/actions/overview

 

Overview | Gitea Documentation

Starting with Gitea 1.19, Gitea Actions are available as a built-in CI/CD solution.

docs.gitea.com

 

 

여기에 간단하게 이용방법에 대해 정리해본다.

 

Gitea 란?

먼저 Gitea가 무엇인지 간단하게 정리해보았다.

 

Gitea는 Git 기반의 분산형 버전 관리 시스템이다. GitHub, GitLab과 아주 유사하며 오픈 소스 웹 애플리케이션이다.

 

Gitea는 GitLab과 유사하지만 더 가볍고 기능은 더 간단하지만 상대적으로 이용하기 간단하다는 장점이 있다.

 

Gitea는 서버에 설치하여 자체적으로 호스팅할 수 있어 이용하면 보안을 더 강화할 수 있다.  또한 GitHub과 거의 유사한 웹 기반의 UI도 제공해서 GitHub에 익숙하다면 사용이 어렵지 않다.

 

자체 호스팅 환경을 원할 때 Docker 등으로 쉽게 설치하여 이용할 수 있다.

 

Gitea Actions

Gitea Actions는 Gitea 자체에 내장된 기능으로 CI/CD 기능을 제공하는 시스템이다. GitHub Actions와 거의 똑같다고 생각하면 된다.

 

GitHub Actions와 대부분 호환 가능하게 만들어졌기 때문에 일부 기능을 제외하고 대부분의 기능이 사용 가능하다. GitHub Actions에서 제공하는 모든 액션과 템플릿들이 다 작동하지는 않기 때문에 주의할 필요가 있다.

 

최신 버전에서는 기본으로 Actions가 활성화되어있기 때문에 따로 설정할 것은 없다.

 

Gitea Actions는 .gitea/workflows 디렉토리에 YAML 형식의 워크플로우 파일을 정의하여 자동화된 작업을 구성할 수 있다. (사실 .github/workflows 디렉토리에 작성해도 작동이 된다.)

 

이렇게 workflow 파일만 잘 작성하고 이벤트를 트리거하게되면 Actions가 잘 동작을 하게 될까? 그렇지 않다.

 

왜냐하면 GitHub Actions를 이용할 때에는 GitHub-hosted runners라고 GitHub에서 제공해주는 러너를 이용하게 되지만 Gitea에는 없기 때문이다.(물론 GitHub에서도 자체 호스팅된 러너를 이용할 수 있다. 러너란 CI/CD 작업을 실제로 수행하는 서버로 워크플로우 파일에 정의된 작업을 수행하는 역할을 한다.)

 

따라서 우리는 먼저 Gitea에 우리의 CI/CD 작업을 수행할 Runner를 먼저 등록해줘야 한다.

 

Act Runner

Act Runner를 설치하고 등록하는 방법은 아래 공식문서에 잘 나와있다. 

 

https://docs.gitea.com/usage/actions/act-runner

 

Act Runner | Gitea Documentation

This page will introduce the act runner in detail, which is the runner of Gitea Actions.

docs.gitea.com

 

설치 방법은 여러가지가 있는데 Docker를 이용하는 것이 가장 쉽고 안전하며, 공식문서에서도 권장하는 방법이다. 아래는 그 과정을 간단하게 정리해보았다.

 

1. 이미지 다운 받기

$ docker pull gitea/act_runner:latest

위 명령어를 이용해 먼저 Act Runner를 다운받는다

 

2. 토큰 발급 받기

Gitea에서 Creat new Runner를 클릭해서 토큰을 발급받아야 한다. (Settings → Actions → Runners 에서 받을 수 있다.)

 

여기서 주의해야할 것은 토큰을 어디에서 발급 받느냐에 따라서 Runner를 이용할 수 있는 범위가 다르다는 것이다.

 

만약 Repository 내에서 토큰을 발급받아 이 토큰을 이용해 Runner를 등록하면 해당 Repository에서만 Runner를 이용할 수 있다.

 

Organization Level에서 Runner를 등록해야지만 Organization 내 모든 Repository에서 해당 Runner를 사용할 수 있다. (참고로 Organization에 대한 설정에 접근할 수 있는 권한을 가진 계정에서만 토큰 발급을 위한 메뉴에 접근이 가능하다.)

 

3. 발급 받은 토큰을 이용하여 Runner를 실행하고 등록하기

Docker를 이용하면 Runner를 실행하고 등록하는 과정을 한 번에 할 수 있다. docker-compose.yml 파일을 만들어 띄우면 여러가지 설정을 하기가 더 편할 수 있지만 여기에서는 간단하게 기본 명령어로 Runner를 실행하고 등록하는 방법을 올려보겠다.

docker run \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e GITEA_INSTANCE_URL=<Gitea 호스트 서버 URL> \
    -e GITEA_RUNNER_REGISTRATION_TOKEN=<발급받은_토큰> \
    -e GITEA_RUNNER_NAME=<Runner_이름> \
    --name 컨테이너_이름 \
    -d gitea/act_runner:latest

여기서 GITEA_RUNNER_NAME은 Gitea내에서 확인할 수 있는 Runner의 이름이고 --name은 도커 컨테이너 이름이다.

 

주의할 점은 GITEA_INSTANCE_URL에 스킴('https://', 'http://')와 '/'를 꼭 넣어줘야한다는 점이다. Gitea의 대부분 기능을 이용할 때 해당 부분을 생략해도 괜찮았어서 여기서도 생략하고 넣었다가 등록이 정상적으로 이루어지지 않았는데 원인을 찾느라 시간을 꽤 소비했다.

 

4. Runner Management에서 등록 확인

정상적으로 등록이 완료되면 위와 같이 Runner Management에서 Runner를 확인할 수 있다.

 

이제 다시 워크플로우에 작성된 내용으로 이벤트를 트리거하면 Actions에 작성된 워크플로우를 Runner가 정상적으로 수행하는 것을 확인할 수 있을 것이다.