Skip to content

chore: add .reequiresChannel to turn off requiresSecure and headers to #33

chore: add .reequiresChannel to turn off requiresSecure and headers to

chore: add .reequiresChannel to turn off requiresSecure and headers to #33

Workflow file for this run

name: CI/CD Pipeline for Fortune App
on:
push:
tags:
- "v*" # tag rule (v1.0.0)
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Grant execute permission to Gradle Wrapper
run: chmod +x ./gradlew
- name: Extract Version from Tag
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
- name: Build with Gradle (Skip Tests)
run: ./gradlew build -x test
- name: Check if JAR file exists
run: ls -l build/libs/
- name: Build Docker Image with Version
run: docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/fortune-app:${{ env.VERSION }} .
- name: Log in to Docker Hub
run: echo ${{ secrets.DOCKER_HUB_PASSWORD }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
- name: Push Docker Image
run: docker push ${{ secrets.DOCKER_HUB_USERNAME }}/fortune-app:${{ env.VERSION }}
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Copy SSH Key
run: |
echo "${{ secrets.EC2_SSH_KEY }}" > fortune-app-key.pem
chmod 600 fortune-app-key.pem
- name: Verify SSH Key
run: ls -l fortune-app-key.pem
- name: Debug SSH Connection
run: ssh -v -o StrictHostKeyChecking=no -i fortune-app-key.pem ${{ vars.EC2_USERNAME }}@${{ vars.EC2_HOST }} "echo Connected"
- name: Extract Version from Tag
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
- name: Deploy to EC2
run: |
ssh -o StrictHostKeyChecking=no -i fortune-app-key.pem ${{ vars.EC2_USERNAME }}@${{ vars.EC2_HOST }} << 'EOF'
docker pull mysql:8.0
docker stop mysql-container || true
docker rm mysql-container || true
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=${{ secrets.MYSQL_ROOT_PASSWORD }} \
-e MYSQL_DATABASE=fortune_db \
-p 3306:3306 \
mysql:8.0
docker pull redis:latest
docker stop redis-container || true
docker rm redis-container || true
docker run -d \
--name redis-container \
-p 6379:6379 \
redis:latest
docker pull ${{ secrets.DOCKER_HUB_USERNAME }}/fortune-app:${{ env.VERSION }}
docker stop fortune-container || true
docker rm fortune-container || true
docker run -d \
-p 8080:8080 \
--name fortune-container \
--link mysql-container:mysql \
--link redis-container:redis \
-e SPRING_PROFILES_ACTIVE=prod \
-e SERVER_PORT=8080 \
-e SPRING_DATASOURCE_URL=jdbc:mysql://mysql-container:3306/fortune_db \
-e SPRING_DATASOURCE_USERNAME=root \
-e SPRING_DATASOURCE_PASSWORD=${{ secrets.MYSQL_ROOT_PASSWORD }} \
-e SPRING_REDIS_HOST=redis-container \
-e SPRING_REDIS_PORT=6379 \
-e JWT_SECRET=${{ secrets.JWT_SECRET }} \
-v /home/ubuntu/config/application.properties:/app/config/application.properties \
${{ secrets.DOCKER_HUB_USERNAME }}/fortune-app:${{ env.VERSION }}
EOF