diff --git a/.github/workflows/psql-release-notifier.yaml b/.github/workflows/release-notifier.yaml similarity index 81% rename from .github/workflows/psql-release-notifier.yaml rename to .github/workflows/release-notifier.yaml index 0d022c5e..1f6336a0 100644 --- a/.github/workflows/psql-release-notifier.yaml +++ b/.github/workflows/release-notifier.yaml @@ -17,22 +17,23 @@ # SPDX-License-Identifier: Apache-2.0 # ############################################################################# -name: PostgreSQL new release notifier +name: Kubernetes & PostegreSQL release notifier on: workflow_dispatch: inputs: recipient: - description: "Recipent email" + description: "Notification recipent email" required: false schedule: # Run every day at 01:00 at night - cron: "0 1 * * *" # UTC time env: - TRACTUSX_MAILINGLIST: ${{ github.event.inputs.recipient != '' && github.event.inputs.recipient || '_CHANGE_ME_@MAIL.COM' }} + TRACTUSX_MAILINGLIST: ${{ github.event.inputs.recipient != '' && github.event.inputs.recipient || 'tractusx-dev@eclipse.org' }} DEVSECOPS_NOTIFICATION_EMAIL: eclipse.tractusx@gmail.com DEVSECOPS_NOTIFICATION_EMAIL_PASSWORD: ${{ secrets.NOTIFICATION_EMAIL_PASSWORD }} CURRENT_ALIGNED_PSQL_VER: 15.0.0 + CURRENT_ALIGNED_K8S_VER: 1.27.0 jobs: notify: runs-on: ubuntu-latest @@ -48,14 +49,17 @@ jobs: workflow: ${{ github.event.workflow_run.workflow_id }} workflow_conclusion: success if_no_artifact_found: warn - name: psql_release + name: releases_artifact path: release-notifier/ - name: Run notifier run: | cd release-notifier go run main.go psql - - name: Upload new release artifact + go run main.go k8s + - name: Upload release artifact uses: actions/upload-artifact@v3 with: - name: psql_release - path: release-notifier/psql_release + name: releases_artifact + path: | + release-notifier/k8s_release + release-notifier/psql_release diff --git a/.gitignore b/.gitignore index 93c700e8..d6f17d04 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ .vscode/ .idea/ +dash-input.sum +release-notifier/k8s_release +release-notifier/psql_release +release-automation/tractusx-release-automation +release-notifier/release-notifier diff --git a/release-notifier/README.md b/release-notifier/README.md index 5a7d63df..bd22577e 100644 --- a/release-notifier/README.md +++ b/release-notifier/README.md @@ -1,16 +1,29 @@ -# Release notifier +# Release Notifier Welcome to Release Notifier tool. Release notifier tool was designed to keep community informed about new releases and updates. -Currently it supports PostgreSQL only with potential to grow and support other applications. +Currently it supports PostgreSQL & Kubernetes with potential to grow and support other applications. -## Major Release Upgrade Process Description +## Technical Accounts -**Objective:** To streamline the process of initiating and implementing a major release upgrade, ensuring community consensus, documentation alignment, and effective communication. +Release notifier uses currently two account for its work: +- Gmail account for email notification purpose: + * eclipse.tractusx [at] gmail.com + * google account password and application secret (to send email) are stored in Vault + * recovery email set to webmaster [at] eclipse-foundation.org. + +- Eclipse Foundation account: + * username: eclipsetractusx + * password: stored in Vault + + +## Upgrade Alignment Process Description + +**Objective:** To streamline the process of initiating and implementing an upgrade, ensuring community consensus, documentation alignment, and effective communication. 1. **Initiation of Discussion:** - - A community member recognizes the need for a major release upgrade of a helm chart dependency, after receiving notification of a new release and initiates a discussion on the Tractus-X mailing list. + - A community member recognizes the need for an upgrade of a component, after receiving notification of a new release and initiates a discussion on the Tractus-X mailing list. - In the discussion, the member provides a brief summary of the major changes, improvements, or new features that the upgrade will introduce. 2. **Collaborate and Consensus:** @@ -21,18 +34,24 @@ Currently it supports PostgreSQL only with potential to grow and support other a 3. **Agreement to Proceed:** - If the community reaches a consensus and agrees to proceed with the major release upgrade, formal decision is made. -4. **Update TRG 5.07 Document:** - - Community member updates PostgreSQL aligned version in the Tractus-X Release Guide (TRG) 5.07 following the [process](https://eclipse-tractusx.github.io/docs/release/). +4. **Update Aligned Version in the TRG Document:** + - Community member updates aligned version in the respective Tractus-X Release Guide following the [process](https://eclipse-tractusx.github.io/docs/release/). + - **PostgreSQL**: [TRG 5.07](https://eclipse-tractusx.github.io/docs/release/trg-5/trg-5-07) + - **Kubernetes**: [TRG 5.10](https://eclipse-tractusx.github.io/docs/release/trg-5/trg-5-10) 5. **Update GitHub Workflow:** - - Within the project's GitHub repository, update environment variable CURRENT_ALIGNED_PSQL_VER in the [psql-release-notifier workflow](https://github.com/eclipse-tractusx/sig-release/blob/main/.github/workflows/psql-release-notifier.yaml#L31) to reflect the agreed-upon version for the major release. + - Within the project's GitHub repository, update environment variable to reflect the agreed-upon version for the major release. + - **PostgreSQL**: CURRENT_ALIGNED_PSQL_VER at [release-notifier](https://github.com/eclipse-tractusx/sig-release/blob/main/.github/workflows/release-notifier.yaml#L35) workflow + - **Kubernetes**: CURRENT_ALIGNED_K8S_VER at [release-notifier](https://github.com/eclipse-tractusx/sig-release/blob/main/.github/workflows/release-notifier.yaml#L36) workflow 6. **Send Communication:** - Once the TRG and GitHub workflow are aligned with the new version, member prepares a formal communication. - - The communication details the major release upgrade, its purpose, features, and any critical instructions for the community. + - The communication details the component relevant release upgrade, its purpose, features, and any critical instructions for the community. 7. **Implementation:** - - The major release upgrade is carried out as per the defined [upgrade plan](TBP), with close attention to the documentation, codebase, and any testing or validation procedures as required. + - The upgrade is carried out as per the defined upgrade plan, with close attention to the documentation, codebase, and any testing or validation procedures as required. + - **PostgreSQL**: [upgrade plan](TBP) + - **Kubernetes**: [upgrade plan](TBP) 9. **Ongoing Feedback and Improvement:** - Continuous feedback from the community is encouraged and used to further improve the upgrade process for future releases. diff --git a/release-notifier/cmd/k8s.go b/release-notifier/cmd/k8s.go new file mode 100644 index 00000000..47a2169e --- /dev/null +++ b/release-notifier/cmd/k8s.go @@ -0,0 +1,61 @@ +/******************************************************************************* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ +package cmd + +import ( + "log" + "release-notifier/internal/k8s" + + "github.com/spf13/cobra" +) + +// k8sCmd represents the k8s command +var k8sCmd = &cobra.Command{ + Use: "k8s", + Short: "Sends out notification of new Kubernetes release", + Long: `Sends out notification of new Kubernetes release + to a mailing list: + +Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + Run: func(cmd *cobra.Command, args []string) { + log.Println("Kubernetes release notifier called.") + if k8s.IsNewRelease() { + if err := k8s.Notify(); err != nil { + log.Fatalln(err) + } + log.Println("Email Sent!") + } + }, +} + +func init() { + rootCmd.AddCommand(k8sCmd) + + // Here you will define your flags and configuration settings. + + // Cobra supports Persistent Flags which will work for this command + // and all subcommands, e.g.: + // k8sCmd.PersistentFlags().String("foo", "", "A help for foo") + + // Cobra supports local flags which will only run when this command + // is called directly, e.g.: + // k8sCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") +} diff --git a/release-notifier/cmd/psql.go b/release-notifier/cmd/psql.go index c24c188c..9f487180 100644 --- a/release-notifier/cmd/psql.go +++ b/release-notifier/cmd/psql.go @@ -19,9 +19,9 @@ package cmd import ( + "github.com/spf13/cobra" "log" "os" - "github.com/spf13/cobra" "release-notifier/internal/psql" ) @@ -59,7 +59,7 @@ func psqlNotifier() { latestRelease := psql.GetLatestRel() prevRelease := psql.GetPrevRelFromArtifact() - if latestRelease != prevRelease { + if latestRelease != prevRelease && latestRelease != "" { log.Printf("New release is out: %v\n", latestRelease) alignedRelease := os.Getenv("CURRENT_ALIGNED_PSQL_VER") log.Printf("Current aligned version: %v\n", alignedRelease) @@ -68,4 +68,4 @@ func psqlNotifier() { } else { log.Println("No new release :(") } -} \ No newline at end of file +} diff --git a/release-notifier/go.mod b/release-notifier/go.mod index 90ed4753..58785ab0 100644 --- a/release-notifier/go.mod +++ b/release-notifier/go.mod @@ -3,6 +3,7 @@ module release-notifier go 1.20 require ( + github.com/Masterminds/semver/v3 v3.2.1 github.com/gocolly/colly v1.2.0 github.com/spf13/cobra v1.8.0 ) diff --git a/release-notifier/go.sum b/release-notifier/go.sum index 6f301650..99100c22 100644 --- a/release-notifier/go.sum +++ b/release-notifier/go.sum @@ -1,3 +1,5 @@ +github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= +github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= diff --git a/release-notifier/internal/k8s/k8snotifier.go b/release-notifier/internal/k8s/k8snotifier.go new file mode 100644 index 00000000..835e75de --- /dev/null +++ b/release-notifier/internal/k8s/k8snotifier.go @@ -0,0 +1,117 @@ +/******************************************************************************* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package k8s + +import ( + "bytes" + "fmt" + "github.com/Masterminds/semver/v3" + "github.com/gocolly/colly" + "log" + "os" + "release-notifier/internal/mail" + "strings" + "text/template" +) + +const mailTemplate = "templates/mail-k8s.html.tmpl" +const artifactName = "k8s_release" + +func getLatestRel() string { + release, _ := semver.NewVersion("0.0.0") + website := "https://kubernetes.io/releases/" + + log.Println("Querying", website) + c := colly.NewCollector() + + c.OnError(func(_ *colly.Response, err error) { + log.Println("Can't load the page: ", err) + }) + + c.OnHTML("span.release-inline-value", func(e *colly.HTMLElement) { + if !strings.Contains(e.Text, "release") { + return + } + r, err := semver.NewVersion(strings.Split(e.Text, " ")[0]) + if err != nil { + return + } + if r.Compare(release) == 1 { + release = r + } + }) + + c.Visit(website) + return release.String() +} + +func getRelFromArtifact() string { + data, err := os.ReadFile(artifactName) + + if err != nil { + return "" + } + + release := string(data) + return release +} + +func IsNewRelease() bool { + latestRelease := getLatestRel() + prevRelease := getRelFromArtifact() + if latestRelease != prevRelease { + log.Printf("New release is out: %v\n", latestRelease) + if err := os.WriteFile(artifactName, []byte(latestRelease), 0644); err != nil { + log.Fatalln(err) + return false + } + return true + } + log.Println("No new release :(") + return false +} + +func buildContent(mailTemplate string) ([]byte, error) { + newRelease := getRelFromArtifact() + alignedRelease := os.Getenv("CURRENT_ALIGNED_K8S_VER") + var buff bytes.Buffer + mimeHeaders := "MIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n" + buff.Write([]byte(fmt.Sprintf("Subject: Action Required: Kubernetes New Release (%s)\n%s\n\n", newRelease, mimeHeaders))) + t, err := template.ParseFiles(mailTemplate) + t.Execute(&buff, struct { + NewK8SRelease string + AlignedK8SRelease string + }{ + NewK8SRelease: newRelease, + AlignedK8SRelease: alignedRelease, + }) + if err != nil { + return nil, err + } + return buff.Bytes(), nil +} + +func Notify() error { + content, err := buildContent(mailTemplate) + if err != nil { + return err + } + return mail.SendMail(content) +} diff --git a/release-notifier/internal/k8s/k8snotifier_test.go b/release-notifier/internal/k8s/k8snotifier_test.go new file mode 100644 index 00000000..c3b36a3c --- /dev/null +++ b/release-notifier/internal/k8s/k8snotifier_test.go @@ -0,0 +1,60 @@ +/******************************************************************************* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package k8s + +import ( + "os" + "regexp" + "strings" + "testing" +) + +func TestShouldPassIfNewReleaseIsSemVer(t *testing.T) { + // Semantic Versioning schema regex + const regexPattern = `^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$` + + newRelease := getLatestRel() + if match, _ := regexp.MatchString(regexPattern, newRelease); !match { + t.Errorf("Test should pass, it returns semver string.") + } + +} + +func TestShouldPassIfNewReleaseGetsPersisted(t *testing.T) { + fakeRelease := "0.0.1" + _ = os.WriteFile(artifactName, []byte("0.0.1"), 0644) + defer os.Remove(artifactName) + IsNewRelease() + newRelease := getRelFromArtifact() + if strings.EqualFold(newRelease, fakeRelease) { + t.Errorf("Test should pass, the new release should not be equal to fake.") + } +} + +func TestShouldPassIfEmailContainsRefReleases(t *testing.T) { + fakeRelease, fakeAligned := "0.0.2", "0.0.1" + _ = os.WriteFile(artifactName, []byte(fakeRelease), 0644) + defer os.Remove(artifactName) + os.Setenv("CURRENT_ALIGNED_K8S_VER", fakeAligned) + mailContent, _ := buildContent("../../templates/mail-k8s.html.tmpl") + if !strings.Contains(string(mailContent), fakeRelease) || !strings.Contains(string(mailContent), fakeAligned) { + t.Errorf("Test should pass, content was given new and aligned releases.") + } +} diff --git a/release-notifier/internal/mail/mail.go b/release-notifier/internal/mail/mail.go index 07c69652..8617c634 100644 --- a/release-notifier/internal/mail/mail.go +++ b/release-notifier/internal/mail/mail.go @@ -20,28 +20,21 @@ package mail import ( - "log" "net/smtp" "os" ) const smtpServer = "smtp.gmail.com" const smtpPort = "587" -const recipentMailEnv = "TRACTUSX_MAILINGLIST" +const recipientMailEnv = "TRACTUSX_MAILINGLIST" const senderMailEnv = "DEVSECOPS_NOTIFICATION_EMAIL" const senderPassEnv = "DEVSECOPS_NOTIFICATION_EMAIL_PASSWORD" - -func SendMail(body []byte) { +func SendMail(body []byte) error { sender := os.Getenv(senderMailEnv) password := os.Getenv(senderPassEnv) - recipent := os.Getenv(recipentMailEnv) + recipient := os.Getenv(recipientMailEnv) auth := smtp.PlainAuth("", sender, password, smtpServer) - err := smtp.SendMail(smtpServer+":"+smtpPort, auth, sender, []string{recipent}, body) - if err != nil { - log.Println(err) - os.Exit(1) - } - log.Println("Email Sent!") + return smtp.SendMail(smtpServer+":"+smtpPort, auth, sender, []string{recipient}, body) } diff --git a/release-notifier/internal/psql/psqlnotifier.go b/release-notifier/internal/psql/psqlnotifier.go index ccf1372f..a8d9668e 100644 --- a/release-notifier/internal/psql/psqlnotifier.go +++ b/release-notifier/internal/psql/psqlnotifier.go @@ -22,20 +22,17 @@ package psql import ( "bytes" "fmt" + "github.com/Masterminds/semver/v3" + "github.com/gocolly/colly" "log" "os" - "regexp" - "text/template" "release-notifier/internal/mail" - "github.com/gocolly/colly" + "text/template" ) const mailTemplate = "templates/mail-psql.html.tmpl" const artifactName = "psql_release" -// Semantic Versioning schema regex -const regexPattern = `^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$` - func GetLatestRel() string { var release string website := "https://bitnami.com/stack/postgresql" @@ -48,9 +45,11 @@ func GetLatestRel() string { }) c.OnHTML("div.stack__header__properties__property", func(e *colly.HTMLElement) { - if match, _ := regexp.MatchString(regexPattern, e.ChildText("p")); match { - release = e.ChildText("p") + r, err := semver.NewVersion(e.ChildText("p")) + if err != nil { + return } + release = r.String() }) c.Visit(website) @@ -81,14 +80,18 @@ func Notify(newRelease string, alignedRelease string) { mimeHeaders := "MIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n" buff.Write([]byte(fmt.Sprintf("Subject: Action Required: PostgreSQL New Release (%s)\n%s\n\n", newRelease, mimeHeaders))) - t, _ := template.ParseFiles(mailTemplate) + t, err := template.ParseFiles(mailTemplate) t.Execute(&buff, struct { - NewPSQLRelease string + NewPSQLRelease string AlignedPSQLRelease string }{ - NewPSQLRelease: newRelease, + NewPSQLRelease: newRelease, AlignedPSQLRelease: alignedRelease, }) + if err != nil { + log.Fatal(err) + os.Exit(1) + } mail.SendMail(buff.Bytes()) -} \ No newline at end of file +} diff --git a/release-notifier/internal/psql/psqnotifier_test.go b/release-notifier/internal/psql/psqnotifier_test.go new file mode 100644 index 00000000..9ef64c5d --- /dev/null +++ b/release-notifier/internal/psql/psqnotifier_test.go @@ -0,0 +1,36 @@ +/******************************************************************************* + * Copyright (c) 2023 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ******************************************************************************/ + +package psql + +import ( + "regexp" + "testing" +) + +func TestShouldPassIfNewReleaseIsSemVer(t *testing.T) { + // Semantic Versioning schema regex + const regexPattern = `^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$` + + newRelease := GetLatestRel() + if match, _ := regexp.MatchString(regexPattern, newRelease); !match { + t.Errorf("Test should pass, it returns semver string.") + } + +} diff --git a/release-notifier/templates/mail-k8s.html.tmpl b/release-notifier/templates/mail-k8s.html.tmpl new file mode 100644 index 00000000..2fb7b4e5 --- /dev/null +++ b/release-notifier/templates/mail-k8s.html.tmpl @@ -0,0 +1,66 @@ + + + + Action Required: Kubernetes New Release (v{{.NewK8SRelease}}) + + + + + + + + + +
+

