name: Build & Deploy on: [push, workflow_dispatch] jobs: build: runs-on: docker steps: # - name: Configure Git # run: | # git config --global user.name ${{ secrets.GIT_USERNAME }} # git config --global user.email ${{ secrets.GIT_EMAIL }} # git config --global init.defaultBranch main - name: Checkout uses: actions/checkout@v4 with: submodules: true # Checkout private submodules(themes or something else). - name: Setup Hugo uses: https://github.com/peaceiris/actions-hugo@v2 with: hugo-version: 'latest' extended: true - name: Build run: hugo --minify - name: Upload build artifacts uses: actions/upload-artifact@v3 with: name: public path: public/ deploy-to-remote: needs: build runs-on: docker steps: - name: Get build artifacts uses: actions/download-artifact@v3 with: name: public path: public/ - name: Setup SSH uses: https://github.com/webfactory/ssh-agent@v0.7.0 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - name: Add known host run: echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts - name: Publish to remote run: | apt update && apt install rsync -y rsync -av --delete -e "ssh -p ${{ secrets.SSH_PORT }}" public/ ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.WEB_ROOT }} # deploy-to-cloudflare: # needs: build # runs-on: docker # steps: # - name: Checkout # uses: actions/checkout@v4 # with: # sparse-checkout: | # wrangler # - name: Get build artifacts # uses: actions/download-artifact@v3 # with: # name: public # path: public/ # - name: Setup Node # uses: actions/setup-node@v4 # with: # node-version: 'latest' # - name: Install Dependencies # run: | # cd wrangler # npm install # - name: Publish to Cloudflare # uses: https://github.com/cloudflare/wrangler-action@2.0.0 # with: # apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} # workingDirectory: wrangler # command: deploy # env: # CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}