github action을 사용해서 velog의 글을 백업하는 프로그램을 자동으로 매주 토요일에 수행하려고 한다.
백업 소스코드는 velog-backup 참고
Github -> Settings -> Actions -> Add self-hosted runner 메뉴에 들어가면 설치 방법이 나온다.
github action runner는 반드시 root 권한이 없는 계정에서 수행해야 한다.
root 계정에서 수행하면 에러가 발생한다.
> mkdir actions-runner && cd actions-runner
> curl -O -L https://github.com/actions/runner/releases/download/v2.273.2/actions-runner-linux-x64-2.273.2.tar.gz
> tar xzf ./actions-runner-linux-x64-2.273.2.tar.gz
> ./config.sh --url [PROJECT_GIT_URL] --token [PROJECT_TOKEN]
만약 이전에 configure를 수행한 적이 있다면 먼저 아래 명령어로 삭제해야 한다.
> ./config.sh remove --token [PROJECT_TOKEN]
tmux
나 screen
에서 runner를 실행시켜야 세션 타임 아웃으로 인해 runner가 중단되는 일이 없다.> ./run.sh &
또는
> tmux new-session -ds velog-backup /home/somnode/actions-runner/run.sh
github action runner 등록 후 .github/workflows/
경로에 workflow 파일(.yml)이 존재하면 runner가 동작한다.
name
: workflow 이름on
: workflow가 동작하는 조건[push]
: git push를 하면 동작jobs
: 수행할 job들build
: job 이름runs-on
: runner 지정steps
: job에서 수행할 목록들을 나열uses
: 이미 만들어진 action을 사용하려고 할 때 지정 name
: 수행할 목록의 이름run
: 수행할 명령어name: Velog Backup
on: [push]
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: Install dependencies
run: npm install
- name: Backup velog
run: |
node app.js -u somnode
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: Upload velog backup files
path: |
backup-somnode
github action에서 schedule 기능을 사용해서 자동으로 지정한 때에 workflow가 동작하도록 할 수 있다.
on
하위에 schedule에 cron을 지정할 수 있다.
cron 사용법 관련해서는 [linux] crontab 사용법 글을 참고하자.
참고로 github action에서 cron은 UTC 시간대 기준이다.
아래 workflow는 UTC 시간대 기준으로 매일 00시 00분에 동작한다.
on:
schedule:
- cron: "0 0 * * *"