name: Build and Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.4.0 - 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: Upload Artifacts uses: actions/upload-artifact@v3 with: name: hugo-site path: public/ deploy: needs: build runs-on: ubuntu-latest steps: - name: Download Artifacts uses: actions/download-artifact@v2 with: name: hugo-site path: public - name: Deploy to Server uses: SamKirkland/FTP-Deploy-Action@4.0.0 with: protocol: ftps server: ${{ secrets.FTP_SERVER }} username: ${{ secrets.FTP_USERNAME }} password: ${{ secrets.FTP_PASSWORD }} local-dir: public/ server-dir: '/'