From 472ac97a4dd474b72f4465716010f11b55c56b9c Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Fri, 11 Apr 2025 20:08:23 +0200 Subject: [PATCH] add deployment --- .gitea/workflows/action.yml | 37 +++++++++++++++++++++++++++++++++++++ stationslauf.service | 18 ++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 stationslauf.service diff --git a/.gitea/workflows/action.yml b/.gitea/workflows/action.yml index 0d2848c..941c5e5 100644 --- a/.gitea/workflows/action.yml +++ b/.gitea/workflows/action.yml @@ -23,3 +23,40 @@ jobs: - name: Backend tests run: cargo test --verbose + + deploy: + runs-on: ubuntu-latest + container: git.hofer.link/philipp/ci-images:rust-latest + needs: [test] + if: github.ref == 'refs/heads/main' + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Run Test DB Script + run: ./test_db.sh + + - name: Cache Cargo dependencies + uses: Swatinem/rust-cache@v2 + + - name: Build + run: | + cargo build --release --target $CARGO_TARGET + strip target/$CARGO_TARGET/release/rot + + - name: Deploy to production + run: | + mkdir -p ~/.ssh + ssh-keyscan -H $SSH_HOST >> ~/.ssh/known_hosts + echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + + scp -C target/$CARGO_TARGET/release/stationslauf $SSH_USER@$SSH_HOST:/home/stationslauf/stationslauf-updating + ssh $SSH_USER@$SSH_HOST 'sudo systemctl stop stationslauf' + ssh $SSH_USER@$SSH_HOST 'mv /home/stationslauf/stationslauf-updating /home/stationslauf/stationslauf' + ssh $SSH_USER@$SSH_HOST 'sudo systemctl start stationslauf' + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + SSH_HOST: ${{ secrets.SSH_HOST }} + SSH_USER: ${{ secrets.SSH_USER }} + diff --git a/stationslauf.service b/stationslauf.service new file mode 100644 index 0000000..1360d26 --- /dev/null +++ b/stationslauf.service @@ -0,0 +1,18 @@ +[Unit] +Description=Stationslauf + +[Service] +User=root +Group=root +WorkingDirectory=/home/stationslauf +Environment="PORT=7001" +Environment="RUST_LOG=info" +Environment="DATABASE_URL=sqlite:///home/stationslauf/db.sqlite" +ExecStart=/home/stationslauf/stationslauf +Restart=always +RestartSec=10 + + +[Install] +WantedBy=multi-user.target +