Kubernetes {{.NewK8SRelease}} Released!

+
+

Dear Tractus-X Community,

+ +

We're excited to inform you that Kubernetes has released a new version, {{.NewK8SRelease}}, and we need your attention to ensure our projects remain up to date and secure. Please follow the instructions below.

+ +

Current Aligned Version:

+ +

+ Our projects are currently aligned to Kubernetes version {{.AlignedK8SRelease}}. +

+

+ Information of aligned Kubernetes versions can be found in the TRG 5.10 - Kubernetes versions. +

+ +

Upgrade process:

+ +

To guarantee a seamless integration with our infrastructure, we kindly request that you await the corresponding release for Azure Kubernetes before proceeding with any upgrades.

+

Once the Azure Kubernetes respective release is available, we recommend updating all existing clusters promptly. Furthermore, please review and adjust the versions of kind (Kubernetes in Docker) specified in your GitHub Actions workflows to maintain compatibility and ensure optimal performance during the upgrade process.

+

Follow the process to streamline documentation and communication alignment.

+ + +

Resources

+

More information about latest release can be found on the official Kubernetes website.

+ +

Contribution

+

+ We would like to invite you to contribute to this project and provide your valuable insights. Your feedback and suggestions will be greatly appreciated as we continue to refine and expand the functionality of our release notification tool. +

