diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..c4893e0 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,84 @@ +name: 'Build & Deploy' + +on: + workflow_dispatch: + push: + branches: + - main + +permissions: + contents: read + pull-requests: read + +jobs: + deploy: + runs-on: ["ubuntu-latest"] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Go ${{ matrix.go-version }} + uses: actions/setup-go@v5 + with: + go-version: '1.22' + + - name: Go version + run: go version + + - name: Go build + run: go build + + - run: ls -l + + - name: Stop service + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USERNAME }} + password: ${{ secrets.SSH_PASSWORD }} + port: ${{ secrets.SSH_PORT }} + script: sudo /usr/bin/systemctl stop qrsync_server + + - name: Upload binary as Github action artifact + uses: actions/upload-artifact@v4 + with: + name: server + path: ./qrsync-server + + - name: Upload new binary + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USERNAME }} + password: ${{ secrets.SSH_PASSWORD }} + port: ${{ secrets.SSH_PORT }} + source: "qrsync-server" + target: /var/www/qrsync_server/tmp + overwrite: true + + - name: Move binary from tmp folder + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USERNAME }} + password: ${{ secrets.SSH_PASSWORD }} + port: ${{ secrets.SSH_PORT }} + script: cp "/var/www/qrsync_server/tmp/qrsync-server" /var/www/qrsync_server + + - name: Restart service + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USERNAME }} + password: ${{ secrets.SSH_PASSWORD }} + port: ${{ secrets.SSH_PORT }} + script: sudo /usr/bin/systemctl restart qrsync_server + + - name: Get service status + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USERNAME }} + password: ${{ secrets.SSH_PASSWORD }} + port: ${{ secrets.SSH_PORT }} + script: /usr/bin/systemctl status qrsync_server