name: Build and Deploy Hugo Site on: push: branches: - main - dev env: PROD_USER: verua.swiss PROD_HOST: verua.swiss PROD_PATH: httpdocs DEV_USER: verua.info DEV_HOST: verua.info DEV_PATH: preview/httpdocs jobs: buildAndDeploy: env: RUNNER_TOOL_CACHE: /toolcache runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.4.0 - name: env-toml-file uses: SebRollen/toml-action@v1.2.0 id: read_toml with: file: 'hugo.toml' field: 'params.environment' - name: Echo environment run: echo "Environment is ${{ steps.read_toml.outputs.value }}" - name: Set up Go uses: actions/setup-go@v5.0.0 with: go-version: '1.20.5' - name: Set up Node.js uses: actions/setup-node@v4.0.2 with: node-version: '20' cache: 'npm' - name: Setup Project run: npm run project-setup - name: Install npm dependencies run: npm install - name: Set up Hugo Extended uses: peaceiris/actions-hugo@v3.0.0 with: hugo-version: '0.121.2' extended: true - name: Build Hugo site run: hugo --minify - name: Setup rsync run: apt-get update && apt-get install -y rsync - name: Setup SSH Key uses: webfactory/ssh-agent@v0.5.3 with: ssh-private-key: ${{ secrets.VFO_SSH_KEY }} - name: Deploy to Development if: github.ref == 'refs/heads/dev' run: | echo "Deploying to Development Environment" rsync -avz ./public/ $DEV_USER@$DEV_HOST:$DEV_PATH env: RSYNC_RSH: 'ssh -p ${{ secrets.SSH_PORT }} -o StrictHostKeyChecking=no' - name: Deploy to Production if: github.ref == 'refs/heads/main' run: | echo "Deploying to Production Environment" rsync -avz ./public/ $PROD_USER@$PROD_HOST:$PROD_PATH env: RSYNC_RSH: 'ssh -p ${{ secrets.SSH_PORT }} -o StrictHostKeyChecking=no'