GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — codeql/.github/workflows/go-version-update.yml at codeql-cli/v2.27.2 · github/codeql 208 lines (170 loc) · 8.33 KB / Copy pathgo-version-update.ymlFile metadata and controls208 lines (170 loc) · 8.33 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 name: Update Go version on: workflow_dispatch: schedule: - cron: "0 3 * * 1" # Run weekly on Mondays at 3 AM UTC (1 = Monday) permissions: contents: write pull-requests: write jobs: update-go-version: name: Check and update Go version if: github.repository == 'github/codeql' runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v5 with: fetch-depth: 0 - name: Set up Git run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - name: Fetch latest Go version id: fetch-version run: | LATEST_GO_VERSION=$(curl -s https://go.dev/dl/?mode=json | jq -r '.[0].version') if [ -z "$LATEST_GO_VERSION" ] || [ "$LATEST_GO_VERSION" = "null" ]; then echo "Error: Failed to fetch latest Go version from go.dev" exit 1 fi echo "Latest Go version from go.dev: $LATEST_GO_VERSION" echo "version=$LATEST_GO_VERSION" >> $GITHUB_OUTPUT # Extract version numbers (e.g., go1.26.0 -> 1.26.0) LATEST_VERSION_NUM=$(echo $LATEST_GO_VERSION | sed 's/^go//') echo "version_num=$LATEST_VERSION_NUM" >> $GITHUB_OUTPUT # Extract major.minor version (e.g., 1.26.0 -> 1.26) LATEST_MAJOR_MINOR=$(echo $LATEST_VERSION_NUM | sed -E 's/^([0-9]+\.[0-9]+).*/\1/') echo "major_minor=$LATEST_MAJOR_MINOR" >> $GITHUB_OUTPUT - name: Check current Go version id: current-version run: | CURRENT_VERSION=$(sed -n 's/.*go_sdk\.download(version = \"\([^\"]*\)\".*/\1/p' MODULE.bazel) if [ -z "$CURRENT_VERSION" ]; then echo "Error: Could not extract Go version from MODULE.bazel" exit 1 fi echo "Current Go version in MODULE.bazel: $CURRENT_VERSION" echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT # Extract major.minor version CURRENT_MAJOR_MINOR=$(echo $CURRENT_VERSION | sed -E 's/^([0-9]+\.[0-9]+).*/\1/') echo "major_minor=$CURRENT_MAJOR_MINOR" >> $GITHUB_OUTPUT - name: Compare versions id: compare run: | LATEST="${{ steps.fetch-version.outputs.version_num }}" CURRENT="${{ steps.current-version.outputs.version }}" echo "Latest: $LATEST" echo "Current: $CURRENT" if [ "$LATEST" = "$CURRENT" ]; then echo "Go version is up to date" echo "needs_update=false" >> $GITHUB_OUTPUT else echo "Go version needs update from $CURRENT to $LATEST" echo "needs_update=true" >> $GITHUB_OUTPUT fi - name: Update Go version in files if: steps.compare.outputs.needs_update == 'true' run: | LATEST_VERSION_NUM="${{ steps.fetch-version.outputs.version_num }}" LATEST_MAJOR_MINOR="${{ steps.fetch-version.outputs.major_minor }}" CURRENT_VERSION="${{ steps.current-version.outputs.version }}" CURRENT_MAJOR_MINOR="${{ steps.current-version.outputs.major_minor }}" echo "Updating from $CURRENT_VERSION to $LATEST_VERSION_NUM" # Escape dots in current version strings for use in sed patterns CURRENT_VERSION_ESCAPED=$(echo "$CURRENT_VERSION" | sed 's/\./\\./g') CURRENT_MAJOR_MINOR_ESCAPED=$(echo "$CURRENT_MAJOR_MINOR" | sed 's/\./\\./g') # Update MODULE.bazel sed -i "s/go_sdk\.download(version = \"$CURRENT_VERSION_ESCAPED\")/go_sdk.download(version = \"$LATEST_VERSION_NUM\")/" MODULE.bazel if ! grep -q "go_sdk.download(version = \"$LATEST_VERSION_NUM\")" MODULE.bazel; then echo "Error: Failed to update MODULE.bazel" exit 1 fi # Update go/extractor/go.mod if ! sed -i "s/^go $CURRENT_MAJOR_MINOR_ESCAPED\$/go $LATEST_MAJOR_MINOR/" go/extractor/go.mod; then echo "Warning: Failed to update go directive in go.mod" fi if ! sed -i "s/^toolchain go$CURRENT_VERSION_ESCAPED\$/toolchain go$LATEST_VERSION_NUM/" go/extractor/go.mod; then echo "Warning: Failed to update toolchain in go.mod" fi # Update go/extractor/autobuilder/build-environment.go if ! sed -i "s/var maxGoVersion = util\.NewSemVer(\"$CURRENT_MAJOR_MINOR_ESCAPED\")/var maxGoVersion = util.NewSemVer(\"$LATEST_MAJOR_MINOR\")/" go/extractor/autobuilder/build-environment.go; then echo "Warning: Failed to update build-environment.go" fi # Update go/actions/test/action.yml if ! sed -i "s/default: \"~$CURRENT_VERSION_ESCAPED\"/default: \"~$LATEST_VERSION_NUM\"/" go/actions/test/action.yml; then echo "Warning: Failed to update action.yml" fi # Show what changed git diff - name: Check for changes id: check-changes if: steps.compare.outputs.needs_update == 'true' run: | if git diff --quiet; then echo "No changes detected" echo "has_changes=false" >> $GITHUB_OUTPUT else echo "Changes detected" echo "has_changes=true" >> $GITHUB_OUTPUT fi - name: Check for existing PR if: steps.check-changes.outputs.has_changes == 'true' id: check-pr env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | BRANCH_NAME="workflow/go-version-update" PR_NUMBER=$(gh pr list --head "$BRANCH_NAME" --state open --json number --jq '.[0].number') if [ -n "$PR_NUMBER" ]; then echo "Existing PR found: #$PR_NUMBER" echo "pr_exists=true" >> $GITHUB_OUTPUT echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT else echo "No existing PR found" echo "pr_exists=false" >> $GITHUB_OUTPUT fi - name: Commit and push changes if: steps.check-changes.outputs.has_changes == 'true' run: | BRANCH_NAME="workflow/go-version-update" LATEST_VERSION_NUM="${{ steps.fetch-version.outputs.version_num }}" LATEST_MAJOR_MINOR="${{ steps.fetch-version.outputs.major_minor }}" # Create or switch to branch git checkout -B "$BRANCH_NAME" # Stage and commit changes git add MODULE.bazel go/extractor/go.mod go/extractor/autobuilder/build-environment.go go/actions/test/action.yml git commit -m "Go: Update to $LATEST_VERSION_NUM" # Push changes git push --force-with-lease origin "$BRANCH_NAME" - name: Create or update PR if: steps.check-changes.outputs.has_changes == 'true' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | BRANCH_NAME="workflow/go-version-update" LATEST_VERSION_NUM="${{ steps.fetch-version.outputs.version_num }}" CURRENT_VERSION="${{ steps.current-version.outputs.version }}" PR_TITLE="Go: Update to $LATEST_VERSION_NUM" PR_BODY=$(cat <<EOF This PR updates Go from $CURRENT_VERSION to $LATEST_VERSION_NUM. Updated files: - \`MODULE.bazel\` - go_sdk.download version - \`go/extractor/go.mod\` - go directive and toolchain - \`go/extractor/autobuilder/build-environment.go\` - maxGoVersion (only if MAJOR.MINOR changes) - \`go/actions/test/action.yml\` - default go-test-version This PR was automatically created by the [Go version update workflow](https://github.com/${{ github.repository }}/blob/main/.github/workflows/go-version-update.yml). EOF ) if [ "${{ steps.check-pr.outputs.pr_exists }}" = "true" ]; then echo "Updating existing PR #${{ steps.check-pr.outputs.pr_number }}" gh pr edit "${{ steps.check-pr.outputs.pr_number }}" --title "$PR_TITLE" --body "$PR_BODY" else echo "Creating new PR" gh pr create \ --title "$PR_TITLE" \ --body "$PR_BODY" \ --base main \ --head "$BRANCH_NAME" \ --label "Go" fi |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |