- Go 1.25.1+ -- see go.dev/dl for installation
- Git
- Docker (optional, for building container images)
- GoReleaser (optional, for testing release builds locally)
Clone the repository and download dependencies:
git clone https://github.com/OutSystems/cloud-connector.git
cd cloud-connector
go mod downloadBuild the binary:
go build -o outsystemscc .Test a release build locally with GoReleaser (produces Linux binaries and Docker images):
goreleaser --clean --snapshot --config .goreleaser.yamlBuild artifacts land in dist/.
go test ./...Tests use httpmock for HTTP mocking. No external services or credentials are needed.
There is no project-level linter configuration checked in. Follow standard Go conventions:
- Run
go vet ./...before submitting. - Run
gofmt -s -w .to format code. - Keep imports grouped: stdlib, then external packages (the standard
goimportsordering). - The project is a single
mainpackage -- keep it that way unless there is a strong reason to refactor.
Branch names follow the pattern <JIRA-ID> or feature/<JIRA-ID> (e.g., RDODCP-283, feature/RDGRS-811). Use descriptive names when there is no associated ticket.
- Create a branch off
main. - Make your changes and ensure tests pass (
go test ./...). - Push and open a pull request targeting
main. - PRs require review from the code owners defined in
.github/CODEOWNERS: @OutSystems/global-routing-and-security and @OutSystems/cloud-enablement-services. - After approval, merge via the GitHub UI.
Releases are managed with GoReleaser and follow semantic versioning (tags like v2.0.3). The release pipeline:
- Runs
go mod tidyandgo generate ./...as pre-build hooks. - Cross-compiles Linux binaries for
amd64,arm64, and386. - Builds and pushes a Docker image to
ghcr.io/outsystems/outsystemscc. - Generates a changelog (excluding
docs:andtest:prefixed commits).
Go modules (go.mod / go.sum) manage dependencies. Dependabot is configured to open monthly update PRs for Go modules. The project uses a forked version of chisel (github.com/outsystems/chisel) via a replace directive in go.mod.
By contributing, you agree that your contributions will be licensed under the MIT License.