GitHub Actions Self-hosted Runner running on AWS CodeBuild
- awscli
- docker
- github-cli
- actions/checkout@v2
- actions/github-script@v2
- aws-actions/configure-aws-credentials@v1
- ruby/setup-ruby@v1
personal-access-token
(required) : GitHub Personal access tokenproject-name
(optional) : AWS CodeBuild Project Name, Defaults to SelfHostedRunnercompute-type-override
(optional) : AWS CodeBuild Compute Type, Defaults to BUILD_GENERAL1_SMALLadditional-label
(optional) : Self-hosted Runner additional label, Defaults to runner
aws-build-id
: AWS CodeBuild Build ID
steps:
- uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-1
- uses: rvillage/self_hosted_runner@v1-beta
id: setup
with:
personal-access-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- run: echo ${{ steps.setup.outputs.aws-build-id }}
.deploy/cloud_formation/codebuild.yml
でCloudFormationスタックの作成- docker imageのビルドしてECRにプッシュ
DOCKER_BUILDKIT=1 docker build -t xxx.dkr.ecr.ap-northeast-1.amazonaws.com/self_hosted_runner:latest -f Dockerfile .
docker push xxx.dkr.ecr.ap-northeast-1.amazonaws.com/self_hosted_runner:latest
- IAMユーザ
github-actions-user
のアクセスキーをGitHubリポジトリに設定 - RunnerToken発行用のPersonal access tokenをGitHubリポジトリに設定
.github/workflows/test.yml
の作成
jobs:
setup:
runs-on: ubuntu-20.04
steps:
- uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-1
- uses: rvillage/self_hosted_runner@v1-beta
with:
personal-access-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
first_job:
needs: setup
runs-on: [self-hosted, runner, "${{ github.run_id }}"]
steps:
- run: echo "Hello SelfHostedRunner!"
- (初回のみ) docker imageのビルド
DOCKER_BUILDKIT=1 docker build -t local/runner -f Dockerfile .
docker-compose up --no-start
- (初回のみ)
docker-compose.yml.sample
からdocker-compose.yml
にコピーしてenvを設定 - 起動
docker-compose start runner && docker-compose logs -f runner
- 停止
docker-compose stop runner
- クリーンアップ
docker-compose down --volumes