Skip to content

πŸ› [FIX] λͺ½κ³  Between 쑰회 μ‹œ, μ–‘ 끝 λ²”μœ„λ₯Ό ν¬ν•¨ν•˜λ„λ‘ μˆ˜μ • (#118) #63

πŸ› [FIX] λͺ½κ³  Between 쑰회 μ‹œ, μ–‘ 끝 λ²”μœ„λ₯Ό ν¬ν•¨ν•˜λ„λ‘ μˆ˜μ • (#118)

πŸ› [FIX] λͺ½κ³  Between 쑰회 μ‹œ, μ–‘ 끝 λ²”μœ„λ₯Ό ν¬ν•¨ν•˜λ„λ‘ μˆ˜μ • (#118) #63

Workflow file for this run

# workflow
name: Deploy to AWS EC2 using Docker
# event
on:
push:
branches:
- develop
env:
DOCKER_IMAGE_NAME: developerjamey/with_time_image
EC2_HOST: ${{ secrets.EC2_URL }}
EC2_SSH_USER: ubuntu
PRIVATE_KEY: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
CONTAINER_NAME: with_time_container
jobs:
#job1
build-and-push-docker:
# runner
runs-on: ubuntu-latest
# step
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3 # action
with:
java-version: '17'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew build -x test
- name: Build the Docker image
run: docker build . --file Dockerfile --tag ${{ env.DOCKER_IMAGE_NAME }}:latest
- name: Login to Docker Hub using Access Token
run: echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
- name: Push the Docker image
run: docker push ${{ env.DOCKER_IMAGE_NAME }}:latest
# job2
deploy-to-ec2:
needs: build-and-push-docker
runs-on: ubuntu-latest
steps:
- name: Create .env file
run: |
cat <<EOF > .env
${{ secrets.ENV }}
EOF
- name: SCP .env file to EC2
uses: appleboy/scp-action@master
with:
host: ${{ env.EC2_HOST }}
username: ${{ env.EC2_SSH_USER }}
key: ${{ env.PRIVATE_KEY }}
source: ".env"
target: "/home/ubuntu/secrets"
- name: Deploy to EC2
uses: appleboy/ssh-action@master
with:
host: ${{ env.EC2_HOST }}
username: ${{ env.EC2_SSH_USER }}
port: 22
key: ${{ env.PRIVATE_KEY }}
script: |
CONTAINER_ID=$(sudo docker ps -aq -f name=${{ env.CONTAINER_NAME }})
if [ ! -z "$CONTAINER_ID" ]; then
sudo docker stop $CONTAINER_ID
sudo docker rm $CONTAINER_ID
fi
IMAGE_ID=$(sudo docker images -q ${{ env.DOCKER_IMAGE_NAME }})
if [ ! -z "$IMAGE_ID" ]; then
sudo docker rmi $IMAGE_ID
fi
sudo docker pull ${{ env.DOCKER_IMAGE_NAME }}
sudo docker run --name ${{ env.CONTAINER_NAME }} \
-d \
-p 8080:8080 \
--env-file /home/ubuntu/secrets/.env \
${{ env.DOCKER_IMAGE_NAME }}