Release v0.0.46 #88
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: NextJS CD | |
on: | |
release: | |
types: [created] | |
env: | |
KCR_REGISTRY: dkation.kr-central-2.kcr.dev | |
KCR_REPOSITORY: dkation-prod-front/dkation-prod-fe | |
ACCESS_KEY: ${{ secrets.ACCESS_KEY }} | |
ACCESS_SECRET_KEY: ${{ secrets.ACCESS_SECRET_KEY }} | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: Get release tag or commit hash | |
id: get_version | |
run: | | |
if [[ ${{ github.event_name }} == 'release' ]]; then | |
echo "version=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT | |
else | |
git fetch --tags | |
latest_tag=$(git describe --tags --abbrev=0) | |
echo "version=$latest_tag" >> $GITHUB_OUTPUT | |
fi | |
- name: Deploy to FE | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.BASTION_IP }} | |
username: ${{ secrets.USER }} | |
key: ${{ secrets.SSH_KEY }} | |
script: | | |
mkdir -p ~/.ssh | |
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa | |
chmod 600 ~/.ssh/id_rsa | |
IFS=',' read -r -a HOSTS <<< "${{ secrets.WEB_IPS }}" | |
KCR_REGISTRY="${{ env.KCR_REGISTRY }}" | |
KCR_REPOSITORY="${{ env.KCR_REPOSITORY }}" | |
VERSION="${{ steps.get_version.outputs.version }}" | |
AK="${{ env.ACCESS_KEY }}" | |
SK="${{ env.ACCESS_SECRET_KEY }}" | |
for host in "${HOSTS[@]}" | |
do | |
echo "Deploying to $host" | |
ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no ${{ secrets.USER }}@$host << EOF | |
set -e | |
echo "Stopping and removing existing containers" | |
docker ps --format '{{.ID}} {{.Image}}' | grep '$KCR_REGISTRY/$KCR_REPOSITORY' | awk '{print \$1}' | xargs -r docker stop | |
docker ps -a --format '{{.ID}} {{.Image}}' | grep '$KCR_REGISTRY/$KCR_REPOSITORY' | awk '{print \$1}' | xargs -r docker rm | |
echo "Removing old Docker images" | |
docker images --format '{{.Repository}}:{{.Tag}}' | grep '$KCR_REGISTRY/$KCR_REPOSITORY' | xargs -r docker rmi | |
echo "Docker login" | |
echo "$SK" | docker login $KCR_REGISTRY -u "$AK" --password-stdin | |
echo "Pulling new Docker image" | |
docker pull $KCR_REGISTRY/$KCR_REPOSITORY:$VERSION | |
echo "Running new Docker container" | |
docker run -d -p 80:3000 --name dkation-frontend $KCR_REGISTRY/$KCR_REPOSITORY:$VERSION | |
echo "Checking container health" | |
max_retries=5 | |
retries=0 | |
until docker ps | grep dkation-frontend | grep -q "Up" || [ \$retries -eq \$max_retries ] | |
do | |
echo "Waiting for container to be healthy..." | |
sleep 5 | |
retries=\$((retries+1)) | |
done | |
if [ \$retries -eq \$max_retries ]; then | |
echo "Container failed to start properly" | |
exit 1 | |
fi | |
echo "Container is up and running" | |
EOF | |
if [ $? -ne 0 ]; then | |
echo "Deployment to $host failed" | |
exit 1 | |
fi | |
echo "Deployment completed successfully" | |
done |