
WorkFlowWorkFlow를 정의할 수 있다.WorkFlow는 1개의 yml파일로 정의된다.WorkFlow는 1개 이상일 수 있다.WorkFlow는 1개 이상의 Job을 포함한다.Job은 1개 이상의 Step들로 이루어진 작업 단위이다.Step은 한줄의 명령어, 쉘스크립트, 혹은 action(GitHub Actions내의 개념) 을 의미한다.action은 복잡하고 자주 반복되는 작업을 수행하는 Github Actions 플랫폼용 사용자 지정 애플리케이션이다.Runner는 WorkFlow를 실행하는 Github에서 제공하는 서버이다.Event란 WorkFlow를 작동시키는 트리거다.#이름, 큰 의미없다.
name: Deploy to Amazon EC2
#어떤 Event에 WorkFlow를 실행할건지 설정
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
#Job 설정
jobs:
build:
#우분투서버에서 실행
runs-on: ubuntu-latest
#스텝들을 정의
steps:
#저장소로부터 코드 내려받기, action 사용, @v3는 버전을 의미한다.
- name: Checkout
uses: actions/checkout@v3
#gradlew 실행권한 주기
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
shell: bash
#테스트 진행안하고 Gradle로 빌드
- name: Build with Gradle
run: ./gradlew build -x test
shell: bash
#빌드된 jar와 CodeDeploy의 appspec, 스크립트를 함께 압축
- name: Make zip file
run: zip ./$GITHUB_SHA.zip build/libs/*.jar appspec.yml scripts/start.sh
shell: bash
#AWS IAM 키 설정
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2
#S3에 압축한 파일 업로드
- name: Upload to S3
run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.zip s3://$BUCKET_NAME/$GITHUB_SHA.zip
#CodeDeploy실행
- name: Code Deploy
run: aws deploy create-deployment --application-name $APP_NAME --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name $DEPLOY_GROUP --s3-location bucket=$BUCKET_NAME,bundleType=zip,key=$GITHUB_SHA.zip
저장소 -> Settings -> Secrets and variables -> ActionsAWS_ACCESS_KEY_ID : IAM 액세스키AWS_SECRET_ACCESS_KEY : IAM 비밀키아래의 변수들은 각자의 환경에 맞게 대체해서 써주면 된다. (그대로 쓰면 안됨)
EX) $BUCKET_NAME -> 자기가 사용하는 S3버킷 이름
굳이 변수를 등록해서 사용하고 싶으면 저장소 -> Settings -> Secrets and variables -> Actions -> Variables -> New Repository variables 에서 값을 추가하고 {{ vars.변수명 }} 형식으로 사용하면 된다.
$BUCKET_NAME : S3 버킷 이름

마지막 줄 계속 출력 (계속 갱신)
tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log
tail -f /opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log
실행 기준 마지막 100줄 출력
tail -n 100 /var/log/aws/codedeploy-agent/codedeploy-agent.log
tail -n 100 /opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log
/opt/codedeploy-agent/deployment-root/해시값/배포ID/deployment-archive 폴더 아래로도 인스톨이 되는데 해당 폴더에 스크립트파일이 없으면 기존 경로에 파일이 있어도 에러가 뜨면서 제대로 실행이 안된다.