From ea4bda3658dc67a304ed990470a1fc8562937b16 Mon Sep 17 00:00:00 2001 From: Felix Schlusche Date: Fri, 24 Oct 2025 16:04:42 +0200 Subject: [PATCH] feat: add Docker deployment workflow for building and deploying the application --- .gitea/workflows/deploy.yml | 49 +++++++++++++++++++++++++++++++ .gitea/workflows/docker-build.yml | 12 ++++---- 2 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 .gitea/workflows/deploy.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..f7352cd --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,49 @@ +name: Build and Deploy + +on: + push: + branches: + - main + - master + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker image + run: | + docker build -t timetracker:latest . + docker tag timetracker:latest timetracker:${{ github.sha }} + + - name: Save image + run: docker save timetracker:latest | gzip > timetracker.tar.gz + + - name: Deploy to server + uses: appleboy/scp-action@master + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SERVER_SSH_KEY }} + source: "timetracker.tar.gz,docker-compose.yml" + target: "/opt/timetracker" + + - name: Load and restart containers + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SERVER_SSH_KEY }} + script: | + cd /opt/timetracker + docker load < timetracker.tar.gz + docker-compose down + docker-compose up -d + docker system prune -f + rm timetracker.tar.gz diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 85e783e..d6cfdc8 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -22,13 +22,13 @@ jobs: - name: Cache Gitea Actions uses: actions/cache@v3 with: - # The path to the directory that should be cached - path: /root/.cache/act - # A key to identify the cache - key: ${{ runner.os }}-gitea-actions-${{ hashFiles(''.workflow) }} - # A fallback key to use if the primary key doesn't match + path: | + ~/.cache/actcache + ~/.cache/act + key: ${{ runner.os }}-act-${{ hashFiles('**/.gitea/workflows/*.yml') }} restore-keys: | - ${{ runner.os }}-gitea-actions- + ${{ runner.os }}-act- + - name: Checkout code uses: actions/checkout@v4