Thank you for your interest in contributing. This document covers how to set up your development environment, run tests, and submit changes.
- Go 1.26.4+
- HashiCorp Packer 1.7.0+
packer-sdc— required only if modifying config structs:go install github.com/hashicorp/packer-plugin-sdk/cmd/packer-sdc@latest
go build -o packer-plugin-citrix.exe# Unit tests
go test ./...
# Verbose output for a specific package
go test ./builder/citrix/applayering/... -vAcceptance tests (*_acc_test.go) require a live ELM environment and are not
run in CI. To run them locally, set the required environment variables and use
the acc build tag:
go test -tags acc ./...After modifying any config struct in builder/citrix/applayering/config/config.go
or provisioner/citrix/applayering/provisioner.go, regenerate the HCL2 spec files:
go generate ./...
elm-client/elm_client.gois auto-generated from the ELM WSDL viagowsdl. Do not edit it manually — all helper logic belongs inelm-client/soap_helpers.go.
- Fork the repository and create a feature branch.
- Make your changes, including tests where applicable.
- Ensure
go test ./...passes andgo generate ./...is up to date. - Open a pull request against
mainwith a clear description of the change.
- Follow standard Go formatting (
gofmt). - Keep the strategy pattern in place when adding new operation types — add a new
*Strategystruct inbuilder/citrix/applayering/strategy.go; do not modifyBuilder.Run(). - All new config fields must have a mapstructure tag and a doc comment for
packer-sdc struct-markdownto pick up.