name: Build and Deploy Hugo Site on: push: branches: - main jobs: buildAndDeploy: 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: '/config/_default/params.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: Cache Go modules uses: actions/cache@v3 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Set up Node.js uses: actions/setup-node@v4.0.2 with: node-version: '20' cache: 'npm' - name: Cache Node modules uses: actions/cache@v3 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install PostCSS run: | npm install -g postcss postcss-cli npm install autoprefixer - 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: steps.read_toml.outputs.value == 'development' run: | echo "Running steps for Development Environment" rsync -avz --delete ./public/ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/${{ secrets.DEVELOPMENT_PATH }} env: RSYNC_RSH: 'ssh -p ${{ secrets.SSH_PORT }} -o StrictHostKeyChecking=no' - name: Deploy to Production if: steps.read_toml.outputs.value == 'production' run: | echo "Running steps for Production Environment" rsync -avz --delete ./public/ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/${{ secrets.PRODUCTION_PATH }} env: RSYNC_RSH: 'ssh -p ${{ secrets.SSH_PORT }} -o StrictHostKeyChecking=no'