본문으로 바로가기

TIL 2021-12-29 Github Action Release, __dirname is not defined

category TIL 2021. 12. 29. 23:14
Github Action Release

 

어제 Github Action으로 fs.write를 해서 repogistory에 작성되는 줄 알았는데, 컨테이너 내부에만 작성되었던 것이었다.

그래서 Github release를 통해서 json을 배포하기로 하였다.

 

 

hub release [--include-drafts] [--exclude-prereleases] [-L LIMIT] [-f FORMAT]
hub release show [-f FORMAT] TAG
hub release create [-dpoc] [-a FILE] [-m MESSAGE|-F FILE] [-t TARGET] TAG
hub release edit [options] TAG
hub release download TAG [-i PATTERN]
hub release delete TAG

release는 hub release create 커맨드를 통해 가능하다.

 

-a는 attached할 파일을 의미하고, -m은 메시지인데 첫 메세지는 타이틀, 이후의 -m은 description으로 간다.

 

-t는 Target branch를 의미한다. 디폴트는 현 브랜치,

 

태그는 무조건 하나 이상 추가해야한다. 태그를 통해 Release를 관리하기 때문

 

 

cd json && zip -r backup.zip ./*.json && hub release create -a backup.zip -m `date '+%Y-%m-%d'` `date '+%Y-%m-%d'`

모든 json을 모아서 zip파일로 만들고, -a를 통해서 파일을 첨부한다.

 

-m `date '+%Y-%m-%d'` `date '+%Y-%m-%d'`는 제목과 태그를 전부 오늘 날짜로 지정한 것이다.

 

 

리눅스에서 date 명령어를 통해서 현 시간을 알 수 있는데,

 

date: extra operand

위의 에러가 발생했다.  이는 date에서는 +를 통해서 포맷을 지정하는데 이것을 뒤에 형식과 띄어쓰기를 해버렸던 것.

 

date '+ %Y-%m-%d'

 

이외에도 quotation 실수 등이 이것을 야기함.

 

https://hub.github.com/hub-release.1.html

 

hub-release(1) - Manage GitHub Releases for the current repository.

Enable colored output even if stdout is not a terminal. WHEN can be one of "always" (default for --color), "never", or "auto" (default).

hub.github.com

 

 

 

__dirname is not defined

 

Common js 모듈을 ES 모듈로 바꾸었더니 이런 문제가 발생하였다.

 

이는 ECMAScripts  module은 __dirname을 포함하고 잇지 않기 때문이고 이를 별도로 정의해주어야한다.

 

import path from 'path';
const __dirname = path.resolve();
import { fileURLToPath } from 'url';
import { dirname } from 'path';

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

등의 방법을 통해 해결할수 있다.