From a6a9f0261fd30996196a56d6df95bd23aa3f0c9a Mon Sep 17 00:00:00 2001 From: ditatompel Date: Sat, 11 Nov 2023 02:14:28 +0700 Subject: [PATCH] feat: Adding deploy to vps GitHub workflow This workflow uses rsync to copy public folder to VPS server. --- .github/workflows/deploy-to-vps.yaml | 67 ++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/deploy-to-vps.yaml diff --git a/.github/workflows/deploy-to-vps.yaml b/.github/workflows/deploy-to-vps.yaml new file mode 100644 index 0000000..a4b5768 --- /dev/null +++ b/.github/workflows/deploy-to-vps.yaml @@ -0,0 +1,67 @@ +name: Deploy to VPS + +on: + # auto deploy when pushing to specified branches. + push: + branches: + - main + + # allow triggering workflow manually. + workflow_dispatch: + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + deployments: write + name: Build and copy to VPS + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: "19" + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Install dependencies + run: npm ci + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: "latest" + extended: true + + - name: Cache Hugo modules + uses: actions/cache@v3 + with: + path: /tmp/hugo_cache + key: ${{ runner.os }}-hugomod-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-hugomod- + + - name: Build + run: hugo --minify --gc --enableGitInfo --cleanDestinationDir + # Use following instead if defaultContentLanguageInSubdir is enabled. + # run: hugo --minify --gc --enableGitInfo --cleanDestinationDir && cp public/en/404.html public/404.html + + - name: Deploy website with rsync + uses: burnett01/rsync-deployments@5.2 + with: + switches: -avzr --quiet --delete + path: public/ + remote_path: ${{ secrets.DEPLOY_PATH }} + remote_host: ${{ secrets.DEPLOY_HOST }} + remote_user: ${{ secrets.DEPLOY_USER }} + remote_key: ${{ secrets.DEPLOY_KEY }}