반응형
Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- linux 셸 스크립트
- botkube
- github-actions
- github
- Docker
- cloudfront s3
- markdown
- k8s
- kubenetes slack
- Harbor
- terraform
- github actions
- Mermaid
- nextjs 정적배포
- nextjs html확장자
- ubuntu
- k8s botkube
- k8s slack
- k8s chatops
- Diagrams
- linux 셸 프로그래밍
- 쉘 프로그래밍
- helm
- TLS
- markdown mermaid
- aws
- SSH
- 리눅스
- kubenetes botkube
- kubernetes
Archives
- Today
- Total
민한의 블로그
Github Actions 에서 working-directory 설정하기 본문
728x90
반응형
githubactions에서 dockerfile build 할떄 주의사항
github actions 에서의 step 작업은 항상 루트 파일로 이동한다.
따라서 각각의 스텝마다
작업을 할 공간으로 이동하거나, working-directory를 지정해주어야 한다.
name: React CICD
on:
push:
branches: ["develop"]
jobs:
working-directory-test:
runs-on: ubuntu-18.04
env:
working-directory: ./packages/app
steps:
- name: Checkout
uses: actions/checkout@v3
- name: 'Create env file111'
run: |
pwd
ls -al
cd ./packages/app
touch .env.production
echo REACT_APP_LOCAL111=${{ secrets.REACT_APP_LOCAL }} >> .env.production
cat .env.production
- name: 'Create env file222'
run: |
pwd
ls -al
cd ./packages/app
echo REACT_APP_LOCAL222=${{ secrets.REACT_APP_LOCAL }} >> .env.production
cat .env.production
- name: 'Create env file333'
working-directory: /packages/app
run: |
pwd
ls -al
echo REACT_APP_LOCAL333=${{ secrets.REACT_APP_LOCAL }} >> .env.production
cat .env.production
설정을 해석해보자면,
develop 브런치에서 push이벤트가 발생하면,
ubuntu-18.04 환경에서 github actions 가 작동하게 됩니다.
env파일로 미리 working-directory 를 선언해줍니다.
Checkout actions를 사용하여 나의 레포지토리를 가져와 줍니다.
첫번째 step에서
현재 작업 위치를 확인하고 ./packages/app 폴더로 이동합니다.
.env.production 파일을 생성하여 github actions secrets의 변수를 입력해 주고,
작업 위치의 폴더와 파일들을 확인후, .env.productnio을 읽어줍니다.
- name: 'Create env file111'
run: |
pwd
cd ./packages/app
touch .env.production
echo REACT_APP_LOCAL111=${{ secrets.REACT_APP_LOCAL }} >> .env.production
pwd
ls -al
cat .env.production
아래가 작업 내용입니다.
/home/runner/work/MY_TEST_REPO/MY_TEST_REPO
/home/runner/work/MY_TEST_REPO/MY_TEST_REPO/packages/app
total 40
drwxr-xr-x 4 runner docker 4096 Aug 26 03:58 .
drwxr-xr-x 4 runner docker 4096 Aug 26 03:58 ..
-rw-r--r-- 1 runner docker 42 Aug 26 03:58 .env.production
-rw-r--r-- 1 runner docker 271 Aug 26 03:58 .gitignore
-rw-r--r-- 1 runner docker 1807 Aug 26 03:58 craco.config.ts
-rw-r--r-- 1 runner docker 2025 Aug 26 03:58 package.json
drwxr-xr-x 2 runner docker 4096 Aug 26 03:58 public
drwxr-xr-x 5 runner docker 4096 Aug 26 03:58 src
-rw-r--r-- 1 runner docker 544 Aug 26 03:58 tsconfig.json
-rw-r--r-- 1 runner docker 249 Aug 26 03:58 tsconfig.paths.json
REACT_APP_LOCAL111=***
두번째도 같은 작업이되, 변수명만 다르게 하여 .env.production에 넣어줍니다.
- name: 'Create env file222'
run: |
pwd
cd ./packages/app
touch .env.production
echo REACT_APP_LOCAL222=${{ secrets.REACT_APP_LOCAL }} >> .env.production
pwd
ls -al
cat .env.production
/home/runner/work/MY_TEST_REPO/MY_TEST_REPO
/home/runner/work/MY_TEST_REPO/MY_TEST_REPO/packages/app
total 40
drwxr-xr-x 4 runner docker 4096 Aug 26 03:58 .
drwxr-xr-x 4 runner docker 4096 Aug 26 03:58 ..
-rw-r--r-- 1 runner docker 84 Aug 26 03:58 .env.production
-rw-r--r-- 1 runner docker 271 Aug 26 03:58 .gitignore
-rw-r--r-- 1 runner docker 1807 Aug 26 03:58 craco.config.ts
-rw-r--r-- 1 runner docker 2025 Aug 26 03:58 package.json
drwxr-xr-x 2 runner docker 4096 Aug 26 03:58 public
drwxr-xr-x 5 runner docker 4096 Aug 26 03:58 src
-rw-r--r-- 1 runner docker 544 Aug 26 03:58 tsconfig.json
-rw-r--r-- 1 runner docker 249 Aug 26 03:58 tsconfig.paths.json
REACT_APP_LOCAL111=***
REACT_APP_LOCAL222=***
분명히 첫번째 step에서 cd ./packages/app 으로 폴더를 이동하였음에도 불구하고,
또 다시 이동하여서 작업을 해야 하는것 을 알수있습니다.
깜빡 할수도있고, 생각처럼 작동하지 않아서 이게 왜 이러지 싶을수가 있습니다.
그럴땐 진작에 working-directory를 설정해주면 마음이 편해집니다.
- name: 'Create env file333'
working-directory: ${{ env.working-directory }}
run: |
echo env.working-directory=${{ env.working-directory }}
pwd
ls -al
echo REACT_APP_LOCAL333=${{ secrets.REACT_APP_LOCAL }} >> .env.production
cat .env.production
env.working-directory=./packages/app
/home/runner/work/MY_TEST_REPO/MY_TEST_REPO/packages/app
total 40
drwxr-xr-x 4 runner docker 4096 Aug 26 03:58 .
drwxr-xr-x 4 runner docker 4096 Aug 26 03:58 ..
-rw-r--r-- 1 runner docker 84 Aug 26 03:58 .env.production
-rw-r--r-- 1 runner docker 271 Aug 26 03:58 .gitignore
-rw-r--r-- 1 runner docker 1807 Aug 26 03:58 craco.config.ts
-rw-r--r-- 1 runner docker 2025 Aug 26 03:58 package.json
drwxr-xr-x 2 runner docker 4096 Aug 26 03:58 public
drwxr-xr-x 5 runner docker 4096 Aug 26 03:58 src
-rw-r--r-- 1 runner docker 544 Aug 26 03:58 tsconfig.json
-rw-r--r-- 1 runner docker 249 Aug 26 03:58 tsconfig.paths.json
REACT_APP_LOCAL111=***
REACT_APP_LOCAL222=***
REACT_APP_LOCAL333=***
step마다 working-directory를 설정하는것이 불편하다면
default로 전체로 설정해주거나
name: Node.js CI
on:
push:
branches: [ frontend-develop ]
defaults:
run:
working-directory: ./app
jobs:
working-directory-test:
defaults:
run:
working-directory: ./app
steps:
- uses: actions/checkout@v1
각각의 job에 설정해줄수 있습니다.
name: CI
on: [push]
jobs:
working-directory-test:
defaults:
run:
working-directory: ./app
steps:
- uses: actions/checkout@v1
728x90
반응형
'인프라 > CICD' 카테고리의 다른 글
Github Actions의 Cache를 삭제해보자. (0) | 2022.12.14 |
---|---|
Private docker Registry)Harbor 란? 각 docker-compose 명령어 모음 (0) | 2022.05.03 |
Github_Actions란? (0) | 2021.11.23 |
Comments