Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 61 additions & 20 deletions .github/workflows/all_tests.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,66 @@
name: CI

on: [push, pull_request]

jobs:
build:
name: Check
runs-on: ubuntu-latest
env:
GO111MODULE: on

steps:

- name: Install libraries
run: |
sudo apt-get update
sudo apt-get install -y libncurses5 libaio1 libnuma1 bash-completion
- name: Set up Go 1.x
uses: actions/setup-go@v2
with:
go-version: ^1.18
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: latest
- name: govulncheck
run: |
go install golang.org/x/vuln/cmd/govulncheck@latest
Comment on lines +19 to +22
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using version: latest for golangci-lint makes CI non-reproducible and can cause sudden failures when a new linter release ships. Pin the golangci-lint version (and similarly consider pinning govulncheck) to a known-good version, then update it intentionally.

Suggested change
version: latest
- name: govulncheck
run: |
go install golang.org/x/vuln/cmd/govulncheck@latest
version: v1.61.0
- name: govulncheck
run: |
go install golang.org/x/vuln/cmd/govulncheck@v1.1.1

Copilot uses AI. Check for mistakes.
govulncheck ./...
- name: Copyright check
run: ./scripts/sanity_check.sh copyright
Comment on lines +21 to +25
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The previous CI flow (scripts/ci.sh) ran ./scripts/sanity_check.sh (gofmt, go vet, version check, etc.). The new workflow only runs a copyright check + golangci-lint, and the current .golangci.yml does not enable a gofmt/gofumpt linter. If the goal is "no coverage lost" from the old CI, consider running ./scripts/sanity_check.sh (or at least restoring the gofmt/version checks) as part of the lint job.

Copilot uses AI. Check for mistakes.

- name: Check out code into the Go module directory
uses: actions/checkout@v2
test:
name: Test (Go ${{ matrix.go-version }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
go-version: ['1.22', '1.23']
os: [ubuntu-latest, macos-latest]
env:
GO111MODULE: on
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
- name: Install libraries (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libncurses5 libaio1 libnuma1 bash-completion
- name: Unit tests
run: ./test/go-unit-tests.sh

- name: tests
run: ./scripts/ci.sh
build:
name: Build
runs-on: ubuntu-latest
needs: [lint, test]
env:
GO111MODULE: on
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: Build
run: ./scripts/build.sh linux
- name: Verify executable
run: |
version=$(cat common/VERSION)
test -f "dbdeployer-${version}.linux" || exit 1
1 change: 1 addition & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ linters:
- ineffassign
- staticcheck
- unused
- gosec
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old CI sanity check explicitly enforced gofmt -l. With this linter set, formatting issues won’t be caught unless you add a formatter linter (e.g. gofmt/gofumpt/goimports) or run gofmt separately in CI.

Suggested change
- gosec
- gosec
- gofmt

Copilot uses AI. Check for mistakes.
disable:
- depguard

Expand Down
21 changes: 12 additions & 9 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# This is an example .goreleaser.yml file with some sensible defaults.
# Make sure to check the documentation at https://goreleaser.com
# # goreleaser release --skip-publish --snapshot
version: 2

before:
hooks:
# You may remove this if you don't use go modules.
- go mod tidy

builds:
- env:
- CGO_ENABLED=0
Expand All @@ -14,18 +13,22 @@ builds:
goarch:
- amd64
- arm64

archives:
- replacements:
darwin: Darwin
linux: Linux
amd64: x86_64
- formats: ['tar.gz']
name_template: >-
{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

archives.name_template now produces assets like dbdeployer_<ver>_<os>_<arch>.tar.gz. This doesn't match the repository’s installer expectations (e.g. scripts/dbdeployer-install.sh downloads dbdeployer-<ver>.<os>.tar.gz). Either align the GoReleaser naming with the existing release/install contract, or update the installer/docs accordingly to avoid breaking installs from GitHub Releases.

Suggested change
{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}
{{ .ProjectName }}-{{ .Version }}.{{ .Os }}

Copilot uses AI. Check for mistakes.

checksum:
name_template: 'checksums.txt'

snapshot:
name_template: "{{ incpatch .Version }}-next"
version_template: "{{ incpatch .Version }}-next"

changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
- '^chore:'
18 changes: 15 additions & 3 deletions mkreadme/readme_template.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
[DBdeployer](https://github.com/datacharmer/dbdeployer) is a tool that deploys MySQL database servers easily.
This is a port of [MySQL-Sandbox](https://github.com/datacharmer/mysql-sandbox), originally written in Perl, and re-designed from the ground up in [Go](https://golang.org). See the [features comparison](https://github.com/datacharmer/dbdeployer/blob/master/docs/features.md) for more detail.
[DBdeployer](https://github.com/ProxySQL/dbdeployer) is a tool that deploys MySQL database servers easily.
This is a port of [MySQL-Sandbox](https://github.com/datacharmer/mysql-sandbox), originally written in Perl, and re-designed from the ground up in [Go](https://golang.org). See the [features comparison](https://github.com/ProxySQL/dbdeployer/blob/master/docs/features.md) for more detail.

## New Maintainer

As of 2026, dbdeployer is actively maintained by the [ProxySQL](https://github.com/ProxySQL) team, with the blessing of the original creator [Giuseppe Maxia](https://github.com/datacharmer). We are grateful for Giuseppe's years of work on this project.

**Roadmap:**
- Modern MySQL support (8.4 LTS, 9.x Innovation releases)
- ProxySQL and Orchestrator integration as deployment providers
- Provider-based architecture for extensibility
- PostgreSQL support (long-term)

See the [Phase 1 milestone](https://github.com/ProxySQL/dbdeployer/milestone/1) for current progress.

Documentation updated for version {{.Version}} ({{.Date}})

![Build Status](https://github.com/datacharmer/dbdeployer/workflows/.github/workflows/all_tests.yml/badge.svg)
![Build Status](https://github.com/ProxySQL/dbdeployer/workflows/.github/workflows/all_tests.yml/badge.svg)

# Table of contents

Expand Down
Loading