ci: run on the forge, not on GitHub Actions

The runner labels here were already right, but the files sat in
.github/workflows, the second entry in WORKFLOW_DIRS. Second is only read while
the first is absent, so every one of them was one .hanzo/workflows commit from
going silent. Six move across; four do not.

Moved: build.yml, doctests.yaml, golangci-lint.yml, govulncheck.yml,
spellcheck.yml, test-e2e.yml. The runners carry a docker daemon, so the
compose-backed suites (make docker.start, make docker.e2e.start) and the
`services:` block in doctests work as written. .github/actions/run-tests stays
where it is -- it is a composite action, not a workflow, and the `./` path
resolves from the repo root regardless of which directory the caller lives in.

Two adjustments inside the files that moved:

  build.yml drops the benchmark job and samples the matrix at three Redis
  versions instead of five. `make bench` measures without comparing to a
  baseline, so it produced no pass/fail signal for thirty runner-slots per push
  on a pool every org shares. What the sampling gives up is a break specific to
  Redis 8.6 or 8.2, or to the 1.25.x pin now covered by oldstable/stable. The
  Codecov upload goes with it: CODECOV_TOKEN is not a secret this forge holds,
  so coverage is produced and no longer reported to a dashboard.

  govulncheck.yml asked setup-go for "1.26.4.x", which is not a version it can
  resolve. It reads go.mod now, which is where the toolchain version is already
  decided.

Dropped, with what each cost:

  codeql-analysis.yml   uploaded SARIF to GitHub code scanning. There is no
                        such service here, and govulncheck covers the
                        vulnerability half against the Go advisory database.
  release-drafter.yml   assembled GitHub Release drafts from merged pull
                        requests. Release notes are written by hand.
                        Its .github/release-drafter-config.yml goes too;
                        nothing else reads it.
  stale-issues.yml      aged out issues and pull requests through the GitHub
                        issues API. Triage is manual.
  test-redis-enterprise.yml  needed the licensed redislabs/redis Enterprise
                        image and a clone of RedisLabs/redis-ee-docker. It was
                        already `if: false` upstream, so it gated nothing;
                        Redis Enterprise remains untested by CI.
