gohugoio/hugo

3 workflows · maturity 33% · 2 patterns · GitHub ↗

Security 25/100

Practices

✓ Matrix✓ Permissions○ Security scan○ AI review○ Cache○ Concurrency○ Reusable workflows

Detected patterns

Security dimensions

permissions
25
security scan
0
supply chain
0
secret handling
0
harden runner
0

Workflows (3)

image perms .github/workflows/image.yml
Triggers
release, pull_request
Runs on
ubuntu-latest
Jobs
build
Actions
docker/metadata-action, docker/setup-buildx-action, docker/login-action, docker/build-push-action
View raw YAML
name: Build Docker image

on:
  release:
    types: [published]
  pull_request:
permissions:
  packages: write

env:
  REGISTRY_IMAGE: ghcr.io/gohugoio/hugo

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

      - name: Docker meta
        id: meta
        uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v5.9.0
        with:
          images: ${{ env.REGISTRY_IMAGE }}

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1

      - name: Login to GHCR
        # Login is only needed when the image is pushed
        uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Build and push
        id: build
        uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
        with:
          context: .
          provenance: mode=max
          sbom: true
          push: ${{ github.event_name != 'pull_request' }}
          platforms: linux/amd64,linux/arm64
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: HUGO_BUILD_TAGS=extended,withdeploy
stale perms .github/workflows/stale.yml
Triggers
workflow_dispatch, schedule
Runs on
ubuntu-latest
Jobs
stale
Actions
dessant/lock-threads, actions/stale
View raw YAML
name: 'Close stale and lock closed issues and PRs'
on:
  workflow_dispatch:
  schedule:
    - cron: '30 1 * * *'
permissions:
  contents: read
jobs:
  stale:
    permissions:
      issues: write
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - uses: dessant/lock-threads@7de207be1d3ce97a9abe6ff1306222982d1ca9f9 # v5.0.1
        with:
          issue-inactive-days: 21
          add-issue-labels: 'Outdated'
          issue-comment: >
            This issue has been automatically locked since there
            has not been any recent activity after it was closed.
            Please open a new issue for related bugs.
          pr-comment: >
            This pull request has been automatically locked since there
            has not been any recent activity after it was closed.
            Please open a new issue for related bugs.
      - uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
        with:
          operations-per-run: 999
          days-before-issue-stale: 365
          days-before-pr-stale: 365
          days-before-issue-close: 56
          days-before-pr-close: 56
          stale-issue-message: >
            This issue has been automatically marked as stale because it has not had
            recent activity. The resources of the Hugo team are limited, and so we are asking for your help.

            If this is a **bug** and you can still reproduce this error on the <code>master</code> branch, please reply with all of the information you have about it in order to keep the issue open.

            If this is a **feature request**, and you feel that it is still relevant and valuable, please tell us why.

            This issue will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions.
          stale-pr-message: This PR has been automatically marked as stale because it has not had
            recent activity. The resources of the Hugo team are limited, and so we are asking for your help.

            Please check https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#code-contribution and verify that this code contribution fits with the description. If yes, tell us in a comment.

            This PR will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions.
          stale-issue-label: 'Stale'
          exempt-issue-labels: 'Keep,Security'
          stale-pr-label: 'Stale'
          exempt-pr-labels: 'Keep,Security'
test matrix perms .github/workflows/test.yml
Triggers
push, pull_request
Runs on
${{ matrix.os }}
Jobs
test
Matrix
go-version, os→ 1.25.x, 1.26.x, ubuntu-latest, windows-latest
Actions
jlumbroso/free-disk-space, ruby/setup-ruby
Commands
  • gem install asciidoctor -v "2.0.26" gem install asciidoctor-diagram -v "3.1.0"
  • go install github.com/blampe/goat/cmd/goat@177de93b192b8ffae608e5d9ec421cc99bf68402
  • go install github.com/magefile/mage@v1.15.0
  • pip install docutils rst2html --version
  • sudo apt-get update -y sudo apt-get install -y pandoc
  • brew install pandoc
  • choco install pandoc
  • pandoc -v
View raw YAML
on:
  push:
    branches: [master]
  pull_request:
name: Test
env:
  GOPROXY: https://proxy.golang.org
  GO111MODULE: on
  SASS_VERSION: 1.80.3
  DART_SASS_SHA_LINUX: 7c933edbad0a7d389192c5b79393485c088bd2c4398e32f5754c32af006a9ffd
  DART_SASS_SHA_MACOS: 79e060b0e131c3bb3c16926bafc371dc33feab122bfa8c01aa337a072097967b
  DART_SASS_SHA_WINDOWS: 0bc4708b37cd1bac4740e83ac5e3176e66b774f77fd5dd364da5b5cfc9bfb469
permissions:
  contents: read
