일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @GeneratedValue
- @GenericGenerator
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- CCW
- chat GPT
- CICD
- Collections
- Combination
- combinations
- Comparator
- Today
- Total
기록
CICD 파이프라인 구축기(2) - Verification Job과 Secrets 관리 본문
시작하면서
이번 포스팅에서는 GitHub Actions를 활용한 Verification job과 GitHub Secrets를 사용하여 연결 정보를 숨기고 필요할 때 가져다 쓰는 전략과 과정을 소개하겠습니다. 또한, Secrets 외부에서 프로퍼티 파일을 가져오는 방법과 두 가지 방법의 장단점을 비교해 보겠습니다.
Verification Job
Verification job은 CI/CD 파이프라인에서 코드의 품질을 보장하는 중요한 단계입니다. 이 단계에서는 코드가 정상적으로 작동하는지 확인하기 위해 테스트를 수행하며, 모든 테스트가 통과해야 다음 단계로 진행합니다.
(1) Job
verification:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '17'
- name: Create aws-info file
run: |
mkdir -p src/main/resources/aws
echo "${{ secrets.RDS_INFO_V1 }}" > src/main/resources/aws/rds-info.yml
echo "${{ secrets.S3_INFO }}" > src/main/resources/aws/s3-info.yml
- name: Test Code
run: ./gradlew test
(2) Steps
- step1. Checkout Code: actions/checkout@v2를 사용하여 현재 PR의 코드를 체크아웃합니다.
- step2. Set up JDK 17: Java 애플리케이션을 실행하기 위해 필요한 JDK를 설치합니다. actions/setup-java@v2를 사용해 JDK를 설정하며, 이 단계에서 올바른 Java 버전을 사용해야 테스트가 성공적으로 수행됩니다.
- step3. Create aws-info file: AWS 연결 정보는 GitHub Secrets에 저장되어 안전하게 관리됩니다. 이 단계에서는 Secrets에서 정보를 불러와 YAML 파일로 생성합니다. 이 파일은 애플리케이션이 AWS 리소스에 접근하는 데 필요한 정보를 담고 있습니다.
- step4. Test Code: 마지막으로, ./gradlew test 명령어를 사용하여 모든 테스트를 실행합니다. 이 단계에서 모든 테스트가 통과해야만 다음 단계로 진행할 수 있습니다.
Secrets와 외부 프로퍼티 파일 사용
1. 외부에서 프로퍼티 파일을 가져오는 방법
Secrets 외에도 외부에서 프로퍼티 파일을 가져오는 방법이 여러 가지 있습니다. 그중 하나는 AWS S3에 프로퍼티 파일을 저장하고 이를 다운로드하여 사용
하는 것입니다. 또 다른 방법은 Java 애플리케이션을 실행할 때 java -jar
명령어에 프로퍼티 파일의 위치를 직접 지정하는 것입니다. 이렇게 하면 외부에 저장된 프로퍼티 파일을 직접 참조할 수 있습니다.
java -jar your-application.jar --spring.config.location=file:home/config/aws-info.yml
2. 장단점 비교
GitHub Secrets를 사용하는 방법은 민감한 정보를 안전하게 보호할 수 있는 장점이 있습니다. 이 방식은 코드에서 직접적으로 노출되지 않기 때문에 보안이 강화됩니다. 또한, GitHub Actions와의 통합이 용이하여 쉽게 설정하고 사용할 수 있는 편리함이 있습니다. 하지만 이 방법은 최대 크기 제한이 있으며(64KB), Secrets 관리가 복잡할 수 있다는 단점이 있습니다.
반면, 외부 프로퍼티 파일을 사용하는 방법은 파일 크기 제한이 없고, 다양한 설정을 저장할 수 있는 유연성을 제공합니다. 환경에 따라 다른 프로퍼티 파일을 쉽게 로드할 수 있는 장점도 있습니다. 그러나 이 방법은 파일이 외부에 저장되므로 보안 위험이 증가할 수 있으며, 다운로드 및 설정 과정에서 추가적인 시간이 소요될 수 있습니다.
3. Secrets 사용하기
먼저, GitHub에서 해당 프로젝트의 리포지토리로 이동한 후, 오른쪽 상단의 "Settings" 탭을 클릭합니다. 왼쪽 사이드바에서 "Secrets and variables"를 선택하고 "Actions"를 클릭합니다. 여기서 "New repository secret" 버튼을 클릭하여 새로운 Secret을 추가할 수 있습니다.
이제 워크플로 파일(yml)에서 ${{ secrets.SECRET_NAME }} 형식으로 추가한 Secrets를 사용할 수 있습니다.
'DevOps' 카테고리의 다른 글
TIP/AWS RDS MariaDB-incorrect string value: '\xed\x9a\x8c \xec\x9d...' (0) | 2024.09.27 |
---|---|
CICD 파이프라인 구축기(3) - 애플리케이션을 EC2에 배포하기 (0) | 2024.09.23 |
CICD 파이프라인 구축기(1) - 브런치 전략과 GITACTION (0) | 2024.09.02 |
[issue] 쉘스크립트에서는 상대경로 대신 절대경로를 사용하자. (0) | 2024.07.08 |
배포자동화: 배포스크립트 작성 (0) | 2024.03.25 |