diff --git a/.github/workflows/deploy-to-vps.yaml b/.github/workflows/production.yaml similarity index 81% rename from .github/workflows/deploy-to-vps.yaml rename to .github/workflows/production.yaml index afe25a2..a7579ba 100644 --- a/.github/workflows/deploy-to-vps.yaml +++ b/.github/workflows/production.yaml @@ -1,7 +1,6 @@ -name: Deploy to VPS +name: Production on: - # auto deploy when pushing to specified branches. push: branches: - main @@ -10,14 +9,14 @@ on: workflow_dispatch: jobs: - publish: + deploy: + name: Build and copy to production server runs-on: ubuntu-latest if: github.repository_owner == 'ditatompel' environment: production permissions: contents: read deployments: write - name: Build and copy to VPS steps: - name: Checkout @@ -55,10 +54,8 @@ jobs: - 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 + - name: Deploy uses: burnett01/rsync-deployments@5.2 with: switches: -avzr --quiet --delete diff --git a/.github/workflows/staging.yaml b/.github/workflows/staging.yaml new file mode 100644 index 0000000..7d6157f --- /dev/null +++ b/.github/workflows/staging.yaml @@ -0,0 +1,64 @@ +name: Staging + +on: + pull_request: + + # allow triggering workflow manually. + workflow_dispatch: + +jobs: + deploy: + name: Build and copy to staging VPS + runs-on: ubuntu-latest + if: github.repository_owner == 'ditatompel' + environment: staging + permissions: + contents: read + deployments: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Cache dependencies + uses: actions/cache@v4 + 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@v3 + with: + hugo-version: "0.126.3" + extended: true + + - name: Cache Hugo modules + uses: actions/cache@v4 + 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 + + - name: Deploy to staging + 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 }}