From 8f5bc494b12ec9d05edf95cf3ff6192554e438e0 Mon Sep 17 00:00:00 2001 From: Florian THIERRY Date: Wed, 23 Jul 2025 22:15:35 +0200 Subject: [PATCH] add workflow --- .gitea/workflows/build-and-deploy.yml | 76 +++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .gitea/workflows/build-and-deploy.yml diff --git a/.gitea/workflows/build-and-deploy.yml b/.gitea/workflows/build-and-deploy.yml new file mode 100644 index 0000000..07afb1c --- /dev/null +++ b/.gitea/workflows/build-and-deploy.yml @@ -0,0 +1,76 @@ +name: Build and Deploy Java Gradle Application + +on: + push: + branches: + - main + - gitea-actions + +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 ssh://gitea@gitea.takiguchi.ovh:12960/Codiki/codiki-properties.git --config core.sshCommand='ssh -o StrictHostKeyChecking=no' + + - name: 📄 Edit configuration + run: | + sed -i "s//$(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//$(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 \ No newline at end of file