github self-hosted runners
https://docs.github.com/en/actions/hosting-your-own-runners/adding-self-hosted-runners
관리 계층의 다양한 수준에서 자체 호스팅 러너를 추가할 수 있습니다.
리포지토리 수준 러너는 단일 리포지토리 전용입니다.
조직 수준 실행자는 조직의 여러 리포지토리에 대한 작업을 처리할 수 있습니다.
엔터프라이즈 수준 실행자는 엔터프라이즈 계정의 여러 조직에 할당될 수 있습니다.
여러 리포지토리에서 접근을 하려면 조직 수준 runner를 등록해서 사용을 해야 함.
자체 호스팅 러너 머신에 대한 요구 사항
다음 요구 사항을 충족하는 한 모든 시스템을 자체 호스팅 러너로 사용할 수 있습니다.
머신에 자체 호스팅 러너 애플리케이션을 설치하고 실행할 수 있습니다. 자세한 내용은 " 자체 호스팅 실행기를 위해 지원되는 아키텍처 및 운영 체제 "를 참조하십시오 .
머신은 GitHub Actions와 통신할 수 있습니다. 자세한 내용은 " 자체 호스팅 러너와 GitHub 간의 통신 "을 참조하십시오 .
컴퓨터에는 실행하려는 워크플로 유형에 대한 충분한 하드웨어 리소스가 있습니다. 자체 호스팅 러너 애플리케이션 자체에는 최소한의 리소스만 필요합니다.
Docker 컨테이너 작업 또는 서비스 컨테이너를 사용하는 워크플로를 실행하려면 Linux 머신을 사용해야 하고 Docker가 설치되어 있어야 합니다. https://vntg.atlassian.net/wiki/spaces/INFRA/pages/267255811/Docker#Ubuntu%EC%97%90-docker-%EC%84%A4%EC%B9%98
github runner 설치 및 등록
repository 또는 organization 차원에서 runner 를 등록할 수 있음.
https://docs.github.com/en/actions/hosting-your-own-runners/adding-self-hosted-runners
repository 용 runner는 repository의 Settings - Actions - Runners 에서 추가를 하면 됨.
runner 를 추가하는 화면에서 runner를 설치하고 설정하는 부분에 대한 설명이 나옴.
설치시 root로 진행을 하면 sudo 관련한 에러가 나옴.
보안을 위해서 별도 user를 만들어서 runner를 실행함. runner 를 실행할 user를 만들고 docker 를 사용하기 위해서 docker group에 추가를 해준다.
sudo useradd -m -s /bin/bash --comment 'github runner' github-runner
sudo usermod -aG docker github-runner
sudo su - github-runner
github-runner user로 runner 설치. 설정을 할 때 나오는 url과 token 정보를 이용
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64-2.288.1.tar.gz -L https://github.com/actions/runner/releases/download/v2.288.1/actions-runner-linux-x64-2.288.1.tar.gz
tar xzf ./actions-runner-linux-x64-2.288.1.tar.gz
./config.sh --url https://github.com/VntgCorp/example --token ATZHRXXXXXXXX
설정화면
$ ./config.sh --url https://github.com/VntgCorp --token ATxxxxxxxxxxxxxx
--------------------------------------------------------------------------------
| ____ _ _ _ _ _ _ _ _ |
| / ___(_) |_| | | |_ _| |__ / \ ___| |_(_) ___ _ __ ___ |
| | | _| | __| |_| | | | | '_ \ / _ \ / __| __| |/ _ \| '_ \/ __| |
| | |_| | | |_| _ | |_| | |_) | / ___ \ (__| |_| | (_) | | | \__ \ |
| \____|_|\__|_| |_|\__,_|_.__/ /_/ \_\___|\__|_|\___/|_| |_|___/ |
| |
| Self-hosted runner registration |
| |
--------------------------------------------------------------------------------
# Authentication
√ Connected to GitHub
# Runner Registration
Enter the name of the runner group to add this runner to: [press Enter for Default]
Enter the name of runner: [press Enter for web] she_test
This runner will have the following labels: 'self-hosted', 'Linux', 'X64'
Enter any additional labels (ex. label-1,label-2): [press Enter to skip] she_test
√ Runner successfully added
√ Runner connection is good
# Runner settings
Enter name of work folder: [press Enter for _work]
√ Settings Saved.
Enter the name of the runner group to add this runner to
: runner group을 따로 설정을 할 필요가 없으므로 그냥 엔터. github teams에서는 Default 밖에 없으며 github enterprise에서는 git repo별로 사용 가능한 runner를 설정할 수 있음)
Enter the name of runner
: runner 의 이름
Enter any additional labels
: labels 추가 지정. 웹 UI에서 나중에 변경할 수 있음.
self-hosted runners 를 github actions에 추가할 때 자동으로 self-hosted, 운영 체제 및 하드웨어 플랫폼 레이블이 설정 된다. 필요하면 추가 레이블을 설정할 수 있다. 예를 들어 x86_64 ubuntu 20.04 의 경우 self-hosted, linux, X64 로 나온다.
아래는 root 권한으로 실행을 하거나 github-users 에 sudo 권한을 주면 sudo로 명령어 실행 가능함. install은 systemd 설정을 하며 실행하는 사용자(github-runner
)를 지정하는 것임. (https://docs.github.com/en/actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service#installing-the-service 문서에서는 install --user 옵션이 있지만 실제로는 --user 옵션이 없어야 작동함. 매뉴얼이 잘못된 듯)
이경우 systemctl을 통해서 runner 서비스가 돌아간다. systemctl을 통해서 service를 확인하고 로그를 볼 수 있다.
서비스 중지 및 제거
만약 현재 실행하고 있는 runner를 중지시키고 다시 설정을 하려고 한다면
먼저 서비스 중지 및 제거 (stop, uninistall) 명령을 실행한다.
runner를 등록한 웹화면에서
./config.sh remove --token Axxxxxxx
명령어를 안내해준다. 설치할 때 사용한 token 값을 넣을 것이다. 해당 명령을 실행하면 github 에서 runner 를 삭제하고 runner를 설치한 OS의 관련된 정보 및 서비스를 삭제한다. https://docs.github.com/en/actions/hosting-your-own-runners/removing-self-hosted-runners 참고.삭제 후에 runner를 다시 등록하려면
./config.sh
실행하여 runner를 등록하고 서비스 등록, 시작을 해주는 과정을 진행하면 된다.
organization 용 github runner 설치 및 등록
조직에 자체 호스팅 러너를 추가하려면 조직 소유자여야 합니다. organization의 Settings - Actions - Runners 에서 추가를 하면 됨.
https://github.com/organizations/sample/settings/actions/runners (조직 소유자만 접근 가능)
repository 용 runner 와는 다르게 organization 용 runner 는 Runner Groups 의 Default 에서 Repository access 에서 특정 repo를 선택하거나 All repositories 를 선택해 주어야 다른 git repo에서 runner를 사용할 수 있다.
Runner groups 을 이용하여 self-hosted runner와 git repo를 제한하는 기능이 있는데 이건 github Enterprise에서만 지원이 됨.
보안 문제로 public repo의 경우에는 기본적으로 organization에 있는 runner group 을 사용할 수 없다. (https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories )
이렇게 organization 용 github runner 를 등록하면 해당 repo의 Runners 설정에서 등록한 runner가 나옴
workflow 에서 runner 사용
https://docs.github.com/en/actions/hosting-your-own-runners/using-self-hosted-runners-in-a-workflow
runs-on: [self-hosted, linux, X64]
workflow에서 runner에 할당한 레이블을 넣으면 됨. and 조건임.
자체 호스팅 러너는 GitHub 작업에 추가될 때 특정 레이블을 자동으로 받습니다. 다음은 운영 체제 및 하드웨어 플랫폼을 나타내는 데 사용됩니다.
self-hosted
: 모든 자체 호스팅 러너에 적용되는 기본 레이블입니다.linux
,windows
, 또는macOS
: 운영 체제에 따라 적용됩니다.x64
,ARM
, 또는ARM64
: 하드웨어 아키텍처에 따라 적용됩니다.
워크플로의 YAML을 사용하여 이러한 레이블 조합으로 작업을 보낼 수 있습니다. 이 예에서 세 가지 레이블 모두와 일치하는 자체 호스팅 실행자는 작업을 실행할 수 있습니다.
각 runner에 label 을 설정할 수 있음.
https://docs.github.com/en/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners
github actions 윈도우서버 실행
github runner 윈도우 서버 2019, 윈도우 서버 2016 지원
windows 2019 에 설치된 소프트웨어 목록 : https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
.Net Core 3.x 빌드하는 예제인데 빌드하면서 에러는 나지만 windows 서버에서 실행이 되는 것은 확인을 했음.
windows 10에 self-hosted runner 설치하는 것도 self-hosted runner 추가하는 화면에 명령이 나와있다. powershell 을 관리자 권한으로 실행해야 서비스 등록을 할 수 있다.
공용 github runner
organization 용 runner를 구성하고 Runner 에 해당 lable 을 지정함.(and 조건임) (참고로 다른 github actions에서도 self-hosted 라고 넣어주면 해당 runner를 사용할 가능성는 있음.