diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e587162ef8..661d7bffe1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -178,7 +178,7 @@ jobs: if: always() - name: Upload Scan Results - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 continue-on-error: true with: name: scan-results-${{ inputs.image }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 85995d9ddf..00ec13f131 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -98,7 +98,7 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} - name: Upload Coverage Report - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: cover-${{ github.run_id }}.html path: ${{ github.workspace }}/cover.html diff --git a/.github/workflows/docs-build-push.yml b/.github/workflows/docs-build-push.yml index 3e6f1db7fd..5e0741603e 100644 --- a/.github/workflows/docs-build-push.yml +++ b/.github/workflows/docs-build-push.yml @@ -41,7 +41,7 @@ jobs: call-docs-build-push: needs: [vars] if: ${{ github.event.repository.fork == false && needs.vars.outputs.azure_creds == 'true' }} - uses: nginxinc/docs-actions/.github/workflows/docs-build-push.yml@a733e84a262f8d5d885bfc8eac80bc85928da322 # v1.0.3 + uses: nginxinc/docs-actions/.github/workflows/docs-build-push.yml@d20def4d420028a71f99863011c6de7325c4013e # v1.0.4 permissions: pull-requests: write # needed to write preview url comment to PR contents: read diff --git a/.github/workflows/nfr.yml b/.github/workflows/nfr.yml index 7030df8df2..ee1b7c779a 100644 --- a/.github/workflows/nfr.yml +++ b/.github/workflows/nfr.yml @@ -4,11 +4,11 @@ on: workflow_dispatch: inputs: test_label: - description: NFR test to run. Choose between performance, upgrade, scale, or all + description: NFR test to run. Choose between a specific test or all tests required: true default: all type: choice - options: [performance, upgrade, scale, all] + options: [performance, upgrade, scale, zero-downtime-scale, reconfiguration, all] version: description: Version of NGF under test required: true @@ -129,7 +129,7 @@ jobs: fi - name: Upload Artifacts - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: results-${{ matrix.type }} path: tests/results/**/*-${{ matrix.type }}.* @@ -160,7 +160,7 @@ jobs: merge-multiple: true - name: Open a PR with the results - uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0 + uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 with: token: ${{ secrets.NGINX_PAT }} commit-message: NFR Test Results for NGF version ${{ needs.vars.outputs.version }} diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index a232e19078..f159d0b2ec 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -89,7 +89,7 @@ jobs: make generate-all - name: Create Pull Request - uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0 + uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 with: token: ${{ secrets.NGINX_PAT }} commit-message: Release ${{ inputs.version }} diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index edaa241eb3..dc62edf4a2 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -52,7 +52,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: SARIF file path: results.sarif diff --git a/docs/developer/release-process.md b/docs/developer/release-process.md index bebec842ca..b7c2a82e58 100644 --- a/docs/developer/release-process.md +++ b/docs/developer/release-process.md @@ -66,7 +66,7 @@ To create a new release, follow these steps: 4. `GW_API_PREV_VERSION` in tests Makefile, if necessary. 5. Any references in the docs to the previous release. 6. Any installation instructions to ensure that the supported Gateway API and NGF versions are correct. Specifically, helm README. -8. Run the [docs workflow](https://github.com/nginxinc/nginx-gateway-fabric/actions/workflows/docs-build-push.yml) for **prod** on the **release branch**. +8. Run the [docs workflow](https://github.com/nginxinc/nginx-gateway-fabric/actions/workflows/docs-build-push.yml) for **prod** on the **release branch**. Open a PR to the release branch to turn auto-deploy on for the docs workflow in this branch. See [this README](https://github.com/nginxinc/docs-actions/tree/v1.0.4?tab=readme-ov-file#caller-example) for how to do this. Docs should only be auto-published when changes to the `site/` directory are made. 9. Close the issue created in Step 1. 10. Ensure that the [associated milestone](https://github.com/nginxinc/nginx-gateway-fabric/milestones) is closed. 11. Verify that published artifacts in the release can be installed properly. diff --git a/go.mod b/go.mod index 10c5172ffc..cf46500c80 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/onsi/ginkgo/v2 v2.20.2 github.com/onsi/gomega v1.34.2 github.com/prometheus/client_golang v1.20.2 - github.com/prometheus/common v0.57.0 + github.com/prometheus/common v0.58.0 github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 go.opentelemetry.io/otel v1.29.0 diff --git a/go.sum b/go.sum index 281ecd4904..ae3379132b 100644 --- a/go.sum +++ b/go.sum @@ -106,8 +106,8 @@ github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjs github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= -github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI= +github.com/prometheus/common v0.58.0 h1:N+N8vY4/23r6iYfD3UQZUoJPnUYAo7v6LG5XZxjZTXo= +github.com/prometheus/common v0.58.0/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= diff --git a/internal/mode/static/nginx/config/policies/clientsettings/generator_test.go b/internal/mode/static/nginx/config/policies/clientsettings/generator_test.go index 7d728fcfd2..395f0dd901 100644 --- a/internal/mode/static/nginx/config/policies/clientsettings/generator_test.go +++ b/internal/mode/static/nginx/config/policies/clientsettings/generator_test.go @@ -13,6 +13,7 @@ import ( ) func TestGenerate(t *testing.T) { + t.Parallel() maxSize := helpers.GetPointer[ngfAPI.Size]("10m") bodyTimeout := helpers.GetPointer[ngfAPI.Duration]("600ms") keepaliveRequests := helpers.GetPointer[int32](900) @@ -149,9 +150,9 @@ func TestGenerate(t *testing.T) { }, } - g := NewWithT(t) - - checkResults := func(resFiles policies.GenerateResultFiles, expStrings []string) { + checkResults := func(t *testing.T, resFiles policies.GenerateResultFiles, expStrings []string) { + t.Helper() + g := NewWithT(t) g.Expect(resFiles).To(HaveLen(1)) for _, str := range expStrings { @@ -160,22 +161,24 @@ func TestGenerate(t *testing.T) { } for _, test := range tests { - t.Run(test.name, func(_ *testing.T) { + t.Run(test.name, func(t *testing.T) { + t.Parallel() generator := clientsettings.NewGenerator() resFiles := generator.GenerateForServer([]policies.Policy{test.policy}, http.Server{}) - checkResults(resFiles, test.expStrings) + checkResults(t, resFiles, test.expStrings) resFiles = generator.GenerateForLocation([]policies.Policy{test.policy}, http.Location{}) - checkResults(resFiles, test.expStrings) + checkResults(t, resFiles, test.expStrings) resFiles = generator.GenerateForInternalLocation([]policies.Policy{test.policy}) - checkResults(resFiles, test.expStrings) + checkResults(t, resFiles, test.expStrings) }) } } func TestGenerateNoPolicies(t *testing.T) { + t.Parallel() g := NewWithT(t) generator := clientsettings.NewGenerator() diff --git a/internal/mode/static/nginx/config/policies/clientsettings/validator_test.go b/internal/mode/static/nginx/config/policies/clientsettings/validator_test.go index 9cb5884b6e..1be2eff100 100644 --- a/internal/mode/static/nginx/config/policies/clientsettings/validator_test.go +++ b/internal/mode/static/nginx/config/policies/clientsettings/validator_test.go @@ -53,6 +53,7 @@ func createModifiedPolicy(mod policyModFunc) *ngfAPI.ClientSettingsPolicy { } func TestValidator_Validate(t *testing.T) { + t.Parallel() tests := []struct { name string policy *ngfAPI.ClientSettingsPolicy @@ -133,6 +134,7 @@ func TestValidator_Validate(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) conds := v.Validate(test.policy, nil) @@ -142,6 +144,7 @@ func TestValidator_Validate(t *testing.T) { } func TestValidator_ValidatePanics(t *testing.T) { + t.Parallel() v := clientsettings.NewValidator(nil) validate := func() { @@ -154,6 +157,7 @@ func TestValidator_ValidatePanics(t *testing.T) { } func TestValidator_Conflicts(t *testing.T) { + t.Parallel() tests := []struct { polA *ngfAPI.ClientSettingsPolicy polB *ngfAPI.ClientSettingsPolicy @@ -256,6 +260,7 @@ func TestValidator_Conflicts(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(v.Conflicts(test.polA, test.polB)).To(Equal(test.conflicts)) @@ -264,6 +269,7 @@ func TestValidator_Conflicts(t *testing.T) { } func TestValidator_ConflictsPanics(t *testing.T) { + t.Parallel() v := clientsettings.NewValidator(nil) conflicts := func() { diff --git a/internal/mode/static/nginx/config/policies/observability/generator_test.go b/internal/mode/static/nginx/config/policies/observability/generator_test.go index 4faa880c0d..bee1df4e84 100644 --- a/internal/mode/static/nginx/config/policies/observability/generator_test.go +++ b/internal/mode/static/nginx/config/policies/observability/generator_test.go @@ -15,6 +15,7 @@ import ( ) func TestGenerate(t *testing.T) { + t.Parallel() ratio := helpers.GetPointer[int32](25) zeroRatio := helpers.GetPointer[int32](0) context := helpers.GetPointer[ngfAPI.TraceContext](ngfAPI.TraceContextExtract) @@ -242,6 +243,7 @@ func TestGenerate(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) generator := observability.NewGenerator(test.telemetryConf) @@ -280,6 +282,7 @@ func TestGenerate(t *testing.T) { } func TestGenerateNoPolicies(t *testing.T) { + t.Parallel() g := NewWithT(t) generator := observability.NewGenerator(dataplane.Telemetry{}) diff --git a/internal/mode/static/nginx/config/policies/observability/validator_test.go b/internal/mode/static/nginx/config/policies/observability/validator_test.go index 9f8976e4c2..53aa9c19ef 100644 --- a/internal/mode/static/nginx/config/policies/observability/validator_test.go +++ b/internal/mode/static/nginx/config/policies/observability/validator_test.go @@ -52,6 +52,7 @@ func createModifiedPolicy(mod policyModFunc) *ngfAPI.ObservabilityPolicy { } func TestValidator_Validate(t *testing.T) { + t.Parallel() globalSettings := &policies.GlobalSettings{ NginxProxyValid: true, TelemetryEnabled: true, @@ -185,6 +186,7 @@ func TestValidator_Validate(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) conds := v.Validate(test.policy, test.globalSettings) @@ -194,6 +196,7 @@ func TestValidator_Validate(t *testing.T) { } func TestValidator_ValidatePanics(t *testing.T) { + t.Parallel() v := observability.NewValidator(nil) validate := func() { @@ -206,6 +209,7 @@ func TestValidator_ValidatePanics(t *testing.T) { } func TestValidator_Conflicts(t *testing.T) { + t.Parallel() tests := []struct { polA *ngfAPI.ObservabilityPolicy polB *ngfAPI.ObservabilityPolicy @@ -244,6 +248,7 @@ func TestValidator_Conflicts(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(v.Conflicts(test.polA, test.polB)).To(Equal(test.conflicts)) @@ -252,6 +257,7 @@ func TestValidator_Conflicts(t *testing.T) { } func TestValidator_ConflictsPanics(t *testing.T) { + t.Parallel() v := observability.NewValidator(nil) conflicts := func() { diff --git a/internal/mode/static/nginx/config/policies/policies_suite_test.go b/internal/mode/static/nginx/config/policies/policies_suite_test.go index 6703df23f1..a22933037a 100644 --- a/internal/mode/static/nginx/config/policies/policies_suite_test.go +++ b/internal/mode/static/nginx/config/policies/policies_suite_test.go @@ -8,6 +8,7 @@ import ( ) func TestPolicies(t *testing.T) { + t.Parallel() RegisterFailHandler(Fail) RunSpecs(t, "Policies Suite") } diff --git a/internal/mode/static/nginx/config/validation/common_test.go b/internal/mode/static/nginx/config/validation/common_test.go index f7c2f3be74..da3059e4c4 100644 --- a/internal/mode/static/nginx/config/validation/common_test.go +++ b/internal/mode/static/nginx/config/validation/common_test.go @@ -6,6 +6,7 @@ import ( ) func TestValidateEscapedString(t *testing.T) { + t.Parallel() validator := func(value string) error { return validateEscapedString(value, []string{"example"}) } testValidValuesForSimpleValidator( @@ -25,6 +26,7 @@ func TestValidateEscapedString(t *testing.T) { } func TestValidateEscapedStringNoVarExpansion(t *testing.T) { + t.Parallel() validator := func(value string) error { return validateEscapedStringNoVarExpansion(value, []string{"example"}) } testValidValuesForSimpleValidator( @@ -45,6 +47,7 @@ func TestValidateEscapedStringNoVarExpansion(t *testing.T) { } func TestValidateValidHeaderName(t *testing.T) { + t.Parallel() validator := func(value string) error { return validateHeaderName(value) } testValidValuesForSimpleValidator( diff --git a/internal/mode/static/nginx/config/validation/framework_test.go b/internal/mode/static/nginx/config/validation/framework_test.go index 58e727fbc7..7e0ff5d0ce 100644 --- a/internal/mode/static/nginx/config/validation/framework_test.go +++ b/internal/mode/static/nginx/config/validation/framework_test.go @@ -79,6 +79,7 @@ func testInvalidValuesForSupportedValuesValidator[T configValue]( } func TestValidateInSupportedValues(t *testing.T) { + t.Parallel() supportedValues := map[string]struct{}{ "value1": {}, "value2": {}, @@ -105,6 +106,7 @@ func TestValidateInSupportedValues(t *testing.T) { } func TestValidateNoUnsupportedValues(t *testing.T) { + t.Parallel() unsupportedValues := map[string]struct{}{ "badvalue1": {}, "badvalue2": {}, @@ -133,6 +135,7 @@ func TestValidateNoUnsupportedValues(t *testing.T) { } func TestGetSortedKeysAsString(t *testing.T) { + t.Parallel() values := map[string]struct{}{ "value3": {}, "value1": {}, diff --git a/internal/mode/static/nginx/config/validation/generic_test.go b/internal/mode/static/nginx/config/validation/generic_test.go index 86903bfa38..6934372c0f 100644 --- a/internal/mode/static/nginx/config/validation/generic_test.go +++ b/internal/mode/static/nginx/config/validation/generic_test.go @@ -3,6 +3,7 @@ package validation import "testing" func TestGenericValidator_ValidateEscapedStringNoVarExpansion(t *testing.T) { + t.Parallel() validator := GenericValidator{} testValidValuesForSimpleValidator( @@ -24,6 +25,7 @@ func TestGenericValidator_ValidateEscapedStringNoVarExpansion(t *testing.T) { } func TestValidateServiceName(t *testing.T) { + t.Parallel() validator := GenericValidator{} testValidValuesForSimpleValidator( @@ -45,6 +47,7 @@ func TestValidateServiceName(t *testing.T) { } func TestValidateNginxDuration(t *testing.T) { + t.Parallel() validator := GenericValidator{} testValidValuesForSimpleValidator( @@ -65,6 +68,7 @@ func TestValidateNginxDuration(t *testing.T) { } func TestValidateNginxSize(t *testing.T) { + t.Parallel() validator := GenericValidator{} testValidValuesForSimpleValidator( @@ -86,6 +90,7 @@ func TestValidateNginxSize(t *testing.T) { } func TestValidateEndpoint(t *testing.T) { + t.Parallel() validator := GenericValidator{} testValidValuesForSimpleValidator( diff --git a/internal/mode/static/nginx/config/validation/http_filters_test.go b/internal/mode/static/nginx/config/validation/http_filters_test.go index d58716599c..bd06ed2b41 100644 --- a/internal/mode/static/nginx/config/validation/http_filters_test.go +++ b/internal/mode/static/nginx/config/validation/http_filters_test.go @@ -6,6 +6,7 @@ import ( ) func TestValidateRedirectScheme(t *testing.T) { + t.Parallel() validator := HTTPRedirectValidator{} testValidValuesForSupportedValuesValidator( @@ -24,6 +25,7 @@ func TestValidateRedirectScheme(t *testing.T) { } func TestValidateRedirectPort(t *testing.T) { + t.Parallel() validator := HTTPRedirectValidator{} testValidValuesForSimpleValidator( @@ -35,6 +37,7 @@ func TestValidateRedirectPort(t *testing.T) { } func TestValidateRedirectStatusCode(t *testing.T) { + t.Parallel() validator := HTTPRedirectValidator{} testValidValuesForSupportedValuesValidator( @@ -52,6 +55,7 @@ func TestValidateRedirectStatusCode(t *testing.T) { } func TestValidateHostname(t *testing.T) { + t.Parallel() validator := HTTPRedirectValidator{} testValidValuesForSimpleValidator( @@ -68,6 +72,7 @@ func TestValidateHostname(t *testing.T) { } func TestValidateRewritePath(t *testing.T) { + t.Parallel() validator := HTTPURLRewriteValidator{} testValidValuesForSimpleValidator( @@ -89,6 +94,7 @@ func TestValidateRewritePath(t *testing.T) { } func TestValidateFilterHeaderName(t *testing.T) { + t.Parallel() validator := HTTPHeaderValidator{} testValidValuesForSimpleValidator( @@ -102,6 +108,7 @@ func TestValidateFilterHeaderName(t *testing.T) { } func TestValidateFilterHeaderValue(t *testing.T) { + t.Parallel() validator := HTTPHeaderValidator{} testValidValuesForSimpleValidator( diff --git a/internal/mode/static/nginx/config/validation/http_njs_match_test.go b/internal/mode/static/nginx/config/validation/http_njs_match_test.go index 6856dea988..70293060f8 100644 --- a/internal/mode/static/nginx/config/validation/http_njs_match_test.go +++ b/internal/mode/static/nginx/config/validation/http_njs_match_test.go @@ -5,6 +5,7 @@ import ( ) func TestValidatePathInMatch(t *testing.T) { + t.Parallel() validator := HTTPNJSMatchValidator{} testValidValuesForSimpleValidator( @@ -28,6 +29,7 @@ func TestValidatePathInMatch(t *testing.T) { } func TestValidateHeaderNameInMatch(t *testing.T) { + t.Parallel() validator := HTTPNJSMatchValidator{} testValidValuesForSimpleValidator( @@ -50,6 +52,7 @@ func TestValidateHeaderNameInMatch(t *testing.T) { } func TestValidateHeaderValueInMatch(t *testing.T) { + t.Parallel() validator := HTTPNJSMatchValidator{} testValidValuesForSimpleValidator( @@ -70,6 +73,7 @@ func TestValidateHeaderValueInMatch(t *testing.T) { } func TestValidateQueryParamNameInMatch(t *testing.T) { + t.Parallel() validator := HTTPNJSMatchValidator{} testValidValuesForSimpleValidator( @@ -85,6 +89,7 @@ func TestValidateQueryParamNameInMatch(t *testing.T) { } func TestValidateQueryParamValueInMatch(t *testing.T) { + t.Parallel() validator := HTTPNJSMatchValidator{} testValidValuesForSimpleValidator( @@ -100,6 +105,7 @@ func TestValidateQueryParamValueInMatch(t *testing.T) { } func TestValidateMethodInMatch(t *testing.T) { + t.Parallel() validator := HTTPNJSMatchValidator{} testValidValuesForSupportedValuesValidator( @@ -123,6 +129,7 @@ func TestValidateMethodInMatch(t *testing.T) { } func TestValidateCommonMatchPart(t *testing.T) { + t.Parallel() testValidValuesForSimpleValidator( t, validateCommonNJSMatchPart, diff --git a/internal/mode/static/nginx/modules/package-lock.json b/internal/mode/static/nginx/modules/package-lock.json index 57d9150298..e7764a7810 100644 --- a/internal/mode/static/nginx/modules/package-lock.json +++ b/internal/mode/static/nginx/modules/package-lock.json @@ -49,13 +49,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", - "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.4" + "@babel/types": "^7.25.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -65,9 +65,9 @@ } }, "node_modules/@babel/types": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", - "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dev": true, "license": "MIT", "dependencies": { @@ -570,9 +570,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz", - "integrity": "sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz", + "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==", "cpu": [ "arm" ], @@ -584,9 +584,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz", - "integrity": "sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz", + "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==", "cpu": [ "arm64" ], @@ -598,9 +598,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.1.tgz", - "integrity": "sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz", + "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==", "cpu": [ "arm64" ], @@ -612,9 +612,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz", - "integrity": "sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz", + "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==", "cpu": [ "x64" ], @@ -626,9 +626,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz", - "integrity": "sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz", + "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==", "cpu": [ "arm" ], @@ -640,9 +640,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz", - "integrity": "sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz", + "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==", "cpu": [ "arm" ], @@ -654,9 +654,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz", - "integrity": "sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz", + "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==", "cpu": [ "arm64" ], @@ -668,9 +668,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz", - "integrity": "sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz", + "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==", "cpu": [ "arm64" ], @@ -682,9 +682,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz", - "integrity": "sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz", + "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==", "cpu": [ "ppc64" ], @@ -696,9 +696,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz", - "integrity": "sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz", + "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==", "cpu": [ "riscv64" ], @@ -710,9 +710,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz", - "integrity": "sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz", + "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==", "cpu": [ "s390x" ], @@ -724,9 +724,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz", - "integrity": "sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz", + "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==", "cpu": [ "x64" ], @@ -738,9 +738,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz", - "integrity": "sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz", + "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==", "cpu": [ "x64" ], @@ -752,9 +752,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz", - "integrity": "sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz", + "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==", "cpu": [ "arm64" ], @@ -766,9 +766,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz", - "integrity": "sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz", + "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==", "cpu": [ "ia32" ], @@ -780,9 +780,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz", - "integrity": "sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz", + "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==", "cpu": [ "x64" ], @@ -1394,14 +1394,14 @@ } }, "node_modules/magicast": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz", - "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.24.4", - "@babel/types": "^7.24.0", + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, @@ -1590,16 +1590,16 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true, "license": "ISC" }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.44", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz", + "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==", "dev": true, "funding": [ { @@ -1642,9 +1642,9 @@ } }, "node_modules/rollup": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.1.tgz", - "integrity": "sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz", + "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==", "dev": true, "license": "MIT", "dependencies": { @@ -1658,22 +1658,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.21.1", - "@rollup/rollup-android-arm64": "4.21.1", - "@rollup/rollup-darwin-arm64": "4.21.1", - "@rollup/rollup-darwin-x64": "4.21.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.21.1", - "@rollup/rollup-linux-arm-musleabihf": "4.21.1", - "@rollup/rollup-linux-arm64-gnu": "4.21.1", - "@rollup/rollup-linux-arm64-musl": "4.21.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.21.1", - "@rollup/rollup-linux-riscv64-gnu": "4.21.1", - "@rollup/rollup-linux-s390x-gnu": "4.21.1", - "@rollup/rollup-linux-x64-gnu": "4.21.1", - "@rollup/rollup-linux-x64-musl": "4.21.1", - "@rollup/rollup-win32-arm64-msvc": "4.21.1", - "@rollup/rollup-win32-ia32-msvc": "4.21.1", - "@rollup/rollup-win32-x64-msvc": "4.21.1", + "@rollup/rollup-android-arm-eabi": "4.21.2", + "@rollup/rollup-android-arm64": "4.21.2", + "@rollup/rollup-darwin-arm64": "4.21.2", + "@rollup/rollup-darwin-x64": "4.21.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.2", + "@rollup/rollup-linux-arm-musleabihf": "4.21.2", + "@rollup/rollup-linux-arm64-gnu": "4.21.2", + "@rollup/rollup-linux-arm64-musl": "4.21.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2", + "@rollup/rollup-linux-riscv64-gnu": "4.21.2", + "@rollup/rollup-linux-s390x-gnu": "4.21.2", + "@rollup/rollup-linux-x64-gnu": "4.21.2", + "@rollup/rollup-linux-x64-musl": "4.21.2", + "@rollup/rollup-win32-arm64-msvc": "4.21.2", + "@rollup/rollup-win32-ia32-msvc": "4.21.2", + "@rollup/rollup-win32-x64-msvc": "4.21.2", "fsevents": "~2.3.2" } }, @@ -1950,14 +1950,14 @@ } }, "node_modules/vite": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", - "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz", + "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.41", + "postcss": "^8.4.43", "rollup": "^4.20.0" }, "bin": { diff --git a/site/Makefile b/site/Makefile index e0ee3dd0aa..8b0ab44676 100644 --- a/site/Makefile +++ b/site/Makefile @@ -1,28 +1,22 @@ HUGO?=hugo -# the officially recommended unofficial docker image HUGO_IMG?=hugomods/hugo:0.115.3 THEME_MODULE = github.com/nginxinc/nginx-hugo-theme -## Pulls the current theme version from the Netlify settings -THEME_VERSION = $(NGINX_THEME_VERSION) -NETLIFY_DEPLOY_URL = ${DEPLOY_PRIME_URL} +THEME_VERSION = 0.41.14 -# if there's no local hugo, fallback to docker ifeq (, $(shell ${HUGO} version 2> /dev/null)) ifeq (, $(shell docker version 2> /dev/null)) $(error Docker and Hugo are not installed. Hugo (<0.91) or Docker are required to build the local preview.) else - HUGO=docker run --rm -it -v ${CURDIR}:/src -p 1313:1313 ${HUGO_IMG} hugo + HUGO=docker run --rm -it -v ${CURDIR}:/src -p 1313:1313 ${HUGO_IMG} hugo --bind 0.0.0.0 -p 1313 endif endif MARKDOWNLINT?=markdownlint MARKDOWNLINT_IMG?=ghcr.io/igorshubovych/markdownlint-cli:latest -# if there's no local markdownlint, fallback to docker ifeq (, $(shell ${MARKDOWNLINT} version 2> /dev/null)) ifeq (, $(shell docker version 2> /dev/null)) -ifneq (, $(shell $(NETLIFY) "true")) $(error Docker and markdownlint are not installed. markdownlint or Docker are required to lint.) endif else @@ -32,10 +26,9 @@ endif MARKDOWNLINKCHECK?=markdown-link-check MARKDOWNLINKCHECK_IMG?=ghcr.io/tcort/markdown-link-check:stable -# if there's no local markdown-link-check, fallback to docker + ifeq (, $(shell ${MARKDOWNLINKCHECK} --version 2> /dev/null)) ifeq (, $(shell docker version 2> /dev/null)) -ifneq (, $(shell $(NETLIFY) "true")) $(error Docker and markdown-link-check are not installed. markdown-link-check or Docker are required to check links.) endif else @@ -43,46 +36,30 @@ else endif endif -.PHONY: all all-staging all-dev all-local clean hugo-mod build-production build-staging build-dev docs-drafts docs deploy-preview - -all: hugo-mod build-production - -all-staging: hugo-mod build-staging - -all-dev: hugo-mod build-dev - -all-local: clean hugo-mod build-production +.PHONY: docs watch drafts clean hugo-get hugo-tidy hugo-update lint-markdown link-check docs: ${HUGO} -clean: - if [[ -d ${PWD}/public ]] ; then rm -rf ${PWD}/public && echo "Removed public directory" ; else echo "Did not find a public directory to remove" ; fi - watch: ${HUGO} --bind 0.0.0.0 -p 1313 server --disableFastRender -watch-drafts: +drafts: ${HUGO} --bind 0.0.0.0 -p 1313 server -D --disableFastRender -link-check: - ${MARKDOWNLINKCHECK} $(shell find content -name '*.md') - -lint-markdown: - ${MARKDOWNLINT} -c .markdownlint.json -- content +clean: + [ -d "public" ] && rm -rf "public" -# Commands used by Netlify CI -hugo-mod: +hugo-get: hugo mod get $(THEME_MODULE)@v$(THEME_VERSION) -build-production: - hugo --gc -e production +hugo-tidy: + hugo mod tidy -build-staging: - hugo --gc -e staging +hugo-update: hugo-get hugo-tidy -build-dev: - hugo --gc -e development +lint-markdown: + ${MARKDOWNLINT} -c .markdownlint.yaml -- content -deploy-preview: hugo-mod - hugo --gc -b ${NETLIFY_DEPLOY_URL}/nginx-gateway-fabric/ +link-check: + ${MARKDOWNLINKCHECK} $(shell find content -name '*.md') diff --git a/site/README.md b/site/README.md index 98c5d36e80..5128219d77 100644 --- a/site/README.md +++ b/site/README.md @@ -38,28 +38,27 @@ The documentation is published from the latest public release branch. If your ch ## Developing documentation locally -To build the documentation locally, run the `make` command inside this `/site/` directory: +To build the documentation locally, use the `make` command in the documentation folder with these targets: ```text -make docs - Builds the documentation set with the output as the '/public' directory -make clean - Removes the local '/public/' directory -make watch - Starts a local Hugo server for live previews -make watch-drafts - Starts a local Hugo server for live previews, including documentation marked with 'draft: true' -make link-check - Check for any broken links in the documentation -make lint-markdown - Runs markdownlint to identify possible markdown formatting issues +make docs - Builds the documentation +make watch - Runs a local Hugo server to automatically preview changes +make drafts - Runs a local Hugo server, and displays documentation marked as drafts +make clean - Removes the output 'public' directory created by Hugo +make hugo-get - Updates the go module file with the latest version of the theme +make hugo-tidy - Removes unnecessary dependencies from the go module file +make hugo-update - Runs the hugo-get and hugo-tidy targets in sequence +make lint-markdown - Runs markdownlint on the content folder +make link-check - Runs markdown-link-check on all Markdown files ``` -The `watch` options automatically reload the Hugo server, allowing you to view updates as you work. - -> **Note**: The documentation uses build environments to control the baseURL used for things like internal references and static resources. The configuration for each environment can be found in the `config` directory. When running Hugo you can specify the environment and baseURL, but it's unnecessary. - ## Adding new documentation -### Using Hugo to generate a new documentation file +### Generate a new documentation file using Hugo -To create a new documentation file with the pre-configured Hugo front-matter for the task template, run the following command inside this `/site` directory: +To create a new documentation file containing the pre-configured Hugo front-matter with the task template, **run the following command in the documentation directory**: -`hugo new /.md` +`hugo new /.` For example: @@ -67,7 +66,7 @@ For example: hugo new getting-started/install.md ``` -The default template (task) should be used for most pages. For other content templates, you can use the `--kind` flag: +The default template -- task -- should be used for most documentation. To create documentation using the other content templates, you can use the `--kind` flag: ```shell hugo new tutorials/deploy.md --kind tutorial @@ -125,7 +124,7 @@ Use the `img` [shortcode](#using-hugo-shortcodes) to add images into your docume ### Using Hugo shortcodes -[Hugo shortcodes](/docs/themes/f5-hugo/layouts/shortcodes/) are used to format callouts, add images, and reuse content across different pages. +[Hugo shortcodes](https://github.com/nginxinc/nginx-hugo-theme/tree/main/layouts/shortcodes) are used to format callouts, add images, and reuse content across different pages. For example, to use the `note` callout: diff --git a/site/go.mod b/site/go.mod index b745ac77f8..7d928ceded 100644 --- a/site/go.mod +++ b/site/go.mod @@ -2,4 +2,4 @@ module github.com/nginxinc/nginx-gateway-fabric/site go 1.21 -require github.com/nginxinc/nginx-hugo-theme v0.41.1 // indirect +require github.com/nginxinc/nginx-hugo-theme v0.41.14 // indirect diff --git a/site/go.sum b/site/go.sum index 9f3c8112b0..1cbbb6618c 100644 --- a/site/go.sum +++ b/site/go.sum @@ -1,4 +1,2 @@ -github.com/nginxinc/nginx-hugo-theme v0.41.0 h1:uB9jC0Qk9i2CG63gScHxVHAEz1zyGoAdtY0Lcpkg1lI= -github.com/nginxinc/nginx-hugo-theme v0.41.0/go.mod h1:DPNgSS5QYxkjH/BfH4uPDiTfODqWJ50NKZdorguom8M= -github.com/nginxinc/nginx-hugo-theme v0.41.1 h1:Wan0Mb8uz1X4Z2vd/1nR0GOPel5mWVPuFD3jd4SezsU= -github.com/nginxinc/nginx-hugo-theme v0.41.1/go.mod h1:DPNgSS5QYxkjH/BfH4uPDiTfODqWJ50NKZdorguom8M= +github.com/nginxinc/nginx-hugo-theme v0.41.14 h1:OraNB01CdMJXufPddvIVt6qn6Mj38Z/XCVIWBgVtuY0= +github.com/nginxinc/nginx-hugo-theme v0.41.14/go.mod h1:DPNgSS5QYxkjH/BfH4uPDiTfODqWJ50NKZdorguom8M= diff --git a/tests/framework/collector.go b/tests/framework/collector.go index eacf5f8aac..b6d3fb0253 100644 --- a/tests/framework/collector.go +++ b/tests/framework/collector.go @@ -12,7 +12,7 @@ const ( collectorChartReleaseName = "otel-collector" //nolint:lll // renovate: datasource=helm depName=opentelemetry-collector registryUrl=https://open-telemetry.github.io/opentelemetry-helm-charts - collectorChartVersion = "0.103.0" + collectorChartVersion = "0.104.0" ) // InstallCollector installs the otel-collector. diff --git a/tests/go.mod b/tests/go.mod index 036cca74f6..c94eda881b 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -7,7 +7,7 @@ require ( github.com/onsi/ginkgo/v2 v2.20.2 github.com/onsi/gomega v1.34.2 github.com/prometheus/client_golang v1.20.2 - github.com/prometheus/common v0.57.0 + github.com/prometheus/common v0.58.0 github.com/tsenart/vegeta/v12 v12.12.0 k8s.io/api v0.31.0 k8s.io/apiextensions-apiserver v0.31.0 diff --git a/tests/go.sum b/tests/go.sum index 37395f72d9..27504ef498 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -105,8 +105,8 @@ github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjs github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= -github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI= +github.com/prometheus/common v0.58.0 h1:N+N8vY4/23r6iYfD3UQZUoJPnUYAo7v6LG5XZxjZTXo= +github.com/prometheus/common v0.58.0/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= diff --git a/tests/suite/reconfig_test.go b/tests/suite/reconfig_test.go index 4e020ccf68..d2787f3e61 100644 --- a/tests/suite/reconfig_test.go +++ b/tests/suite/reconfig_test.go @@ -24,7 +24,7 @@ import ( ) // Cluster node size must be greater than or equal to 4 for test to perform correctly. -var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("reconfiguration", "nfr"), func() { +var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("nfr", "reconfiguration"), func() { const ( // used for cleaning up resources maxResourceCount = 150 @@ -627,7 +627,6 @@ const reconfigResultTemplate = ` {{- range .EventsBuckets }} - {{ .Le }}ms: {{ .Val }} {{- end }} - ` func writeReconfigResults(dest io.Writer, results reconfigTestResults) error { diff --git a/tests/suite/scale_test.go b/tests/suite/scale_test.go index 80a3a010a7..79a682b81c 100644 --- a/tests/suite/scale_test.go +++ b/tests/suite/scale_test.go @@ -187,7 +187,7 @@ The logs are attached only if there are errors. Expect(err).ToNot(HaveOccurred()) logLines := strings.Split(logs, "\n") - errors := 0 + var errors []string outer: for _, line := range logLines { @@ -198,22 +198,24 @@ The logs are attached only if there are errors. } for _, substr := range substrings { if strings.Contains(line, substr) { - errors++ + errors = append(errors, line) continue outer } } } - // attach full logs - if errors > 0 { + // attach error logs + if len(errors) > 0 { f, err := os.Create(fileName) Expect(err).ToNot(HaveOccurred()) defer f.Close() - _, err = io.WriteString(f, logs) - Expect(err).ToNot(HaveOccurred()) + for _, e := range errors { + _, err = io.WriteString(f, fmt.Sprintf("%s\n", e)) + Expect(err).ToNot(HaveOccurred()) + } } - return errors + return len(errors) } runTestWithMetricsAndLogs := func(testName, testResultsDir string, test func()) { @@ -797,7 +799,7 @@ var _ = Describe("Zero downtime scale test", Ordered, Label("nfr", "zero-downtim }) AfterAll(func() { - _, err := fmt.Fprintln(outFile) + _, err := fmt.Fprint(outFile) Expect(err).ToNot(HaveOccurred()) Expect(outFile.Close()).To(Succeed())