diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 71ce6e17..e14736cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,10 +20,10 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true @@ -117,10 +117,10 @@ jobs: timeout-minutes: 15 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true @@ -144,7 +144,7 @@ jobs: timeout-minutes: 20 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Build and verify images run: ./scripts/test/test-docker-images.sh diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index bda0c360..0eeab38f 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -21,15 +21,15 @@ jobs: timeout-minutes: 15 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: go - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4c7a444b..e2678996 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,12 +25,12 @@ jobs: goarch: [amd64, arm64] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.tag || github.ref }} - name: Setup Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true @@ -71,12 +71,12 @@ jobs: goarch: [amd64, arm64] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.tag || github.ref }} - name: Setup Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true @@ -114,12 +114,12 @@ jobs: runs-on: macos-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.tag || github.ref }} - name: Setup Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true @@ -200,18 +200,18 @@ jobs: goarch: [amd64, arm64] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.tag || github.ref }} - name: Setup Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true - name: Setup .NET - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: dotnet-version: '8.0.x' @@ -331,7 +331,7 @@ jobs: goarch: [amd64, arm64] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.tag || github.ref }} @@ -400,7 +400,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.tag || github.ref }} @@ -511,7 +511,7 @@ jobs: tag_prefix: browser- steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.tag || github.ref }} @@ -747,7 +747,7 @@ jobs: runs-on: windows-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.tag || github.ref }} @@ -801,7 +801,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ github.event.inputs.tag || github.ref }} diff --git a/.github/workflows/windows-installer.yml b/.github/workflows/windows-installer.yml index d2bf5c57..58206ee8 100644 --- a/.github/workflows/windows-installer.yml +++ b/.github/workflows/windows-installer.yml @@ -35,7 +35,7 @@ jobs: relevant: ${{ steps.filter.outputs.relevant }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -77,16 +77,16 @@ jobs: timeout-minutes: 30 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true - name: Setup .NET - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: dotnet-version: '8.0.x' diff --git a/scripts/test/ci_workflow_test.go b/scripts/test/ci_workflow_test.go index 60fababa..e2cdc4c3 100644 --- a/scripts/test/ci_workflow_test.go +++ b/scripts/test/ci_workflow_test.go @@ -16,6 +16,36 @@ func readWorkflow(t *testing.T, name string) string { return strings.ReplaceAll(string(data), "\r\n", "\n") } +func TestWorkflowsUseCurrentActionMajors(t *testing.T) { + expected := map[string]string{ + "uses: actions/checkout@": "uses: actions/checkout@v5", + "uses: actions/setup-go@": "uses: actions/setup-go@v6", + "uses: actions/setup-dotnet@": "uses: actions/setup-dotnet@v5", + "uses: github/codeql-action/init@": "uses: github/codeql-action/init@v4", + "uses: github/codeql-action/autobuild@": "uses: github/codeql-action/autobuild@v4", + "uses: github/codeql-action/analyze@": "uses: github/codeql-action/analyze@v4", + } + foundManagedAction := false + for _, name := range []string{"ci.yml", "codeql.yml", "release.yml", "windows-installer.yml"} { + workflow := readWorkflow(t, name) + for _, line := range strings.Split(workflow, "\n") { + trimmed := strings.TrimSpace(line) + for prefix, want := range expected { + if !strings.HasPrefix(trimmed, prefix) { + continue + } + foundManagedAction = true + if trimmed != want { + t.Fatalf("workflow %s must use %q, got %q", name, want, trimmed) + } + } + } + } + if !foundManagedAction { + t.Fatal("expected workflows to use managed GitHub Actions") + } +} + func TestCIWorkflowUsesFreshBoundedGoTests(t *testing.T) { workflow := readWorkflow(t, "ci.yml") for _, want := range []string{