This commit is contained in:
2026-08-13 21:11:23 -07:00
parent ee3ef1a41a
commit f2bf7a47a8
12 changed files with 42 additions and 406 deletions
-50
View File
@@ -1,50 +0,0 @@
name-template: '$NEXT_MINOR_VERSION'
tag-template: 'v$NEXT_MINOR_VERSION'
autolabeler:
- label: 'maintenance'
files:
- '*.md'
- '.github/*'
- label: 'bug'
branch:
- '/bug-.+'
- label: 'maintenance'
branch:
- '/maintenance-.+'
- label: 'feature'
branch:
- '/feature-.+'
categories:
- title: 'Breaking Changes'
labels:
- 'breakingchange'
- title: '🧪 Experimental Features'
labels:
- 'experimental'
- title: '🚀 New Features'
labels:
- 'feature'
- 'enhancement'
- title: '🐛 Bug Fixes'
labels:
- 'fix'
- 'bugfix'
- 'bug'
- 'BUG'
- title: '🧰 Maintenance'
label: 'maintenance'
change-template: '- $TITLE (#$NUMBER)'
exclude-labels:
- 'skip-changelog'
exclude-contributors:
- 'dependabot'
template: |
# Changes
$CHANGES
## Contributors
We'd like to thank all the contributors who worked on this release!
$CONTRIBUTORS
-107
View File
@@ -1,107 +0,0 @@
name: Go
on:
push:
branches: [master, v9, 'v9.*']
pull_request:
branches: [master, v9, v9.7, v9.8, 'ndyakov/**', 'ofekshenawa/**', 'ce/**']
permissions:
contents: read
jobs:
benchmark:
name: benchmark
runs-on: hanzo-build-linux-amd64
strategy:
fail-fast: false
matrix:
redis-version:
- "8.8.x" # Redis CE 8.8
- "8.6.x" # Redis CE 8.6
- "8.4.x" # Redis CE 8.4
- "8.2.x" # Redis CE 8.2
- "8.0.x" # Redis CE 8.0
go-version:
- "1.25.x"
- oldstable
- stable
steps:
- name: Set up ${{ matrix.go-version }}
uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v6
- name: Setup Test environment
env:
REDIS_VERSION: ${{ matrix.redis-version }}
CLIENT_LIBS_TEST_IMAGE: "redislabs/client-libs-test:${{ matrix.redis-version }}"
run: |
set -e
redis_version_np=$(echo "$REDIS_VERSION" | grep -oP '^\d+.\d+')
# Mapping of redis version to redis testing containers
declare -A redis_version_mapping=(
["8.8.x"]="8.8.0"
["8.6.x"]="8.6.1"
["8.4.x"]="8.4.0"
["8.2.x"]="8.2.1-pre"
["8.0.x"]="8.0.2"
)
if [[ -v redis_version_mapping[$REDIS_VERSION] ]]; then
echo "REDIS_VERSION=${redis_version_np}" >> $GITHUB_ENV
echo "REDIS_IMAGE=redis:${{ matrix.redis-version }}" >> $GITHUB_ENV
echo "CLIENT_LIBS_TEST_IMAGE=redislabs/client-libs-test:${redis_version_mapping[$REDIS_VERSION]}" >> $GITHUB_ENV
else
echo "Version not found in the mapping."
exit 1
fi
shell: bash
- name: Set up Docker Compose environment with redis ${{ matrix.redis-version }}
run: make docker.start
shell: bash
- name: Benchmark Tests
env:
RCE_DOCKER: "true"
RE_CLUSTER: "false"
run: make bench
shell: bash
test-redis-ce:
name: test-redis-ce
runs-on: hanzo-build-linux-amd64
strategy:
fail-fast: false
matrix:
redis-version:
- "8.8.x" # Redis CE 8.8
- "8.6.x" # Redis CE 8.6
- "8.4.x" # Redis CE 8.4
- "8.2.x" # Redis CE 8.2
- "8.0.x" # Redis CE 8.0
go-version:
- "1.25.x"
- oldstable
- stable
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Run tests
uses: ./.github/actions/run-tests
with:
go-version: ${{matrix.go-version}}
redis-version: ${{ matrix.redis-version }}
- name: Upload to Codecov
uses: codecov/codecov-action@v7
with:
files: coverage.txt
token: ${{ secrets.CODECOV_TOKEN }}
-67
View File
@@ -1,67 +0,0 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [master, v9, v9.7, v9.8]
pull_request:
branches: [master, v9, v9.7, v9.8]
jobs:
analyze:
name: Analyze
runs-on: hanzo-build-linux-amd64
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'go' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
uses: actions/checkout@v6
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v4
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
-24
View File
@@ -1,24 +0,0 @@
name: Release Drafter
on:
push:
# branches to consider in the event; optional, defaults to all
branches:
- master
permissions: {}
jobs:
update_release_draft:
permissions:
pull-requests: write # to add label to PR (release-drafter/release-drafter)
contents: write # to create a github release (release-drafter/release-drafter)
runs-on: hanzo-build-linux-amd64
steps:
# Drafts your next Release notes as Pull Requests are merged into "master"
- uses: release-drafter/release-drafter@v7
with:
# (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml
config-name: release-drafter-config.yml
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-95
View File
@@ -1,95 +0,0 @@
name: "Stale Issue Management"
on:
schedule:
# Run daily at midnight UTC
- cron: "0 0 * * *"
workflow_dispatch: # Allow manual triggering
env:
# Default stale policy timeframes
DAYS_BEFORE_STALE: 365
DAYS_BEFORE_CLOSE: 30
# Accelerated timeline for needs-information issues
NEEDS_INFO_DAYS_BEFORE_STALE: 30
NEEDS_INFO_DAYS_BEFORE_CLOSE: 7
jobs:
stale:
runs-on: hanzo-build-linux-amd64
steps:
# First step: Handle regular issues (excluding needs-information)
- name: Mark regular issues as stale
uses: actions/stale@v10
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# Default stale policy
days-before-stale: ${{ env.DAYS_BEFORE_STALE }}
days-before-close: ${{ env.DAYS_BEFORE_CLOSE }}
# Explicit stale label configuration
stale-issue-label: "stale"
stale-pr-label: "stale"
stale-issue-message: |
This issue has been automatically marked as stale due to inactivity.
It will be closed in 30 days if no further activity occurs.
If you believe this issue is still relevant, please add a comment to keep it open.
close-issue-message: |
This issue has been automatically closed due to inactivity.
If you believe this issue is still relevant, please reopen it or create a new issue with updated information.
# Exclude needs-information issues from this step
exempt-issue-labels: 'no-stale,needs-information'
# Remove stale label when issue/PR becomes active again
remove-stale-when-updated: true
# Apply to pull requests with same timeline
days-before-pr-stale: ${{ env.DAYS_BEFORE_STALE }}
days-before-pr-close: ${{ env.DAYS_BEFORE_CLOSE }}
stale-pr-message: |
This pull request has been automatically marked as stale due to inactivity.
It will be closed in 30 days if no further activity occurs.
close-pr-message: |
This pull request has been automatically closed due to inactivity.
If you would like to continue this work, please reopen the PR or create a new one.
# Only exclude no-stale PRs (needs-information PRs follow standard timeline)
exempt-pr-labels: 'no-stale'
# Second step: Handle needs-information issues with accelerated timeline
- name: Mark needs-information issues as stale
uses: actions/stale@v10
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# Accelerated timeline for needs-information
days-before-stale: ${{ env.NEEDS_INFO_DAYS_BEFORE_STALE }}
days-before-close: ${{ env.NEEDS_INFO_DAYS_BEFORE_CLOSE }}
# Explicit stale label configuration
stale-issue-label: "stale"
# Only target ISSUES with needs-information label (not PRs)
only-issue-labels: 'needs-information'
stale-issue-message: |
This issue has been marked as stale because it requires additional information
that has not been provided for 30 days. It will be closed in 7 days if the
requested information is not provided.
close-issue-message: |
This issue has been closed because the requested information was not provided within the specified timeframe.
If you can provide the missing information, please reopen this issue or create a new one.
# Disable PR processing for this step
days-before-pr-stale: -1
days-before-pr-close: -1
# Remove stale label when issue becomes active again
remove-stale-when-updated: true
@@ -1,61 +0,0 @@
name: RE Tests
on:
push:
branches: [master, v9, v9.7, v9.8]
pull_request:
permissions:
contents: read
jobs:
build:
if: false # Temporarily disabled, should be enabled when we have a current and stable RE build
name: build
runs-on: hanzo-build-linux-amd64
strategy:
fail-fast: false
matrix:
go-version: [1.25.x]
re-build: ["7.4.2-54"]
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Clone Redis EE docker repository
uses: actions/checkout@v6
with:
repository: RedisLabs/redis-ee-docker
path: redis-ee
- name: Set up ${{ matrix.go-version }}
uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go-version }}
- name: Build cluster
working-directory: redis-ee
env:
IMAGE: "redislabs/redis:${{ matrix.re-build }}"
RE_USERNAME: [email protected]
RE_PASS: 12345
RE_CLUSTER_NAME: re-test
RE_USE_OSS_CLUSTER: false
RE_DB_PORT: 6379
run: ./build.sh
- name: Test
env:
RE_CLUSTER: true
REDIS_VERSION: "7.4"
run: |
go test \
-skip="^TestTLS" \
--ginkgo.skip-file="ring_test.go" \
--ginkgo.skip-file="sentinel_test.go" \
--ginkgo.skip-file="osscluster_test.go" \
--ginkgo.skip-file="pubsub_test.go" \
--ginkgo.skip-file="tls_test.go" \
--ginkgo.skip-file="tls_cluster_test.go" \
--ginkgo.label-filter='!NonRedisEnterprise'
+41
View File
@@ -0,0 +1,41 @@
name: Go
on:
push:
branches: [master, v9, 'v9.*']
pull_request:
branches: [master, v9, v9.7, v9.8, 'ndyakov/**', 'ofekshenawa/**', 'ce/**']
permissions:
contents: read
jobs:
# Six legs, not fifteen. The pool here is a fixed set of runners shared by
# every org on this forge, so a matrix is a claim on capacity rather than a
# free dimension. Redis is sampled at the ends and the middle of the supported
# range, and Go at the two versions the module is expected to build under;
# a break specific to 8.6 or 8.2 is the kind this sampling can miss.
test-redis-ce:
name: test-redis-ce
runs-on: hanzo-build-linux-amd64
strategy:
fail-fast: false
matrix:
redis-version:
- "8.8.x" # Redis CE 8.8
- "8.4.x" # Redis CE 8.4
- "8.0.x" # Redis CE 8.0
go-version:
- oldstable
- stable
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Run tests
uses: ./.github/actions/run-tests
with:
go-version: ${{matrix.go-version}}
redis-version: ${{ matrix.redis-version }}
@@ -1,4 +1,3 @@
# .github/workflows/govulncheck.yml
name: govulncheck
on:
@@ -29,7 +28,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: "1.26.4.x"
go-version-file: go.mod
cache: true
- name: Install govulncheck