diff --git a/.forgejo/workflows/build-and-deploy.yaml b/.forgejo/workflows/build-and-deploy.yaml new file mode 100644 index 0000000..a9e538f --- /dev/null +++ b/.forgejo/workflows/build-and-deploy.yaml @@ -0,0 +1,53 @@ +on: + push: + branches: + - main + +env: + EXEC: mcstatusface + REMOTE: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} + PORT: ${{ secrets.SSH_PORT }} + OS: linux + ARCH: x86_64 + BINARY: ${{ env.EXEC }}-${{ env.ARCH }}-${{ env.OS }} + +jobs: + build: + runs-on: docker + steps: + - uses: actions/checkout@v7 + - uses: moonrepo/setup-rust@v1 + - name: "Build" + run: "cargo build --release" + - uses: actions/upload-artifact@v7 + with: + path: target/release/mcstatusface + name: ${{ env.BINARY }} + + deploy: + runs-on: docker + needs: build + steps: + - uses: actions/download-artifact@v8 + with: + name: ${{ env.BINARY }} + + - name: Set up SSH keys + uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Copy to production server + run: | + ssh-keyscan -p $PORT ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts + scp -P $PORT ./${{ env.BINARY }} $REMOTE:/tmp/mcstatusface + ssh -o StrictHostKeyChecking=no $REMORE -p PORT << EOF + chmod 755 /tmp/mcstatusface + EOF + + - name: Stop service + run: ssh $REMOTE -p $PORT sudo systemctl stop mcstatusface + - name: Replace binary + run: ssh $REMOTE -p $PORT mv /tmp/mcstatusface ${{ secrets.DEPLOY_DIR }}/mcstatusface + - name: Restart service + run: ssh $REMOTE -p $PORT sudo systemctl restart mcstatusface