기존의 Travis-CI를 이용하여 Hexo 블로그를 배포하기 위해,
ChangJoo Park님의 포스팅인 Travis CI를 이용한 Github Pages + Hexo 블로그 자동 배포하기 를 참고하여 아래와 같은 YAML 파일을 작성하여 Travis CI 서비스를 이용해서 배포하였습니다.
기존의 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 language: node_js node_js: - "10" branches: only: - master before_install: - npm install -g hexo install: - npm install before_script: - git config --global user.name "INPUT_YOUR_USER_NAME" - git config --global user.email "INPUT_YOUR_EMAIL" - sed -i "s/__GITHUB_TOKEN__/${__GITHUB_TOKEN__}/" _config.yml script: - hexo clean - hexo generate - hexo deploy
Github에서 자체적으로 Github Actions
라는 기능을 베타로 제공중이여서 신청을 해두었고,
어제 승인되어 repo에 아래 이미지와 같은 탭이 생겼습니다.🎉
해당 기능을 이용해 보기 위해 travis.yml 파일을 Github Actions에 맞게 아래와 같이 바꾸어보았습니다.
변경사항
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 name: Node CI on: push: branches: - master jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [12. x ] steps: - uses: actions/checkout@v1 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - name: Hexo-Cli Install run: npm i -g hexo - name : Change Environment env: GITHUB_TOKEN: "INPUT_YOUR_GITHUB_ACCECSS_TOKEN" run: | git config --global user.name "INPUT_YOUR_USER_NAME" git config --global user.email "INPUT_YOUR_EMAIL" sed -i "s/__GITHUB_TOKEN__/${GITHUB_TOKEN}/" _config.yml - name: NPM Install run: npm install - name: Hexo Clean run: hexo clean - name: Hexo Generate run: hexo g - name: Hexo Deploy run: hexo d
Github Actions
문서에 따르면 기존의 Secret Config 부분은 repo의 아래의 탭에서 지정이 가능합니다.
해당 Secrets를 사용시에는 사용하려는 step에서 with 키워드를 이용해 설정하거나, env 를 이용해서 아래와 같이 설정 할 수 있습니다.
1 2 3 4 5 6 steps: - name: Test Set Secret With with: ${{ secrets.YOUR_SECRET }} - name: Test Set Secret Env env: my_secret : ${{ secrets.YOUR_SECRET }}
사담
Github Actions는 이미 만들어진 환경을 사용 할 수도 있고, Github Repo에 있는 도커 스크립트를 이용할 수도 있는것으로 보입니다.
1 2 3 4 5 6 steps: - uses: actions/setup-node@74bc508 - uses: actions/setup-node@v1.0 - uses: actions/setup-node@master - uses: docker://alpine:3.8 - uses: ./.github/actions/my-action
또한, if
제어문도 사용이 가능하고, 쉘을 선택하여 처리한다거나 Cron-Job등이 사용가능하고
jobs.<job_id>.strategy.matrix
를 활용하여 os와 실행환경(ex. node | php) 버전을 조합하여 빌드 테스트가 가능하다고 합니다.
1 2 3 4 5 6 7 8 9 runs-on: ${{ matrix.os }} strategy: matrix: node: [6 , 8 , 10 ] os: [ubuntu-16.04 , ubuntu-18.04 ] steps: - uses: actions/setup-node@v1 with: node-version: ${{ matrix.node }}
이와 같이 정의할 경우에는 3개의 노드버전과 2개의 os 버전을 조합하여 6가지의 job이 실행됩니다.
이외에도 다양한 기능을 제공하여 깃허브를 이용하고 있다면 한번쯤은 이용해봐도 좋을 서비스라고 생각합니다.