Some checks failed
Build and Deploy Java Gradle Application / build-and-deploy (push) Has been cancelled
76 lines
3.3 KiB
YAML
76 lines
3.3 KiB
YAML
name: Build and Deploy Java Gradle Application
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- fixing-ci-angular-21
|
|
|
|
jobs:
|
|
build-and-deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: 📄 Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: 📄 Checkout configuration
|
|
env:
|
|
SSH_PRIVATE_KEY: ${{ secrets.PROD_PROPERTIES_SSH_KEY }}
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
|
|
chmod 600 ~/.ssh/id_rsa
|
|
git clone -b hexagonal-reforged ssh://gitea@gitea.takiguchi.ovh:12960/Codiki/codiki-properties.git --config core.sshCommand='ssh -o StrictHostKeyChecking=no'
|
|
|
|
- name: 📄 Edit configuration
|
|
run: |
|
|
sed -i "s/<POSTGRES_PASSWORD>/$(cat ./codiki-properties/passwords/postgresql/codiki_user)/g" ./codiki-properties/application-prod.yml
|
|
cp ./codiki-properties/application-prod.yml ./backend/codiki-launcher/src/main/resources/application.yml
|
|
sed -i "s/<POSTGRES_ADMIN_PASSWORD>/$(cat ./codiki-properties/passwords/postgresql/codiki_admin)/g" ./docker-compose.yml
|
|
|
|
- name: 🔨 Build backend docker image
|
|
run: |
|
|
sudo /usr/bin/docker build -t codiki-backend -f ./Dockerfile-backend . --no-cache
|
|
|
|
- name: 📦 Extract backend docker image into archive
|
|
run: |
|
|
sudo /usr/bin/docker save codiki-backend:latest -o ./codiki-backend.tar
|
|
|
|
- name: 🔨 Build frontend docker image
|
|
run: |
|
|
sudo /usr/bin/docker build -t codiki-frontend -f ./Dockerfile-frontend . --no-cache
|
|
|
|
- name: 📦 Extract frontend docker image into archive
|
|
run: |
|
|
sudo /usr/bin/docker save codiki-frontend:latest -o ./codiki-frontend.tar
|
|
|
|
- name: 📤 Transfer artifacts to remote server
|
|
env:
|
|
SSH_PRIVATE_KEY: ${{ secrets.PROD_SSH_PRIVATE_KEY }}
|
|
REMOTE_USER: ${{ secrets.PROD_REMOTE_USER }}
|
|
REMOTE_HOST: ${{ secrets.PROD_REMOTE_HOST }}
|
|
REMOTE_PORT: ${{ secrets.PROD_REMOTE_PORT }}
|
|
REMOTE_PATH: ${{ secrets.PROD_REMOTE_PATH }}
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
|
|
chmod 600 ~/.ssh/id_rsa
|
|
scp -o StrictHostKeyChecking=no -P $REMOTE_PORT ./codiki-backend.tar $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH
|
|
scp -o StrictHostKeyChecking=no -P $REMOTE_PORT ./codiki-frontend.tar $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH
|
|
scp -o StrictHostKeyChecking=no -P $REMOTE_PORT ./docker-compose.yml $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH
|
|
|
|
- name: 🚀 Launch application onto remote server
|
|
env:
|
|
SSH_PRIVATE_KEY: ${{ secrets.PROD_SSH_PRIVATE_KEY }}
|
|
REMOTE_USER: ${{ secrets.PROD_REMOTE_USER }}
|
|
REMOTE_HOST: ${{ secrets.PROD_REMOTE_HOST }}
|
|
REMOTE_PORT: ${{ secrets.PROD_REMOTE_PORT }}
|
|
REMOTE_PATH: ${{ secrets.PROD_REMOTE_PATH }}
|
|
run: |
|
|
ssh -o StrictHostKeyChecking=no $REMOTE_HOST -l $REMOTE_USER -p $REMOTE_PORT << EOC
|
|
cd $REMOTE_PATH
|
|
sudo /usr/bin/docker load < $REMOTE_PATH/codiki-backend.tar
|
|
sudo /usr/bin/docker load < $REMOTE_PATH/codiki-frontend.tar
|
|
sudo /usr/bin/docker compose down
|
|
sudo /usr/bin/docker compose up --detach
|
|
EOC |