Files
skamp/.gitea/workflows/deploy.yml
Murat Özkorkmaz 084960a34a
Some checks failed
Build, Push and Deploy / build-and-deploy (push) Failing after 13s
CI test
2025-10-22 00:46:06 +02:00

81 lines
3.2 KiB
YAML

name: Build, Push and Deploy
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Login to Container Registry
uses: docker/login-action@v3
with:
registry: ${{ vars.REGISTRY_URL }}
username: ${{ secrets.CI_GITEA_USER }}
password: ${{ secrets.CI_GITEA_TOKEN }}
- name: Extract metadata for Docker
id: meta
run: |
echo "image_tag=${{ vars.REGISTRY_URL }}/${{ vars.NAMESPACE }}/${{ vars.REPO_NAME }}:${{ github.sha }}" >> $GITHUB_OUTPUT
echo "image_latest=${{ vars.REGISTRY_URL }}/${{ vars.NAMESPACE }}/${{ vars.REPO_NAME }}:latest" >> $GITHUB_OUTPUT
- name: Build and Push Docker Image
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/Dockerfile
push: true
tags: |
${{ steps.meta.outputs.image_tag }}
${{ steps.meta.outputs.image_latest }}
- name: Deploy to Remote Server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
# Login to Container Registry
echo "${{ secrets.CI_GITEA_TOKEN }}" | docker login ${{ vars.REGISTRY_URL }} -u ${{ secrets.CI_GITEA_USER }} --password-stdin
# Pull new image
docker pull ${{ vars.REGISTRY_URL }}/${{ vars.NAMESPACE }}/${{ vars.REPO_NAME }}:${{ github.sha }}
# Stop and remove old container
docker stop skamp-app || true
docker rm skamp-app || true
# Start new container with environment variables
docker run -d \
--name skamp-app \
--restart unless-stopped \
-p ${{ secrets.APP_PORT }}:8080 \
-e SPRING_PROFILES_ACTIVE=${{ secrets.SPRING_PROFILES_ACTIVE }} \
-e SPRING_DATASOURCE_URL=jdbc:postgresql://${{ secrets.POSTGRES_HOST }}:${{ secrets.POSTGRES_PORT }}/${{ secrets.POSTGRES_DB }} \
-e SPRING_DATASOURCE_USERNAME=${{ secrets.POSTGRES_USER }} \
-e SPRING_DATASOURCE_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} \
-e SPRING_JPA_HIBERNATE_DDL_AUTO=${{ secrets.HIBERNATE_DDL_AUTO }} \
-e SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=${{ secrets.KEYCLOAK_ISSUER_URI }} \
-e CORS_ALLOWED_ORIGINS=${{ secrets.CORS_ALLOWED_ORIGINS }} \
-e S3_ACCESS_KEY=${{ secrets.MINIO_ACCESS_KEY }} \
-e S3_SECRET_KEY=${{ secrets.MINIO_SECRET_KEY }} \
-e S3_ENDPOINT=${{ secrets.MINIO_ENDPOINT }} \
-e SERVER_PORT=8080 \
-e JAVA_OPTS="${{ secrets.JAVA_OPTS }}" \
${{ vars.REGISTRY_URL }}/${{ vars.NAMESPACE }}/${{ vars.REPO_NAME }}:${{ github.sha }}
# Clean up old images
docker image prune -af --filter "until=168h"
# Show running container
docker ps --filter name=skamp-app