From ea3f74c1b3da0366a732eecceeac3a7bb8e8f523 Mon Sep 17 00:00:00 2001 From: Kaj Kowalski Date: Mon, 15 Jun 2026 17:42:49 +0000 Subject: [PATCH] ci: bump to Go 1.26 and address PR review feedback The autofix failure is fixed properly by moving to Go 1.26 instead of the GOTOOLCHAIN workaround. The official golangci-lint v2.12.2 binary is built with go1.26.2 and lints a Go 1.26 target fine (the earlier "not ready" claim was from a locally go-installed binary compiled with Go 1.25), and the Dockerfiles already use golang:1.26-alpine, so this also aligns the module with the images. - go.mod: go 1.25.0 -> 1.26.0, drop the toolchain pin (keeps the lint target at the go directive). - Taskfile: revert modernize to plain modernize@latest; on Go 1.26 the GOTOOLCHAIN dance and its comments are unnecessary. - ci.yml: pass the resolved Go version through an env var (GO_VERSION) instead of interpolating steps.setup-go.outputs.go-version directly into shell scripts (script-injection hygiene); grant the dependency-review job pull-requests: write so it can post its summary. - parser.go: derive defaultBaseURL from riseHost instead of duplicating the host string; drop the redundant per-const comments. - .golangci.yml: remove the redundant go-version comment. - regenerate internal/exporters/output.docx. --- .github/workflows/ci.yml | 30 ++++++++++++++++++++---------- .golangci.yml | 4 ---- Taskfile.yml | 5 +---- go.mod | 4 +--- internal/exporters/output.docx | Bin 775 -> 775 bytes internal/services/parser.go | 6 ++---- 6 files changed, 24 insertions(+), 25 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8c3bf2c..0f09b92 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,6 +46,13 @@ jobs: go-version-file: go.mod check-latest: true + # Expose the resolved Go version as an env var so it is never + # interpolated directly into a shell script (avoids script injection). + - name: Export Go version + env: + GO_VERSION: ${{ steps.setup-go.outputs.go-version }} + run: echo "GO_VERSION=$GO_VERSION" >> "$GITHUB_ENV" + - name: Install Task uses: go-task/setup-task@v1 @@ -66,7 +73,7 @@ jobs: { cat << EOF ## ๐Ÿ”ง Test Environment - - **Go Version:** ${{ steps.setup-go.outputs.go-version }} + - **Go Version:** $GO_VERSION - **OS:** ubuntu-latest - **Timestamp:** $(date -u) @@ -86,7 +93,7 @@ jobs: # Generate test summary { cat << EOF - ## ๐Ÿงช Test Results (Go ${{ steps.setup-go.outputs.go-version }}) + ## ๐Ÿงช Test Results (Go $GO_VERSION) | Metric | Value | | ----------- | ------------------------------------------------------------- | @@ -148,7 +155,7 @@ jobs: { cat << EOF - ## ๐Ÿ“Š Code Coverage (Go ${{ steps.setup-go.outputs.go-version }}) + ## ๐Ÿ“Š Code Coverage (Go $GO_VERSION) **Total Coverage: $COVERAGE** @@ -209,7 +216,7 @@ jobs: if: failure() uses: actions/upload-artifact@v6 with: - name: test-results-go-${{ steps.setup-go.outputs.go-version }} + name: test-results-go-${{ env.GO_VERSION }} path: | test-output.log coverage/ @@ -219,7 +226,7 @@ jobs: run: | { cat << EOF - ## ๐Ÿ” Static Analysis (Go ${{ steps.setup-go.outputs.go-version }}) + ## ๐Ÿ” Static Analysis (Go $GO_VERSION) EOF @@ -263,9 +270,10 @@ jobs: - name: Job Summary if: always() run: | - cat >> "$GITHUB_STEP_SUMMARY" << 'EOF' - ## ๐Ÿ“‹ Job Summary (Go ${{ steps.setup-go.outputs.go-version }}) - + { + echo "## ๐Ÿ“‹ Job Summary (Go $GO_VERSION)" + echo "" + cat << 'EOF' | Step | Status | | --------------- | --------------------------------------------------------------- | | Dependencies | Success | @@ -275,12 +283,13 @@ jobs: | Static Analysis | ${{ job.status == 'success' && 'Clean' || 'Issues' }} | | Code Formatting | ${{ job.status == 'success' && 'Clean' || 'Issues' }} | EOF + } >> "$GITHUB_STEP_SUMMARY" - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v5 with: files: ./coverage/coverage.out - flags: Go ${{ steps.setup-go.outputs.go-version }} + flags: Go ${{ env.GO_VERSION }} slug: kjanat/articulate-parser token: ${{ secrets.CODECOV_TOKEN }} @@ -288,7 +297,7 @@ jobs: if: ${{ !cancelled() }} uses: codecov/test-results-action@v1 with: - flags: Go ${{ steps.setup-go.outputs.go-version }} + flags: Go ${{ env.GO_VERSION }} token: ${{ secrets.CODECOV_TOKEN }} docker-test: @@ -344,6 +353,7 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + pull-requests: write if: github.event_name == 'pull_request' steps: - name: "Checkout Repository" diff --git a/.golangci.yml b/.golangci.yml index f433de9..75daaba 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -8,10 +8,6 @@ run: # Timeout for total work timeout: 5m - # Skip directories (not allowed in config v2, will use issues exclude instead) - - # Go version is autodetected from go.mod - # Include test files tests: true diff --git a/Taskfile.yml b/Taskfile.yml index 8688825..682f003 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -266,10 +266,7 @@ tasks: silent: true aliases: [modern] cmds: - # The modernize analyzer (shipped with gopls) may require a newer Go - # toolchain than this project targets, so it is run with GOTOOLCHAIN=auto - # to let Go fetch the toolchain it needs on demand. - - GOTOOLCHAIN=auto go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./... + - go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./... - echo "Code modernized" # Dependency management diff --git a/go.mod b/go.mod index 285ba87..1e9cd08 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/kjanat/articulate-parser -go 1.25.0 - -toolchain go1.25.5 +go 1.26.0 require ( github.com/fumiama/go-docx v0.0.0-20250506085032-0c30fd09304b diff --git a/internal/exporters/output.docx b/internal/exporters/output.docx index 3bc4c8769773046d55fbc36db8c43f443586e60a..db1d20cfc76239cd4d25138f5922bf0da606cde2 100644 GIT binary patch delta 55 zcmZo?YiFAvwb_W#f^j301mol_Od6sLKv14vl%k)KpIn-onpdJ%k()C)gGq}ifN`RX J+~ki;VgRa{58wa* delta 53 zcmZo?YiHXWz$nGIktu+2@=7KRMuy4RjPjE+n6yMC7#SGK^NUjSQ}UBbb5rw5^eS?5 JCVylS0|0x+4}Aat diff --git a/internal/services/parser.go b/internal/services/parser.go index 12bca80..a6a058c 100644 --- a/internal/services/parser.go +++ b/internal/services/parser.go @@ -17,10 +17,8 @@ import ( // Default endpoint configuration for the Articulate Rise API. const ( - // Root URL for the Articulate Rise API. - defaultBaseURL = "https://rise.articulate.com" - // Expected host for Articulate Rise share URLs. - riseHost = "rise.articulate.com" + riseHost = "rise.articulate.com" + defaultBaseURL = "https://" + riseHost ) // shareIDRegex is compiled once at package init for extracting share IDs from URIs.