+

+ To access the repository for this project and explore the code, please visit the following link: sig-release/release-notifier. +

+

+ Encourage you to visit general Tractus-X How to Contribute guide. +

+
+

+ We greatly appreciate your commitment to keeping our open source projects up-to-date and secure. Your collaboration is vital to the success of our community. +

+

+ In the event of any issues with the release notification, please refer to the guide available at Disabling and enabling a workflow for step by step instruction on disabling the GitHub Workflow. +

+

+ If you encounter any issues or have questions during the upgrade process, please don't hesitate to reach out to DevSecOps team. +

+ + +

Best regards,

+

DevSecOps Team

+
+ + \ No newline at end of file diff --git a/release-notifier/templates/mail-psql.html.tmpl b/release-notifier/templates/mail-psql.html.tmpl index c0be7ef5..c77a80df 100644 --- a/release-notifier/templates/mail-psql.html.tmpl +++ b/release-notifier/templates/mail-psql.html.tmpl @@ -1,7 +1,7 @@ - Action Required: PostgreSQL New Release (v{{.NewPSQLRelease}}) and Update Process + Action Required: PostgreSQL New Release (v{{.NewPSQLRelease}}) @@ -18,7 +18,7 @@ We're excited to inform you that PostgreSQL has released a new version, {{.NewPSQLRelease}}, and we need your attention to ensure our projects remain up to date and secure. Please follow the instructions below based on the type of release (read more about versioning schema).

