GitHub Actions의 셀프 호스트 러너를 GCP에 30분 만에 세워보세요
8604 단어 GitHubActionsgcpGitHubgce
소개
github actions의 self host runner를 시도하지 않았기 때문에 이번에는 시도했습니다.
self host runner란?
github 액션의 CI/CD 기능은 특별히 설정하지 않는 한 github 측이 제공하는 인프라에서 실행됩니다.
self host runner를 사용하면 가동 인프라 기반을 직접 준비 할 수 있습니다.
공식 문서는 이쪽
이번 설계 이미지
셀프 호스트 러너를 gcp GCE에 설치하십시오.
물론 OS는 리눅스
건설
1. 리포지토리, 인프라 준비 ⛹️♂️
먼저 리포지토리를 준비하십시오.
평소와 같이 저장소를 만듭니다.
typo 한 용서 ...
Setting > Actions 탭에서 셀프 호스트 러너를 활성화하는 버튼이 있으므로 여기를 클릭하십시오.
그렇다면 소개 가이드가 나오기 때문에 일단 이것으로 괜찮습니다.
계속해서 인프라 준비.
특히 아무것도 괴롭히지 않고 e2-micro로 만들었습니다.
2. runner 설치, 시작 💊
작성한 인스턴스에 ssh하고, 방금 전 github쪽으로 나온 도입 가이드를 따라 실행해 갑니다
sakas1231@actions-test:~$ mkdir actions-runner && cd actions-runner
sakas1231@actions-test:~/actions-runner$ curl -O -L https://github.com/actions/runner/releases/download/v2.273.5/actions-runner-linux-x64-2.273.5.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 665 100 665 0 0 3243 0 --:--:-- --:--:-- --:--:-- 3243
100 72.0M 100 72.0M 0 0 57.1M 0 0:00:01 0:00:01 --:--:-- 99.5M
sakas1231@actions-test:~/actions-runner$ tar xzf ./actions-runner-linux-x64-2.273.5.tar.gz
sakas1231@actions-test:~/actions-runner$ ./config.sh --url https://github.com/KatsuyaAkasaka/actinosSHR_sample --token xxxxxx
'Libicus dependencies is missing for Dotnet Core 3.0
Execute ./bin/installdependencies.sh to install any missing Dotnet Core 3.0 dependencies.'
# うまく行かなかったので、エラー通り以下スクリプトを実行
sakas1231@actions-test:~/actions-runner$ sudo ./bin/installdependencies.sh
...
# 再度実行
sakas1231@actions-test:~/actions-runner$ ./config.sh --url https://github.com/KatsuyaAkasaka/actinosSHR_sample --token xxxxxx
--------------------------------------------------------------------------------
| ____ _ _ _ _ _ _ _ _ |
| / ___(_) |_| | | |_ _| |__ / \ ___| |_(_) ___ _ __ ___ |
| | | _| | __| |_| | | | | '_ \ / _ \ / __| __| |/ _ \| '_ \/ __| |
| | |_| | | |_| _ | |_| | |_) | / ___ \ (__| |_| | (_) | | | \__ \ |
| \____|_|\__|_| |_|\__,_|_.__/ /_/ \_\___|\__|_|\___/|_| |_|___/ |
| |
| Self-hosted runner registration |
| |
--------------------------------------------------------------------------------
# Authentication
...
# ok これでホストランナーが起動したことになる
sakas1231@actions-test:~/actions-runner$ ./run.sh
√ Connected to GitHub
2020-11-01 07:02:29Z: Listening for Jobs
실제로 프로덕션 환경에서 실행하는 경우는/etc/rc.local에 기동 스크립트 쓰거나, GCE의 이야기로 말하면
startup-script
옵션이 있으므로 거기에 지정하는 등의 대응이 필요할 것 같습니다만 이번은 이대로 방치 .actions 탭의 runners 목록을 보면 Idle이되어 있음을 알 수 있습니다.
3. github actions 실행 스크립트 작성 🛠
쉽게 echo하는 스크립트를 만들었습니다.
.github/workflows/test.yaml
name: actions_test
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- master
jobs:
job1:
runs-on: self-hosted
# ステップの出力をジョブの出力にマップ
outputs:
output1: ${{ steps.step1.outputs.test }}
output2: ${{ steps.step2.outputs.test }}
steps:
- id: step1
run: echo "::set-output name=test::hello"
- id: step2
run: echo "::set-output name=test::world"
job2:
runs-on: self-hosted
needs: job1
steps:
- run: echo ${{needs.job1.outputs.output1}} ${{needs.job1.outputs.output2}}
.github/workflows
아래에 yaml
yml
파일을 만드는 것으로 인식합니다.↑의 yaml은 master push가 실행될 때 실행되는 작업입니다.
셀프 호스트 러너를 시작하면 러너가 자동으로
self-hosted
라는 레이블을 붙이므로 runs-on
와 같이 설정하여 마스터 푸시 중에 셀프 호스트 러너에서 실행되도록합니다.name
를 생략하면 파일 이름이 그대로 빌드 이름이됩니다.4. 동작 확인 🎉
이제 github actions가 성공적으로 실행되고 있는지 확인하십시오.
안전하게 echo되어 있는지 확인했습니다. 🎉
요약
셀프 호스트 러너의 도입 자체는 처음이었습니다.
그러나 보안을 위해 셀프 호스트 러너에 대한 인바운드 부분이 마음에 들지 않으므로 github에서 오는 요청의 IP 범위와 포트가 지정되었는지 확인하고 좁힐 필요가 있습니다.
Reference
이 문제에 관하여(GitHub Actions의 셀프 호스트 러너를 GCP에 30분 만에 세워보세요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sakas1231/items/567ea9bdc1d4ac9f8696텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)