From bb06762377e4c3ba4ec1a1f67579ae6c87f064e0 Mon Sep 17 00:00:00 2001 From: Amirhossein Khalili Date: Thu, 14 May 2026 18:18:25 +0330 Subject: [PATCH] ci(backend): add gitea actions pipeline --- .gitea/workflows/backend.yml | 82 ++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .gitea/workflows/backend.yml diff --git a/.gitea/workflows/backend.yml b/.gitea/workflows/backend.yml new file mode 100644 index 0000000..c7172b1 --- /dev/null +++ b/.gitea/workflows/backend.yml @@ -0,0 +1,82 @@ +name: Backend CI/CD + +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + +jobs: + test: + runs-on: qlockify-python + steps: + - name: Install system dependencies + run: | + apt-get update + apt-get install -y --no-install-recommends git + + - name: Checkout repository + env: + REPO_URL: ${{ gitea.server_url }}/${{ gitea.repository }}.git + REPO_SHA: ${{ gitea.sha }} + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + WORKSPACE: ${{ gitea.workspace }} + run: | + mkdir -p "$WORKSPACE" + cd "$WORKSPACE" + git init + git remote add origin "$REPO_URL" + git -c http.extraHeader="Authorization: Bearer $GITEA_TOKEN" fetch --depth 1 origin "$REPO_SHA" + git checkout --detach FETCH_HEAD + + - name: Install Python dependencies + working-directory: ${{ gitea.workspace }} + run: | + python -m pip install --upgrade pip + python -m pip install -r requirements/base.txt -r requirements/dev.txt + + - name: Lint backend + working-directory: ${{ gitea.workspace }} + run: python -m ruff check . + + - name: Run backend tests + working-directory: ${{ gitea.workspace }} + run: python manage.py test --settings=config.settings.test + + deploy: + if: github.event_name == 'push' && github.ref_name == 'main' + needs: + - test + runs-on: qlockify-deploy + steps: + - name: Install SSH client + run: | + apt-get update + apt-get install -y --no-install-recommends bash openssh-client + + - name: Configure SSH + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }} + run: | + install -m 700 -d ~/.ssh + printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + printf '%s\n' "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts + chmod 644 ~/.ssh/known_hosts + + - name: Deploy backend services + env: + DEPLOY_HOST: ${{ vars.DEPLOY_HOST }} + DEPLOY_PORT: ${{ vars.DEPLOY_PORT }} + DEPLOY_USER: ${{ vars.DEPLOY_USER }} + DEPLOY_PATH: ${{ vars.DEPLOY_PATH }} + DEPLOY_BRANCH: ${{ vars.DEPLOY_BRANCH }} + BACKEND_BRANCH: ${{ vars.BACKEND_BRANCH }} + FRONTEND_BRANCH: ${{ vars.FRONTEND_BRANCH }} + run: | + ssh -p "${DEPLOY_PORT:-22}" "${DEPLOY_USER}@${DEPLOY_HOST}" \ + "DEPLOY_ROOT='${DEPLOY_PATH}' DEPLOY_BRANCH='${DEPLOY_BRANCH}' BACKEND_BRANCH='${BACKEND_BRANCH}' FRONTEND_BRANCH='${FRONTEND_BRANCH}' bash '${DEPLOY_PATH}/scripts/deploy.sh' backend"