-

Current Aligned Version:

+

Current Aligned Version:

Our projects are currently aligned to PostgreSQL version {{.AlignedPSQLRelease}}. @@ -27,7 +27,7 @@ Official information of aligned dependency versions can be found in the TRG 5.07 - Chart Dependencies.

-

Major Release:

+

Major Release:

If a major release has occurred, we kindly request that you initiate a discussion on our Tractus-X mailing list to address the implications and eventually agree on the upgrade plan. Major releases may involve significant changes, and we want to ensure a smooth transition. Here are the key steps to follow: @@ -37,10 +37,10 @@

  • Create a mailing list discussion thread with a clear title indicating the major PostgreSQL release upgrade.
  • Summarize the major changes in PostgreSQL v{{.NewPSQLRelease}} and discuss any potential impacts on our projects.
  • Collaborate with the community to outline a consensus on the upgrade.
  • -
  • Follow the process for implementing the major release upgrade.
  • +
  • Follow the process for implementing the major release upgrade.
  • -

    Minor or Patch Release:

    +

    Minor or Patch Release:

    For minor releases, we only need to update our Helm charts and their dependencies. Specifically, please update the Helm chart that includes PostgreSQL to ensure we are using the latest version, which, as of now, is PostgreSQL v{{.NewPSQLRelease}}. To do this: @@ -54,15 +54,15 @@ -

    Resources

    +

    Resources

    You can find the latest PostgreSQL Helm charts on bitnami official Helm chart repository: Bitnami Helm Chart Repository.

    -

    Contribution

    +

    Contribution

    We would like to invite you to contribute to this project and provide your valuable insights. Your feedback and suggestions will be greatly appreciated as we continue to refine and expand the functionality of our release notification tool.

    - To access the repository for this project and explore the code, please visit the following link: [sig-release/release-notifier](https://github.com/eclipse-tractusx/sig-release/tree/main/release-notifier). + To access the repository for this project and explore the code, please visit the following link: sig-release/release-notifier.

    Encourage you to visit general Tractus-X How to Contribute guide. @@ -71,7 +71,9 @@

    We greatly appreciate your commitment to keeping our open source projects up-to-date and secure. Your collaboration is vital to the success of our community.

    - +

    + In the event of any issues with the release notification, please refer to the guide available at Disabling and enabling a workflow for step by step instruction on disabling the GitHub Workflow. +

    If you encounter any issues or have questions during the upgrade process, please don't hesitate to reach out to DevSecOps team.