// Create Actions Runner Config
// act_runner 버전은 현재 기준으로 0.2.10이 최신입니다.
$ docker run --entrypoint="" --rm -it gitea/act_runner:0.2.10 act_runner generate-config > config.yaml
// Create Actions Runner
// ${INSTANCE_URL} = http://xx.xx.xx.xx:3000/
// ${REGISTRATION_TOKEN} = Gitea > 설정 > Actions > Runners > Create new Runner > Token 확인
// ${RUNNER_NAME} = 이름 설정
// ${RUNNER_LABELS} = 라벨 설정
$ vi runner-compose.yaml
version: "3.8"
services:
runner:
image: gitea/act_runner:0.2.10
environment:
CONFIG_FILE: /config.yaml
GITEA_INSTANCE_URL: "${INSTANCE_URL}"
GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}"
GITEA_RUNNER_NAME: "${RUNNER_NAME}"
GITEA_RUNNER_LABELS: "${RUNNER_LABELS}"
volumes:
- ./config.yaml:/config.yaml
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock
$ docker-compose -f runner-compose.yaml up -d
// Container 이미지 중 gitea/act_runner:0.2.10이 실행되어있는 것을 확인
$ docker ps
Gitea UI에서 그림과 같이 나온다면 성공적으로 Runner를 생성한 것 입니다.
테스트 애플리케이션
// 테스트할 간단한 Spring Boot 코드
$ git clone https://github.com/hyunkwanko/demo.git
// .git 파일 제거
$ cd demo && rm -rf .git
// Gitea 저장소 생성 후 Push
// Branch는 Master로 해주세요.
Nexus 계정 등록
Gitea > Settings > Actions > Secrets
Secret 키 생성
// Secret 키 등록 (Nexus 계정) USERID, PASSWORD 등록
Gitea CI
// demo 애플리케이션 진입
$ cd demo
// Action Runner는 .gitea 디렉토리를 바라보고 있다.
$ mkdir -p ./.gitea/workflows && cd ./.gitea/workflows
// CI 파이프라인 구축
$ vi gitea-ci.yaml
name: Build And Test
run-name: ${{ gitea.actor }} is runs ci pipeline
on:
push:
branches:
- master
jobs:
Gitea-Docker-Build-Push:
runs-on: ubuntu-22.04
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Login to Nexus
run: |
docker login nexus-docker.{Public IP}.sslip.io \
-u ${{ secrets.USERID }} \
-p ${{ secrets.PASSWORD }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
push: true
tags: nexus-docker.{Public IP}.sslip.io/demo:1.0.${{ gitea.run_number }}
$ git push 후 완료
// CI 파이프라인은 다음과 같습니다.
1. Git의 master 브랜치에 push 하는것이 트리거가 되어 Action Runner가 동작을 시작합니다.
2. Check out repository code
3. Login to Docker
4. Build and push (Nexus)