Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop/be 1 #1

Merged
merged 108 commits into from
Aug 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
7328229
feat: Swagger 의존성 추가 및 초기 설정
hangillee Jul 12, 2024
3f8cc6c
docs: pull request 템플릿 추가
jinyoung234 Jul 12, 2024
c3c2e58
[Feature] - DockerFile 작성 (#10)
hangillee Jul 15, 2024
97fdee6
feat: CI workflow 작성 (#12)
Libienz Jul 15, 2024
1ea470a
fix: gradle wrapper 재설정
Libienz Jul 15, 2024
5e38631
fix: 도커 파일 경로 수정
Libienz Jul 15, 2024
c34b0f1
[Feature] - Docker Push / Docker Build CI workflow 추가 (#14)
Libienz Jul 15, 2024
1019e88
fix: be-dev-ci docker image 플랫폼 설정
eunjungL Jul 15, 2024
ac087fe
feat: Ping api 추가
eunjungL Jul 15, 2024
a961ff3
[Feature] - 여행기 관련 Entity 생성 #17
hangillee Jul 15, 2024
d0ad948
[Fix] - Database 예약어였던 Entity 필드명 수정
hangillee Jul 15, 2024
f182fb5
[Feature] - 여행기 관련 Entity Repository 생성
slimsha2dy Jul 15, 2024
c971479
[Feature] - 여행기 상세 조회 Service 생성
nak-honest Jul 15, 2024
60b38f1
[Feature] - local/dev profile 분리 (#29)
eunjungL Jul 15, 2024
a154c71
[Feature] - 여행기 상세 조회 Controller 생성
nak-honest Jul 15, 2024
4242843
[Feature] - self hosted runner 를 활용한 CD 구축
hangillee Jul 16, 2024
89042a7
[Fix] - CD deploy.sh 실행 경로 수정
hangillee Jul 16, 2024
d688b56
[Fix] - CD docker compose up 수행 경로 수정
hangillee Jul 16, 2024
74ee4c2
[Feature] - CORS 설정
eunjungL Jul 16, 2024
7a7c5dc
[Feature] - PR을 생성 할 때 빌드 및 테스트 하는 CI Workflow 추가 (#41)
nak-honest Jul 16, 2024
1c0aa62
[Feature] - JPA Auditing을 위한 BaseEntity 생성 (#44)
hangillee Jul 17, 2024
2f60adb
[Feature] - 여행 계획 작성 API 구현 (#50)
eunjungL Jul 18, 2024
63ca1ef
[Feature] - 여행기 상세 조회 로직 리팩토링 (#54)
hangillee Jul 18, 2024
4626457
[Feature] - 여행 계획 상세 조회 API 구현 (#56)
eunjungL Jul 19, 2024
2fc98aa
[Feature] - 카카오 로그인 구현 (#55)
slimsha2dy Jul 19, 2024
1c81f01
[Feature] - 여행 계획 코드 리팩토링 (#67)
eunjungL Jul 19, 2024
e128b39
[Feature] - 여행기 작성 API 및 여행기 전체 조회 API 구현
hangillee Jul 21, 2024
bb8787d
[Fix] - CI xml 파일 미인식 문제 및 요청 초과로 인한 액션 실패 해결 (#85)
nak-honest Jul 22, 2024
7333ddf
[Feature] - 인증과정 예외처리 (#84)
Libienz Jul 22, 2024
0701d93
[Feature] - dev profile https (#93)
eunjungL Jul 24, 2024
1575c19
[Feature] - 여행기 관련 테스트 작성 및 리팩토링 (#99)
hangillee Jul 24, 2024
aaa87ab
[Refactor] - 여행기 응답 DTO 속성 이름 변경 (#101)
hangillee Jul 24, 2024
1674bb4
[Refactor] - 여행 계획 양방향 의존 제거 및 리팩토링 (#102)
eunjungL Jul 24, 2024
7bf4470
[Feature] - AWS S3 이미지 저장 구현 (#98)
slimsha2dy Jul 24, 2024
52d65ee
[Refactor] - 여행기 작성 요청 DTO 필드 이름 변경 (#104)
hangillee Jul 24, 2024
40ecccb
[Feature] - FE develop CORS 처리 (#108)
eunjungL Jul 24, 2024
da7fcb6
[Feature] - FE develop CORS 처리 (#109)
eunjungL Jul 24, 2024
b1a8747
[Fix] - 이미지 저장 api 반환 값 변경 (#112)
nak-honest Jul 24, 2024
d1c4f11
[Fix] - 업로드한 이미지 url에 접속하면 이미지를 열지 않고 다운로드 받는 버그 해결 (#114)
nak-honest Jul 24, 2024
13428ea
[Refactor] 여행기, 여행계획 DTO에 사용되는 도메인 용어 통일 개선 (#119)
Libienz Jul 24, 2024
dba635d
[Fix] Kakao Redirect Uri 서버 엔드포인트에서 랜딩 페이지로 수정 (#121)
Libienz Jul 24, 2024
c8616cb
[Fix] Kakao Oauth 카카오 로그인 api 명세 수정 (#123)
Libienz Jul 24, 2024
c4c0596
[Refactor] - Oauth 로그인 과정 코드 리팩터링 및 테스트 작성 (#111)
Libienz Jul 25, 2024
998f96b
[Feature] - Github action gradle 캐싱 도입 (#126)
eunjungL Jul 25, 2024
6389b30
[Refactor] - Test fixture를 Enum으로 리팩토링 (#129)
hangillee Jul 25, 2024
2d92a14
[Feature] 카카오 로그인 Redirect Uri 프론트 배포 주소로 변경 (#132)
Libienz Jul 25, 2024
4a8f155
[Fix] - 업로드 이미지 용량 조정 (#134)
Libienz Jul 26, 2024
245bc34
[Fix] - Spring Boot Timezone KST로 설정 (#136)
hangillee Jul 26, 2024
a6acb98
[Fix] - HEIC 이미지 파일 확장자 허용 (#138)
nak-honest Jul 26, 2024
ea36b0f
[Feature] - 프론트 로컬 개발을 위한 Oauth redirect uri (#144)
Libienz Jul 29, 2024
8f0fd60
[Feature] - 인가 구현 (#79)
eunjungL Jul 30, 2024
46d276a
fix: JwtAuthFilter white list 로그인 method post로 변경 (#155)
eunjungL Jul 30, 2024
3d5c16b
[Fix] - Authorization 오류 해결 (#156)
eunjungL Jul 30, 2024
81d86ef
[Feature] - 도메인 검증 규칙 추가 (#151)
Libienz Jul 30, 2024
56bf8cf
[Fix] - Authorization 오류 해결 (#157)
eunjungL Jul 30, 2024
4d76184
[Fix] - SSL key-store-password 변경 (#163)
eunjungL Jul 31, 2024
32635ad
[Feature] - 로그인 명세 수정 개선 (#170)
Libienz Jul 31, 2024
6540344
[Fix] - CORS config에서 allowedHeaders 제거 (#173)
eunjungL Jul 31, 2024
e0dfd60
[Feature] - 여행 계획 도메인쪽 인가 적용 (#178)
eunjungL Aug 1, 2024
8b4f938
[Feature] - 로깅 프레임워크 적용 (#177)
eunjungL Aug 1, 2024
2e51383
[Feature] - 로그인 한 사용자만 여행기를 작성할 수 있도록 리팩토링 (#175)
hangillee Aug 1, 2024
7e5c535
[Feature] - 여행기, 여행계획 도메인 검증 규칙 추가 및 테스트 작성 (#179)
Libienz Aug 1, 2024
7b0f92c
[Feature] - logback console appender에 색상 추가 (#184)
eunjungL Aug 1, 2024
d8c3dde
[Feature] - 사용하지 않는 S3 이미지 관리 기능 구현 (#183)
slimsha2dy Aug 1, 2024
b954dd2
[Fix] - 썸네일 이미지 S3 영구 폴더 복사 기능 구현 (#190)
slimsha2dy Aug 2, 2024
7e3522c
[Feature] - 마이 페이지 API 구현 (#195)
eunjungL Aug 2, 2024
58e7457
[Feature] - 여행 계획 공유 기능 구현 (#203)
Libienz Aug 4, 2024
099b3b6
[Fix] - 여행계획이 저장되지 않는 문제 해결UUID (#212)
Libienz Aug 4, 2024
c425ade
[Fix] - DB 커넥션 인코딩 파라미터 지정 (#213)
Libienz Aug 4, 2024
4cc6d49
[Fix] - 데이터베이스 url 원복 (#214)
Libienz Aug 4, 2024
fc9284e
[Fix] - 여행 계획 UUID 하이버네이트 매핑 타입과 같도록 수정 (#220)
Libienz Aug 5, 2024
bd8f6d3
[Feature] - 로그인 명세 수정 (#202)
Libienz Aug 5, 2024
10e20dd
[Feature] - 마이페이지 API Swagger 작업 (#218)
eunjungL Aug 6, 2024
d9b7c98
[Feature] - 마이페이지 내 여행기 조회 응답 수정 (#231)
eunjungL Aug 6, 2024
3291d6c
[Feature] - 마이 페이지 내 여행 계획 응답 변경 (#233)
eunjungL Aug 6, 2024
4f4b451
[Feature] - 삭제 API 구현 (#235)
nak-honest Aug 7, 2024
f52ed01
[Feature] - 자체 회원 가입과 로그인 구현 (#234)
hangillee Aug 7, 2024
c01441c
[Fix] - 삭제 API CORS 문제 해결 #239
slimsha2dy Aug 7, 2024
134dda5
[Fix] - JwtAuthFilter Authorization Header 파싱 오류 수정 (#243)
eunjungL Aug 7, 2024
42aea59
[Feature] - 태그 생성 및 조회 API 작성 (#238)
eunjungL Aug 7, 2024
96c30bf
[Feature] - 여행 계획, 여행기 하위 도메인 조회 명세 변경 (#244)
Libienz Aug 7, 2024
49d07af
[Feature] - 이미지 업로드 용량 증가 (#246)
nak-honest Aug 7, 2024
645a236
[Refactor] - 메인 페이지 여행기 목록 응답에 사용자 프로필 사진 URL 추가 (#252)
hangillee Aug 7, 2024
3b600fa
[Feature] - 여행기 조회 응답에 작성자 정보 추가 (#257)
Libienz Aug 8, 2024
eb565d4
[Feature] - 예외 로깅 시 InternalServerError 는 스택 트레이스도 같이 로깅하도록 변경 (#264)
nak-honest Aug 8, 2024
04d4cb5
[Fix] - 장소 설명이 255자를 넘어가는 여행기, 여행 계획이 저장 되지 않는 오류 수정 (#270)
Libienz Aug 8, 2024
63cf273
[Fix] - 이미지 최대 업로드 개수 검증 누락 해결 (#271)
hangillee Aug 8, 2024
28733c9
[Fix] - InternalServerError 로깅 시 예외 스택 트레이스가 제대로 로깅되지 않는 문제 해결 (#278)
nak-honest Aug 8, 2024
da69b69
[Fix] - S3 이미지 오류 예외 메시지 변경 (#284)
eunjungL Aug 9, 2024
f7ec5ab
[Feature] - 외부 API request/response 로깅 (#286)
nak-honest Aug 9, 2024
ff0ecf1
[Fix] - 여행 날짜가 하나도 추가되지 않은 여행기가 정상 작성되버리는 문제 발생 (#289)
hangillee Aug 9, 2024
33edbe7
[Fix] - 코드 오타 및 적절하지 않은 객체 타입 수정 (#291)
hangillee Aug 9, 2024
7b0d4c5
[Feature] - refresh token 개발 (#293)
eunjungL Aug 12, 2024
4fd2ed4
[Feature] - 여행기 작성/조회 시 태그 추가 (#305)
eunjungL Aug 14, 2024
0f36b69
[Feature] - 사용자 닉네임 수정 기능 구현 (#311)
nak-honest Aug 14, 2024
c24d508
[Feature] - 여행기 제목 기준 검색 기능 구현 (#302)
hangillee Aug 14, 2024
dcecd75
[Feature] - 여행 계획 TODO 기능을 구현 (#319)
Libienz Aug 16, 2024
6f90028
[Feature] - 여행기 수정 기능 구현 (#321)
hangillee Aug 16, 2024
af47c69
[Feature] - 메인페이지 태그 기반 필터링 기능 구현 (#330)
eunjungL Aug 16, 2024
f418f4e
[Feature] - 좋아요 기능 구현 (#336)
nak-honest Aug 18, 2024
177091b
[Feature] - Local 환경에서는 임베디드 S3를 사용하도록 적용 (#322)
slimsha2dy Aug 18, 2024
385f5b8
[Fix] bean 중복 오류 수정 (#344)
slimsha2dy Aug 19, 2024
a59cbf6
[Feature] - 여행 계획 수정 기능 구현 (#341)
slimsha2dy Aug 19, 2024
27e1c4b
[Fix] - 삭제 기능 쿼리 문제 해결 (#347)
hangillee Aug 20, 2024
732dd19
[Feature] - Spring boot Prod 프로필 분리 (#345)
eunjungL Aug 20, 2024
ab0594d
[Fix] - JPQL 관련 alias ambiguous 예외 발생 (#352)
hangillee Aug 20, 2024
3a1e291
[Fix] - JPQL 관련 alias ambiguous 예외 발생 (#355)
hangillee Aug 20, 2024
db3dae0
Create be-prod-cd.yml
hangillee Aug 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# ✅ 작업 내용

- 작업 내용 1
- 작업 내용 2
- 작업 내용 3

# 📸 스크린샷

# 🙈 참고 사항
67 changes: 67 additions & 0 deletions .github/workflows/be-cd-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: BE CD DEV

on:
push:
branches: [ develop/be ]

jobs:
build:
runs-on: ubuntu-latest

defaults:
run:
shell: bash
working-directory: ./backend

steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Make keystore file
run: echo "${{secrets.SSL_KEYSTORE}}" | base64 --decode > ./src/main/resources/keystore.p12

- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{runner.os}}-gradle-${{hashFiles('**/*.gradle*', '**/gradle-wrapper.properties')}}
restore-keys: |
${{runner.os}}-gradle-

- name: Setup Gradle
uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build with Gradle
run: ./gradlew clean build

- name: Sign in Dockerhub
uses: docker/login-action@v1
with:
username: ${{secrets.DOCKER_USERNAME}}
password: ${{secrets.DOCKER_PASSWORD}}

- name: Build the Docker image
run: docker build -f ./Dockerfile --platform linux/arm64 --no-cache -t touroot/touroot-api .

- name: Push the Docker Image to Dockerhub
run: docker push touroot/touroot-api

deploy:
needs: build
runs-on: self-hosted

steps:
- name: Docker Image pull
run: sudo docker pull touroot/touroot-api

- name: Docker Compose up
run: sudo docker compose -f ~/docker/touroot-docker.yml up -d
57 changes: 57 additions & 0 deletions .github/workflows/be-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: BE CI

on:
pull_request:
branches: [ production/be, develop/be ]

jobs:
build:
runs-on: ubuntu-latest

defaults:
run:
shell: bash
working-directory: ./backend

steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Make keystore file
run: echo "${{secrets.SSL_KEYSTORE}}" | base64 --decode > ./src/main/resources/keystore.p12

- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{runner.os}}-gradle-${{hashFiles('**/*.gradle*', '**/gradle-wrapper.properties')}}
restore-keys: |
${{runner.os}}-gradle-

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Test with Gradle
run: ./gradlew build

- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
if: ${{ always() }}
with:
files: ${{ github.workspace }}/backend/build/test-results/**/*.xml
seconds_between_github_reads: 1.0
seconds_between_github_writes: 3.0
secondary_rate_limit_wait_seconds: 90.0

- name: When test fail, comment on that code
uses: mikepenz/action-junit-report@v3
if: always()
with:
report_paths: ${{ github.workspace }}/backend/build/test-results/**/*.xml
token: ${{ github.token }}
67 changes: 67 additions & 0 deletions .github/workflows/be-prod-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: BE CD PROD

on:
push:
branches: [ production/be ]

jobs:
build:
runs-on: ubuntu-latest

defaults:
run:
shell: bash
working-directory: ./backend

steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Make keystore file
run: echo "${{secrets.PROD_SSL_KEYSTORE}}" | base64 --decode > ./src/main/resources/keystore.p12

- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{runner.os}}-gradle-${{hashFiles('**/*.gradle*', '**/gradle-wrapper.properties')}}
restore-keys: |
${{runner.os}}-gradle-

- name: Setup Gradle
uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build with Gradle
run: ./gradlew clean build

- name: Sign in Dockerhub
uses: docker/login-action@v1
with:
username: ${{secrets.DOCKER_USERNAME}}
password: ${{secrets.DOCKER_PASSWORD}}

- name: Build the Docker image
run: docker build -f ./Dockerfile --platform linux/arm64 --no-cache -t touroot/touroot-api:prod .

- name: Push the Docker Image to Dockerhub
run: docker push touroot/touroot-api:prod

deploy:
needs: build
runs-on: [self-hosted, prod]

steps:
- name: Docker Image pull
run: sudo docker pull touroot/touroot-api:prod

- name: Docker Compose up
run: sudo docker compose -f ~/docker/api-docker.yml up -d
2 changes: 2 additions & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@
build

**/.DS_Store
/log
/src/main/resources/keystore.p12
4 changes: 4 additions & 0 deletions backend/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM openjdk:17-oracle
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "-Duser.timezone=Asia/Seoul", "/app.jar"]
68 changes: 47 additions & 21 deletions backend/build.gradle
Original file line number Diff line number Diff line change
@@ -1,40 +1,66 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.1'
id 'io.spring.dependency-management' version '1.1.5'
id 'java'
id 'org.springframework.boot' version '3.3.1'
id 'io.spring.dependency-management' version '1.1.5'
}

group = 'woowacourse'
group = 'kr.touroot'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4'
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'

implementation 'software.amazon.awssdk:s3:2.20.28'
implementation 'software.amazon.awssdk:sts:2.20.28'
implementation 'software.amazon.awssdk:auth:2.20.28'
implementation 'io.findify:s3mock_2.13:0.2.6'

compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.rest-assured:rest-assured:5.5.0'
testImplementation 'io.findify:s3mock_2.13:0.2.6'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

// cache
implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation("com.github.ben-manes.caffeine:caffeine:3.1.8")

// QueryDSL
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

tasks.named('test') {
useJUnitPlatform()
useJUnitPlatform()
}
Binary file modified backend/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion backend/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
5 changes: 4 additions & 1 deletion backend/gradlew
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#

##############################################################################
#
Expand Down Expand Up @@ -84,7 +86,8 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
Expand Down
Loading
Loading