jobs:
  test:
    strategy:
      matrix:
        go-version: [1.25.x, 1.26.x]
        os: [ubuntu-latest, windows-latest] # macos disabled for now because of disk space issues.
    runs-on: ${{ matrix.os }}
    steps:
      - if: matrix.os == 'ubuntu-latest'
        name: Free Disk Space (Ubuntu)
        uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
        with:
          tool-cache: true
          android: true
          dotnet: true
          haskell: true
          large-packages: true
          docker-images: true
          swap-storage: true
      - name: Checkout code
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      - name: Install Go
        uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
        with:
          go-version: ${{ matrix.go-version }}
          check-latest: true
          cache: true
          cache-dependency-path: |
            **/go.sum
            **/go.mod
      - name: Install Ruby
        uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0
        with:
          ruby-version: "3.4.5"
      - name: Install Ruby gems
        run: |
          gem install asciidoctor -v "2.0.26"
          gem install asciidoctor-diagram -v "3.1.0"
      - name: Install GoAT
        run: go install github.com/blampe/goat/cmd/goat@177de93b192b8ffae608e5d9ec421cc99bf68402
      - name: Install Python
        uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
        with:
          python-version: "3.x"
      - name: Install Mage
        run: go install github.com/magefile/mage@v1.15.0
      - name: Install docutils
        run: |
          pip install docutils
          rst2html --version
      - if: matrix.os == 'ubuntu-latest'
        name: Install pandoc on Linux
        run: |
          sudo apt-get update -y
          sudo apt-get install -y pandoc
      - if: matrix.os == 'macos-latest'
        run: |
          brew install pandoc
      - if: matrix.os == 'windows-latest'
        run: |
          choco install pandoc
      - run: pandoc -v
      - if: matrix.os == 'windows-latest'
        run: |
          choco install mingw
      - if: matrix.os == 'ubuntu-latest'
        name: Install dart-sass Linux
        run: |
          echo "Install Dart Sass version ${SASS_VERSION} ..."
          curl -LJO "https://github.com/sass/dart-sass/releases/download/${SASS_VERSION}/dart-sass-${SASS_VERSION}-linux-x64.tar.gz";
          echo "${DART_SASS_SHA_LINUX}  dart-sass-${SASS_VERSION}-linux-x64.tar.gz" | sha256sum -c;
          tar -xvf "dart-sass-${SASS_VERSION}-linux-x64.tar.gz";
          echo "$GOBIN"
          echo "$GITHUB_WORKSPACE/dart-sass/" >> $GITHUB_PATH
      - if: matrix.os == 'macos-latest'
        name: Install dart-sass MacOS
        run: |
          echo "Install Dart Sass version ${SASS_VERSION} ..."
          curl -LJO "https://github.com/sass/dart-sass/releases/download/${SASS_VERSION}/dart-sass-${SASS_VERSION}-macos-x64.tar.gz";
          echo "${DART_SASS_SHA_MACOS}  dart-sass-${SASS_VERSION}-macos-x64.tar.gz" | shasum -a 256 -c;
          tar -xvf "dart-sass-${SASS_VERSION}-macos-x64.tar.gz";
          echo "$GITHUB_WORKSPACE/dart-sass/" >> $GITHUB_PATH
      - if: matrix.os == 'windows-latest'
        name: Install dart-sass Windows
        run: |
          echo "Install Dart Sass version ${env:SASS_VERSION} ..."
          curl -LJO "https://github.com/sass/dart-sass/releases/download/${env:SASS_VERSION}/dart-sass-${env:SASS_VERSION}-windows-x64.zip";
          Expand-Archive -Path "dart-sass-${env:SASS_VERSION}-windows-x64.zip" -DestinationPath .;
          echo  "$env:GITHUB_WORKSPACE/dart-sass/" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf-8 -Append
      - if: matrix.os == 'ubuntu-latest'
        name: Install staticcheck
        run: go install honnef.co/go/tools/cmd/staticcheck@latest
      - if: matrix.os == 'ubuntu-latest'
        name: Run staticcheck
        run: |
          export STATICCHECK_CACHE="${{ runner.temp }}/staticcheck"
          staticcheck ./...
          rm -rf ${{ runner.temp }}/staticcheck
      - if: matrix.os != 'windows-latest'
        name: Check
        run: |
          sass --version;
          mage -v check;
        env:
          HUGO_BUILD_TAGS: extended,withdeploy
      - if: matrix.os == 'windows-latest'
        # See issue #11052. We limit the build to regular test (no -race flag) on Windows for now.
        name: Test
        run: |
          mage -v test
        env:
          HUGO_BUILD_TAGS: extended,withdeploy
      - if: matrix.os == 'ubuntu-latest'
        name: Build for dragonfly
        run: |
          go install
          go clean -i -cache
        env:
          GOARCH: amd64
          GOOS: dragonfly