From 7c74366d94e4c63282dba0752ae4612b38e180af Mon Sep 17 00:00:00 2001 From: Alexander Dahmen Date: Fri, 27 Jun 2025 11:27:58 +0200 Subject: [PATCH] feat: Create tags for services automatically Signed-off-by: Alexander Dahmen --- .github/pull_request_template.md | 1 + .github/workflows/cd.yaml | 25 +++ .github/workflows/ci.yaml | 3 - Makefile | 4 - RELEASE.md | 6 +- go.work | 1 - scripts/automatic_tag.go | 326 ---------------------------- scripts/automatic_tag_test.go | 187 ---------------- scripts/go.mod | 69 ------ scripts/go.sum | 108 --------- scripts/update-service-tags.sh | 25 +++ services/alb/VERSION | 1 + services/archiving/VERSION | 1 + services/authorization/VERSION | 1 + services/cdn/VERSION | 1 + services/certificates/VERSION | 1 + services/dns/VERSION | 1 + services/git/VERSION | 1 + services/iaas/VERSION | 1 + services/kms/VERSION | 1 + services/lbapplication/VERSION | 1 + services/loadbalancer/VERSION | 1 + services/logme/VERSION | 1 + services/mariadb/VERSION | 1 + services/modelserving/VERSION | 1 + services/mongodbflex/VERSION | 1 + services/objectstorage/VERSION | 1 + services/observability/VERSION | 1 + services/opensearch/VERSION | 1 + services/postgresflex/VERSION | 1 + services/rabbitmq/VERSION | 1 + services/redis/VERSION | 1 + services/resourcemanager/VERSION | 1 + services/runcommand/VERSION | 1 + services/secretsmanager/VERSION | 1 + services/serverbackup/VERSION | 1 + services/serverupdate/VERSION | 1 + services/serviceaccount/VERSION | 1 + services/serviceenablement/VERSION | 1 + services/ske/VERSION | 1 + services/sqlserverflex/VERSION | 1 + services/stackitmarketplace/VERSION | 1 + 42 files changed, 84 insertions(+), 702 deletions(-) create mode 100644 .github/workflows/cd.yaml delete mode 100644 scripts/automatic_tag.go delete mode 100644 scripts/automatic_tag_test.go delete mode 100644 scripts/go.mod delete mode 100644 scripts/go.sum create mode 100755 scripts/update-service-tags.sh create mode 100644 services/alb/VERSION create mode 100644 services/archiving/VERSION create mode 100644 services/authorization/VERSION create mode 100644 services/cdn/VERSION create mode 100644 services/certificates/VERSION create mode 100644 services/dns/VERSION create mode 100644 services/git/VERSION create mode 100644 services/iaas/VERSION create mode 100644 services/kms/VERSION create mode 100644 services/lbapplication/VERSION create mode 100644 services/loadbalancer/VERSION create mode 100644 services/logme/VERSION create mode 100644 services/mariadb/VERSION create mode 100644 services/modelserving/VERSION create mode 100644 services/mongodbflex/VERSION create mode 100644 services/objectstorage/VERSION create mode 100644 services/observability/VERSION create mode 100644 services/opensearch/VERSION create mode 100644 services/postgresflex/VERSION create mode 100644 services/rabbitmq/VERSION create mode 100644 services/redis/VERSION create mode 100644 services/resourcemanager/VERSION create mode 100644 services/runcommand/VERSION create mode 100644 services/secretsmanager/VERSION create mode 100644 services/serverbackup/VERSION create mode 100644 services/serverupdate/VERSION create mode 100644 services/serviceaccount/VERSION create mode 100644 services/serviceenablement/VERSION create mode 100644 services/ske/VERSION create mode 100644 services/sqlserverflex/VERSION create mode 100644 services/stackitmarketplace/VERSION diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index e87582565..d271a5929 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -14,6 +14,7 @@ relates to #1234 - [ ] Changelogs - [ ] Changelog in the root directory was adjusted (see [here](https://github.com/stackitcloud/stackit-sdk-go/blob/f1e375a38064f798821d22a951bc74ca8a9c8845/CHANGELOG.md)) - [ ] Changelog(s) of the service(s) were adjusted (see e.g. [here](https://github.com/stackitcloud/stackit-sdk-go/blob/f1e375a38064f798821d22a951bc74ca8a9c8845/services/dns/CHANGELOG.md)) +- [ ] VERSION file(s) of the service(s) were adjusted - [ ] Code format was applied: `make fmt` - [ ] Examples were added / adjusted (see `examples/` directory) - [ ] Unit tests got implemented or updated diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml new file mode 100644 index 000000000..1b2f530d9 --- /dev/null +++ b/.github/workflows/cd.yaml @@ -0,0 +1,25 @@ +name: CD Workflow to update tags of services + +on: + push: + branches: + - main + +jobs: + check-version: + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: write + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Push tag for each updated package + env: + GH_TOKEN: ${{ secrets.RENOVATE_TOKEN }} + run: | + git config --global user.name "SDK Releaser Bot" + git config --global user.email "noreply@stackit.de" + + scripts/update-service-tags.sh diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 06882911b..8345e6815 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -39,6 +39,3 @@ jobs: run: | make lint scripts/check-sync-tidy.sh - - name: Lint scripts - run: | - make lint-scripts diff --git a/Makefile b/Makefile index 9db05bfca..61b414c07 100644 --- a/Makefile +++ b/Makefile @@ -40,10 +40,6 @@ lint-golangci-lint: ## Lint Go code @echo ">> Linting with golangci-lint" @$(SCRIPTS_BASE)/lint-golangci-lint.sh "${skip-non-generated-files}" "${service}" -lint-scripts: ## Lint scripts - @echo ">> Linting scripts" - @cd ${ROOT_DIR}/scripts && golangci-lint run ${GOLANG_CI_ARGS} - sync-tidy: ## Sync and tidy dependencies @echo ">> Syncing and tidying dependencies" @$(SCRIPTS_BASE)/sync-tidy.sh diff --git a/RELEASE.md b/RELEASE.md index 55cc0d4e6..8c775c28a 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -17,10 +17,8 @@ The SDK is split into all the different STACKIT [services](https://github.com/st **Releasing a single service** -1. Check out latest main branch on your machine -2. Create git tag: `git tag services//vX.X.X` - - E.g. for the `sqlserverflex` service version `v1.0.1` the git tag would be named `services/sqlserverflex/v1.0.1` -3. Push the git tag: `git push origin --tags` +1. Update the VERSION file of the corresponding service +2. When the PR is merged to main the tag is created automatically ### Whole SDK diff --git a/go.work b/go.work index 501649f80..ffdbac6b7 100644 --- a/go.work +++ b/go.work @@ -29,7 +29,6 @@ use ( ./examples/ske ./examples/sqlserverflex ./examples/waiter - ./scripts ./services/alb ./services/archiving ./services/authorization diff --git a/scripts/automatic_tag.go b/scripts/automatic_tag.go deleted file mode 100644 index 183aab32e..000000000 --- a/scripts/automatic_tag.go +++ /dev/null @@ -1,326 +0,0 @@ -package main - -import ( - "bufio" - "errors" - "flag" - "fmt" - "os" - "strconv" - "strings" - "syscall" - - "github.com/go-git/go-git/v5" - "github.com/go-git/go-git/v5/config" - "github.com/go-git/go-git/v5/plumbing" - "github.com/go-git/go-git/v5/plumbing/transport/ssh" - "github.com/stackitcloud/stackit-sdk-go/core/utils" - "golang.org/x/mod/semver" - "golang.org/x/term" -) - -const ( - sdkRepo = "git@github.com:stackitcloud/stackit-sdk-go.git" - patch = "patch" - minor = "minor" - allServices = "all-services" - core = "core" - - updateTypeFlag = "update-type" - sshPrivateKeyFilePathFlag = "ssh-private-key-file-path" - targetFlag = "target" -) - -var ( - updateTypes = []string{minor, patch} - targets = []string{allServices, core} - usage = "go run automatic_tag.go --update-type [minor|patch] --ssh-private-key-file-path path/to/private-key --target [all-services|core]" - deprecatedServices = []string{ - "membership", - "postgresql", - "argus", - "archiving", - } -) - -func main() { - if err := run(); err != nil { - fmt.Fprintf(os.Stderr, "Error: %s\n", err) - os.Exit(1) - } -} - -func run() error { - var updateType string - var sshPrivateKeyFilePath string - var target string - - flag.StringVar(&updateType, updateTypeFlag, "", fmt.Sprintf("Update type, must be one of: %s (required)", strings.Join(updateTypes, ","))) - flag.StringVar(&sshPrivateKeyFilePath, sshPrivateKeyFilePathFlag, "", "Path to the ssh private key (required)") - flag.StringVar(&target, targetFlag, allServices, fmt.Sprintf("Create tags for this target, must be one of %s (optional, default is %s)", strings.Join(targets, ","), allServices)) - - flag.Parse() - - if !utils.Contains(updateTypes, updateType) { - return fmt.Errorf("the provided update type `%s` is not valid, the valid values are: [%s]", updateType, strings.Join(updateTypes, ",")) - } - - if !utils.Contains(targets, target) { - return fmt.Errorf("the provided target `%s` is not valid, the valid values are: [%s]", target, strings.Join(targets, ",")) - } - - _, err := os.Stat(sshPrivateKeyFilePath) - if err != nil { - return fmt.Errorf("the provided private key file path %s is not valid: %w\nUsage: %s", sshPrivateKeyFilePath, err, usage) - } - - password, err := promptForPassword() - if err != nil { - return fmt.Errorf("prompt for password: %s", err.Error()) - } - - fmt.Print("Starting automatic tag update...\n\n") - - err = automaticTagUpdate(updateType, sshPrivateKeyFilePath, password, target) - if err != nil { - return fmt.Errorf("update tags: %s", err.Error()) - } - return nil -} - -// Prompts the user for the ssh key password. -func promptForPassword() (string, error) { - fmt.Print("Enter SSH key passphrase (empty for no passphrase): ") - defer fmt.Print("\n") - bytePassword, err := term.ReadPassword(int(syscall.Stdin)) - if err != nil { - return "", fmt.Errorf("read password: %w", err) - } - return string(bytePassword), nil -} - -// automaticTagUpdate goes through all of the existing tags, gets the latest for the target, creates a new one according to the updateType and pushes them -func automaticTagUpdate(updateType, sshPrivateKeyFilePath, password, target string) error { - tempDir, err := os.MkdirTemp("", "") - if err != nil { - return fmt.Errorf("create temporary directory: %w", err) - } - - defer func() { - tempErr := os.RemoveAll(tempDir) - if tempErr != nil { - fmt.Printf("Warning: temporary directory %s could not be removed: %s", tempDir, tempErr.Error()) - } - }() - - publicKeys, err := ssh.NewPublicKeysFromFile("git", sshPrivateKeyFilePath, password) - if err != nil { - return fmt.Errorf("get public keys from private key file: %w", err) - } - - r, err := git.PlainClone(tempDir, false, &git.CloneOptions{ - Auth: publicKeys, - URL: sdkRepo, - RecurseSubmodules: git.DefaultSubmoduleRecursionDepth, - }) - if err != nil { - return fmt.Errorf("clone SDK repo: %w", err) - } - - fmt.Printf("Cloned %s successfully\n\n", sdkRepo) - - tagrefs, err := r.Tags() - if err != nil { - return fmt.Errorf("get tags: %w", err) - } - - latestTags := map[string]string{} - err = tagrefs.ForEach(func(t *plumbing.Reference) error { - latestTags, err = storeLatestTag(t, latestTags, target) - if err != nil { - return fmt.Errorf("store latest tag: %w", err) - } - return nil - }) - if err != nil { - return fmt.Errorf("iterate over existing tags: %w", err) - } - - var newTagsList []string - for module, version := range latestTags { - updatedVersion, err := computeUpdatedVersion(version, updateType) - if err != nil { - fmt.Printf("Error computing updated version for %s with version %s, this tag will be skipped: %s\n", module, version, err.Error()) - continue - } - - var newTag string - switch target { - case core: - if module != "core" { - return fmt.Errorf("%s target was provided but there is a stored latest tag from another service: %s", target, module) - } - newTag = fmt.Sprintf("core/%s", updatedVersion) - case allServices: - newTag = fmt.Sprintf("services/%s/%s", module, updatedVersion) - default: - fmt.Printf("Error computing updated version for %s with version %s, this tag will be skipped: target %s not supported in version increment, fix the script\n", module, version, target) - continue - } - - newTagsList = append(newTagsList, newTag) - } - - fmt.Printf("The following tags will be created:\n%s\n\n", strings.Join(newTagsList, "\n")) - err = promptForConfirmation("Do you want to continue?") - if err != nil { - return fmt.Errorf("ask for confirmation: %w", err) - } - - for _, newTag := range newTagsList { - err = createTag(r, newTag) - if err != nil { - fmt.Printf("Create tag %s returned error: %s\n", newTag, err) - continue - } - fmt.Printf("Created tag %s\n", newTag) - } - - err = pushTags(r, publicKeys) - if err != nil { - return fmt.Errorf("push tags: %w", err) - } - fmt.Print("\nTags were pushed successfully!\n") - return nil -} - -// storeLatestTag receives a tag in the form of a plumbing.Reference and a map with the latest tag per service -// It checks if the tag is part of the current target (if it is belonging to a service or to core), -// checks if it is newer than the current latest tag stored in the map and if it is, updates latestTags and returns it -func storeLatestTag(t *plumbing.Reference, latestTags map[string]string, target string) (map[string]string, error) { - tagName, _ := strings.CutPrefix(t.Name().String(), "refs/tags/") - splitTag := strings.Split(tagName, "/") - - switch target { - case core: - if len(splitTag) != 2 || splitTag[0] != "core" { - return latestTags, nil - } - - version := splitTag[1] - if semver.Prerelease(version) != "" { - return latestTags, nil - } - - // invalid (or empty) semantic version are considered less than a valid one - if semver.Compare(latestTags["core"], version) == -1 { - latestTags["core"] = version - } - case allServices: - if len(splitTag) != 3 || splitTag[0] != "services" { - return latestTags, nil - } - - service := splitTag[1] - version := splitTag[2] - if semver.Prerelease(version) != "" || utils.Contains(deprecatedServices, service) { - return latestTags, nil - } - - // invalid (or empty) semantic version are considered less than a valid one - if semver.Compare(latestTags[service], version) == -1 { - latestTags[service] = version - } - default: - return nil, fmt.Errorf("target not supported in storeLatestTag, fix the script") - } - return latestTags, nil -} - -// computeUpdatedVersion returns the updated version according to the update type -// example: for version v0.1.1 and updateType minor, it returns v0.2.0 -func computeUpdatedVersion(version, updateType string) (string, error) { - canonicalVersion := semver.Canonical(version) - splitVersion := strings.Split(canonicalVersion, ".") - if len(splitVersion) != 3 { - return "", fmt.Errorf("invalid canonical version") - } - - switch updateType { - case patch: - patchNumber, err := strconv.Atoi(splitVersion[2]) - if err != nil { - return "", fmt.Errorf("couldnt convert patch number to int") - } - updatedPatchNumber := patchNumber + 1 - splitVersion[2] = fmt.Sprint(updatedPatchNumber) - case minor: - minorNumber, err := strconv.Atoi(splitVersion[1]) - if err != nil { - return "", fmt.Errorf("couldnt convert minor number to int") - } - updatedPatchNumber := minorNumber + 1 - splitVersion[1] = fmt.Sprint(updatedPatchNumber) - splitVersion[2] = "0" - default: - return "", fmt.Errorf("update type not supported in version increment, fix the script") - } - - updatedVersion := strings.Join(splitVersion, ".") - return updatedVersion, nil -} - -// Prompts for confirmation. -// -// Returns nil only if the user (explicitly) answers positive. -// Returns error if the user answers negative. -func promptForConfirmation(prompt string) error { - question := fmt.Sprintf("%s [y/N] ", prompt) - reader := bufio.NewReader(os.Stdin) - for i := 0; i < 3; i++ { - fmt.Print(question) - answer, err := reader.ReadString('\n') - if err != nil { - continue - } - answer = strings.ToLower(strings.TrimSpace(answer)) - if answer == "y" || answer == "yes" { - return nil - } - if answer == "" || answer == "n" || answer == "no" { - return errors.New("execution aborted") - } - } - return fmt.Errorf("max number of wrong inputs") -} - -func createTag(r *git.Repository, tag string) error { - h, err := r.Head() - if err != nil { - return fmt.Errorf("get HEAD: %w", err) - } - _, err = r.CreateTag(tag, h.Hash(), nil) - if err != nil { - return fmt.Errorf("create tag: %w", err) - } - return nil -} - -func pushTags(r *git.Repository, publicKeys *ssh.PublicKeys) error { - po := &git.PushOptions{ - Auth: publicKeys, - RemoteName: "origin", - Progress: os.Stdout, - RefSpecs: []config.RefSpec{config.RefSpec("refs/tags/*:refs/tags/*")}, - } - err := r.Push(po) - - if err != nil { - if errors.Is(err, git.NoErrAlreadyUpToDate) { - return fmt.Errorf("origin remote was up to date, no push done") - } - return fmt.Errorf("push to remote origin: %w", err) - } - - return nil -} diff --git a/scripts/automatic_tag_test.go b/scripts/automatic_tag_test.go deleted file mode 100644 index b876db06f..000000000 --- a/scripts/automatic_tag_test.go +++ /dev/null @@ -1,187 +0,0 @@ -package main - -import ( - "reflect" - "testing" - - "github.com/go-git/go-git/v5/plumbing" -) - -func TestStoreLatestTag(t *testing.T) { - for _, test := range []struct { - desc string - tag *plumbing.Reference - latestTags map[string]string - target string - expectedLatestTags map[string]string - isValid bool - }{ - { - desc: "valid service latest version", - tag: plumbing.NewReferenceFromStrings("refs/tags/services/foo/v0.2.0", ""), - latestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - target: "all-services", - expectedLatestTags: map[string]string{ - "foo": "v0.2.0", - "bar": "v0.1.0", - }, - isValid: true, - }, - { - desc: "valid service no update", - tag: plumbing.NewReferenceFromStrings("refs/tags/services/foo/v0.1.0", ""), - latestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - target: "all-services", - expectedLatestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - isValid: true, - }, - { - desc: "valid core latest version", - tag: plumbing.NewReferenceFromStrings("refs/tags/core/v0.2.0", ""), - latestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - "core": "v0.1.0", - }, - target: "core", - expectedLatestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - "core": "v0.2.0", - }, - isValid: true, - }, - { - desc: "invalid service tag", - tag: plumbing.NewReferenceFromStrings("refs/tags/foo/v0.2.0", ""), - latestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - target: "all-services", - expectedLatestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - isValid: true, - }, - { - desc: "valid service tag but coreOnly", - tag: plumbing.NewReferenceFromStrings("refs/tags/services/foo/v0.2.0", ""), - latestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - target: "core", - expectedLatestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - isValid: true, - }, - { - desc: "dont update to pre-release", - tag: plumbing.NewReferenceFromStrings("refs/tags/services/foo/v0.2.0-pre-release", ""), - latestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - target: "core", - expectedLatestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - isValid: true, - }, - { - desc: "unsupported target", - tag: plumbing.NewReferenceFromStrings("refs/tags/services/foo/v0.2.0", ""), - latestTags: map[string]string{ - "foo": "v0.1.0", - "bar": "v0.1.0", - }, - target: "unsupported", - expectedLatestTags: map[string]string{}, - isValid: false, - }, - } { - t.Run(test.desc, func(t *testing.T) { - updatedLatestTags, err := storeLatestTag(test.tag, test.latestTags, test.target) - - if err != nil && test.isValid { - t.Fatalf("Test returned error on valid test case: %v", err) - } - - if err == nil && !test.isValid { - t.Fatalf("Test didn't return error on invalid test case") - } - - if test.isValid && !reflect.DeepEqual(test.expectedLatestTags, updatedLatestTags) { - t.Fatalf("Updated tags are wrong, expected %v, got %v", test.expectedLatestTags, updatedLatestTags) - } - }) - } -} - -func TestComputeUpdatedVersion(t *testing.T) { - for _, test := range []struct { - desc string - version string - updateType string - expectedVersion string - isValid bool - }{ - { - desc: "valid minor update", - version: "v0.1.0", - updateType: "minor", - expectedVersion: "v0.2.0", - isValid: true, - }, - { - desc: "valid minor update with previous patch version not zero", - version: "v0.1.1", - updateType: "minor", - expectedVersion: "v0.2.0", - isValid: true, - }, - { - desc: "valid patch update", - version: "v0.1.0", - updateType: "patch", - expectedVersion: "v0.1.1", - isValid: true, - }, - { - desc: "invalid update type", - version: "v0.1.0", - updateType: "major", - isValid: false, - }, - } { - t.Run(test.desc, func(t *testing.T) { - updatedVersion, err := computeUpdatedVersion(test.version, test.updateType) - - if err != nil && test.isValid { - t.Fatalf("Test returned error on valid test case: %v", err) - } - - if err == nil && !test.isValid { - t.Fatalf("Test didn't return error on invalid test case") - } - - if test.isValid && test.expectedVersion != updatedVersion { - t.Fatalf("updated tag is wrong: expected %s, got %s", test.expectedVersion, updatedVersion) - } - }) - } -} diff --git a/scripts/go.mod b/scripts/go.mod deleted file mode 100644 index 871165789..000000000 --- a/scripts/go.mod +++ /dev/null @@ -1,69 +0,0 @@ -module github.com/stackitcloud/stackit-sdk-go/scripts - -go 1.21 - -exclude ( - github.com/ProtonMail/go-crypto v1.2.0 - github.com/cloudflare/circl v1.6.1 - // exclude versions not compatible with go 1.21 - github.com/go-git/go-git/v5 v5.14.0 - github.com/go-git/go-git/v5 v5.15.0 - github.com/go-git/go-git/v5 v5.16.0 - - github.com/skeema/knownhosts v1.3.1 - golang.org/x/crypto v0.35.0 - golang.org/x/crypto v0.36.0 - - golang.org/x/crypto v0.37.0 - golang.org/x/crypto v0.38.0 - golang.org/x/mod v0.24.0 - golang.org/x/net v0.30.0 - golang.org/x/net v0.31.0 - golang.org/x/net v0.32.0 - golang.org/x/net v0.33.0 - golang.org/x/net v0.34.0 - golang.org/x/net v0.35.0 - golang.org/x/net v0.36.0 - golang.org/x/net v0.37.0 - golang.org/x/net v0.38.0 - - golang.org/x/net v0.39.0 - golang.org/x/sys v0.31.0 - - golang.org/x/sys v0.32.0 - golang.org/x/term v0.30.0 - - golang.org/x/term v0.31.0 -) - -require ( - github.com/go-git/go-git/v5 v5.13.2 - github.com/stackitcloud/stackit-sdk-go/core v0.17.2 - golang.org/x/mod v0.24.0 - golang.org/x/term v0.29.0 -) - -require ( - dario.cat/mergo v1.0.1 // indirect - github.com/ProtonMail/go-crypto v1.1.6 // indirect - github.com/cloudflare/circl v1.4.0 // indirect - github.com/cyphar/filepath-securejoin v0.4.1 // indirect - github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.6.2 // indirect - github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect - github.com/pjbgf/sha1cd v0.3.2 // indirect - github.com/skeema/knownhosts v1.3.0 // indirect -) - -require ( - github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/emirpasic/gods v1.18.1 // indirect - github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.33.0 // indirect - golang.org/x/net v0.29.0 // indirect - golang.org/x/sys v0.30.0 // indirect - gopkg.in/warnings.v0 v0.1.2 // indirect -) diff --git a/scripts/go.sum b/scripts/go.sum deleted file mode 100644 index 62f77f3a5..000000000 --- a/scripts/go.sum +++ /dev/null @@ -1,108 +0,0 @@ -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= -github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= -github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= -github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/cloudflare/circl v1.4.0 h1:BV7h5MgrktNzytKmWjpOtdYrf0lkkbF8YMlBGPhJQrY= -github.com/cloudflare/circl v1.4.0/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= -github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= -github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/elazarl/goproxy v1.4.0 h1:4GyuSbFa+s26+3rmYNSuUVsx+HgPrV1bk1jXI0l9wjM= -github.com/elazarl/goproxy v1.4.0/go.mod h1:X/5W/t+gzDyLfHW4DrMdpjqYjpXsURlBt9lpBDxZZZQ= -github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= -github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= -github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= -github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= -github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= -github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.13.2 h1:7O7xvsK7K+rZPKW6AQR1YyNhfywkv7B8/FsP3ki6Zv0= -github.com/go-git/go-git/v5 v5.13.2/go.mod h1:hWdW5P4YZRjmpGHwRH2v3zkWcNl6HeXaXQEMGb3NJ9A= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= -github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= -github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= -github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= -github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= -github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= -github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2 h1:jPyn+i8rkp2hM80+hOg0B/1EVRbMt778Tr5RWyK1m2E= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= -github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= -golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= -golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/scripts/update-service-tags.sh b/scripts/update-service-tags.sh new file mode 100755 index 000000000..b4e4e9229 --- /dev/null +++ b/scripts/update-service-tags.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Immediate exit on failure +set -e + +# VERSION contains only one single line which contains the version of the service +# in the following format e.g. v0.3.0 + +# Check all version files which have changed +for file in $(git diff --name-only HEAD~1..HEAD | grep VERSION); do + # Extract the current version and build the expected tag + dirpath=$(dirname $file) + version_path="$dirpath/VERSION" + version=$(<"$version_path") + expected_tag="$dirpath/$version" + # Check if the tag already exists + if git rev-parse --verify $expected_tag &> /dev/null; then + echo "Tag '$expected_tag' already exists." + else + # Tag doesn't exist. Create a tag and push it. + echo "Tag '$expected_tag' does not exist." + git tag -a $expected_tag -m "Release $version" + git push origin tag $expected_tag + fi +done diff --git a/services/alb/VERSION b/services/alb/VERSION new file mode 100644 index 000000000..48080b4cf --- /dev/null +++ b/services/alb/VERSION @@ -0,0 +1 @@ +v0.5.0 \ No newline at end of file diff --git a/services/archiving/VERSION b/services/archiving/VERSION new file mode 100644 index 000000000..81fd7ba08 --- /dev/null +++ b/services/archiving/VERSION @@ -0,0 +1 @@ +v0.2.0 \ No newline at end of file diff --git a/services/authorization/VERSION b/services/authorization/VERSION new file mode 100644 index 000000000..4ea5cafac --- /dev/null +++ b/services/authorization/VERSION @@ -0,0 +1 @@ +v0.8.0 \ No newline at end of file diff --git a/services/cdn/VERSION b/services/cdn/VERSION new file mode 100644 index 000000000..8b3a0227b --- /dev/null +++ b/services/cdn/VERSION @@ -0,0 +1 @@ +v1.3.0 \ No newline at end of file diff --git a/services/certificates/VERSION b/services/certificates/VERSION new file mode 100644 index 000000000..992977ad2 --- /dev/null +++ b/services/certificates/VERSION @@ -0,0 +1 @@ +v1.1.0 \ No newline at end of file diff --git a/services/dns/VERSION b/services/dns/VERSION new file mode 100644 index 000000000..2bb97efb7 --- /dev/null +++ b/services/dns/VERSION @@ -0,0 +1 @@ +v0.17.0 \ No newline at end of file diff --git a/services/git/VERSION b/services/git/VERSION new file mode 100644 index 000000000..e07d136c7 --- /dev/null +++ b/services/git/VERSION @@ -0,0 +1 @@ +v0.6.0 \ No newline at end of file diff --git a/services/iaas/VERSION b/services/iaas/VERSION new file mode 100644 index 000000000..f7689f340 --- /dev/null +++ b/services/iaas/VERSION @@ -0,0 +1 @@ +v0.26.0 \ No newline at end of file diff --git a/services/kms/VERSION b/services/kms/VERSION new file mode 100644 index 000000000..d4dfa5639 --- /dev/null +++ b/services/kms/VERSION @@ -0,0 +1 @@ +v0.3.0 \ No newline at end of file diff --git a/services/lbapplication/VERSION b/services/lbapplication/VERSION new file mode 100644 index 000000000..48080b4cf --- /dev/null +++ b/services/lbapplication/VERSION @@ -0,0 +1 @@ +v0.5.0 \ No newline at end of file diff --git a/services/loadbalancer/VERSION b/services/loadbalancer/VERSION new file mode 100644 index 000000000..ec7b96782 --- /dev/null +++ b/services/loadbalancer/VERSION @@ -0,0 +1 @@ +v1.4.0 \ No newline at end of file diff --git a/services/logme/VERSION b/services/logme/VERSION new file mode 100644 index 000000000..540758e71 --- /dev/null +++ b/services/logme/VERSION @@ -0,0 +1 @@ +v0.25.0 \ No newline at end of file diff --git a/services/mariadb/VERSION b/services/mariadb/VERSION new file mode 100644 index 000000000..540758e71 --- /dev/null +++ b/services/mariadb/VERSION @@ -0,0 +1 @@ +v0.25.0 \ No newline at end of file diff --git a/services/modelserving/VERSION b/services/modelserving/VERSION new file mode 100644 index 000000000..48080b4cf --- /dev/null +++ b/services/modelserving/VERSION @@ -0,0 +1 @@ +v0.5.0 \ No newline at end of file diff --git a/services/mongodbflex/VERSION b/services/mongodbflex/VERSION new file mode 100644 index 000000000..8b3a0227b --- /dev/null +++ b/services/mongodbflex/VERSION @@ -0,0 +1 @@ +v1.3.0 \ No newline at end of file diff --git a/services/objectstorage/VERSION b/services/objectstorage/VERSION new file mode 100644 index 000000000..8b3a0227b --- /dev/null +++ b/services/objectstorage/VERSION @@ -0,0 +1 @@ +v1.3.0 \ No newline at end of file diff --git a/services/observability/VERSION b/services/observability/VERSION new file mode 100644 index 000000000..4ea5cafac --- /dev/null +++ b/services/observability/VERSION @@ -0,0 +1 @@ +v0.8.0 \ No newline at end of file diff --git a/services/opensearch/VERSION b/services/opensearch/VERSION new file mode 100644 index 000000000..a28372544 --- /dev/null +++ b/services/opensearch/VERSION @@ -0,0 +1 @@ +v0.24.0 \ No newline at end of file diff --git a/services/postgresflex/VERSION b/services/postgresflex/VERSION new file mode 100644 index 000000000..0408c30b4 --- /dev/null +++ b/services/postgresflex/VERSION @@ -0,0 +1 @@ +v1.2.0 \ No newline at end of file diff --git a/services/rabbitmq/VERSION b/services/rabbitmq/VERSION new file mode 100644 index 000000000..540758e71 --- /dev/null +++ b/services/rabbitmq/VERSION @@ -0,0 +1 @@ +v0.25.0 \ No newline at end of file diff --git a/services/redis/VERSION b/services/redis/VERSION new file mode 100644 index 000000000..540758e71 --- /dev/null +++ b/services/redis/VERSION @@ -0,0 +1 @@ +v0.25.0 \ No newline at end of file diff --git a/services/resourcemanager/VERSION b/services/resourcemanager/VERSION new file mode 100644 index 000000000..2bb97efb7 --- /dev/null +++ b/services/resourcemanager/VERSION @@ -0,0 +1 @@ +v0.17.0 \ No newline at end of file diff --git a/services/runcommand/VERSION b/services/runcommand/VERSION new file mode 100644 index 000000000..8b3a0227b --- /dev/null +++ b/services/runcommand/VERSION @@ -0,0 +1 @@ +v1.3.0 \ No newline at end of file diff --git a/services/secretsmanager/VERSION b/services/secretsmanager/VERSION new file mode 100644 index 000000000..6ddc06173 --- /dev/null +++ b/services/secretsmanager/VERSION @@ -0,0 +1 @@ +v0.13.0 \ No newline at end of file diff --git a/services/serverbackup/VERSION b/services/serverbackup/VERSION new file mode 100644 index 000000000..8b3a0227b --- /dev/null +++ b/services/serverbackup/VERSION @@ -0,0 +1 @@ +v1.3.0 \ No newline at end of file diff --git a/services/serverupdate/VERSION b/services/serverupdate/VERSION new file mode 100644 index 000000000..0408c30b4 --- /dev/null +++ b/services/serverupdate/VERSION @@ -0,0 +1 @@ +v1.2.0 \ No newline at end of file diff --git a/services/serviceaccount/VERSION b/services/serviceaccount/VERSION new file mode 100644 index 000000000..7965b36d6 --- /dev/null +++ b/services/serviceaccount/VERSION @@ -0,0 +1 @@ +v0.9.0 \ No newline at end of file diff --git a/services/serviceenablement/VERSION b/services/serviceenablement/VERSION new file mode 100644 index 000000000..24e56e03c --- /dev/null +++ b/services/serviceenablement/VERSION @@ -0,0 +1 @@ +v1.2.1 \ No newline at end of file diff --git a/services/ske/VERSION b/services/ske/VERSION new file mode 100644 index 000000000..37eb51de3 --- /dev/null +++ b/services/ske/VERSION @@ -0,0 +1 @@ +v0.27.0 \ No newline at end of file diff --git a/services/sqlserverflex/VERSION b/services/sqlserverflex/VERSION new file mode 100644 index 000000000..8b3a0227b --- /dev/null +++ b/services/sqlserverflex/VERSION @@ -0,0 +1 @@ +v1.3.0 \ No newline at end of file diff --git a/services/stackitmarketplace/VERSION b/services/stackitmarketplace/VERSION new file mode 100644 index 000000000..05f629f1b --- /dev/null +++ b/services/stackitmarketplace/VERSION @@ -0,0 +1 @@ +v1.6.0 \ No newline at end of file