Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
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
38 changes: 38 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Build Go Binary

on:
push:
branches:
- dev
- cli-activate
# tag should with 3 numbers separated by dot, i.e. 0.4.6
tags:
- '*.*.*'
pull_request:
branches:
- dev
- cli-activate
- main
jobs:
development:
if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/cli-activate'
name: Development Environment
uses: ./.github/workflows/reusable.yml
secrets: inherit
with:
go-version: '1.19'
version: "dev"
environment: "dev"
is-production: false


production:
if: startsWith(github.ref, 'refs/tags/')
name: Production Environment
uses: ./.github/workflows/reusable.yml
secrets: inherit
with:
go-version: '1.19'
version: "${{ github.ref_name }}"
environment: "prod"
is-production: true
22 changes: 0 additions & 22 deletions .github/workflows/deploy.yml

This file was deleted.

86 changes: 86 additions & 0 deletions .github/workflows/reusable.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Reusable Workflow

on:
workflow_call:
inputs:
go-version:
required: true
type: string
version:
required: true
type: string
environment:
required: true
type: string
is-production:
required: true
type: boolean

jobs:
build-and-deploy:
runs-on: ubuntu-latest
environment:
name: ${{ inputs.environment }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ inputs.go-version }}

- name: Inject secrets and build
env:
LOKI_USERNAME: ${{ secrets.LOKI_USERNAME }}
LOKI_PASSWORD: ${{ secrets.LOKI_PASSWORD }}
MIMIR_USERNAME: ${{ secrets.MIMIR_USERNAME }}
MIMIR_PASSWORD: ${{ secrets.MIMIR_PASSWORD }}
HOSSTED_AUTH_TOKEN: ${{ secrets.HOSSTED_AUTH_TOKEN }}
LOKI_URL: ${{ secrets.LOKI_URL }}
HOSSTED_API_URL: ${{ secrets.HOSSTED_API_URL }}
MIMIR_URL: ${{ secrets.MIMIR_URL }}
COMMIT_HASH: ${{ github.sha }}
VERSION: ${{ inputs.version }}
ENVIRONMENT: ${{ inputs.environment }}
run: |
BUILD_TIMESTAMP="$(date '+%Y-%m-%d')"
COMMON_FLAGS=" -X './cmd.VERSION=${VERSION}' -X './cmd.ENVIRONMENT=${ENVIRONMENT}' -X './cmd.COMMITHASH=${COMMIT_HASH}' -X './cmd.BUILDTIME=${BUILD_TIMESTAMP}' -X main.lokiURL=${LOKI_URL} -X main.lokiUsername=${LOKI_USERNAME} -X main.lokiPassword=${LOKI_PASSWORD} -X main.mimirUsername=${MIMIR_USERNAME} -X main.mimirPassword=${MIMIR_PASSWORD} -X main.hosstedAPIURL=${HOSSTED_API_URL} -X main.mimirURL=${MIMIR_URL} -X main.hosstedAUTHTOKEN=${HOSSTED_AUTH_TOKEN}"
echo "COMMON_FLAGS= $COMMON_FLAGS"
GOOS=linux GOARCH=amd64 go build -ldflags "$COMMON_FLAGS" -o hossted-linux-amd64
GOOS=darwin GOARCH=amd64 go build -ldflags "$COMMON_FLAGS" -o hossted-darwin-amd64

- name: Test Version of binary file
run: |
echo "Checking version of binary file..."
chmod 777 hossted-linux-amd64
./hossted-linux-amd64 version

- name: Upload Linux binary
uses: actions/upload-artifact@v4
with:
name: hossted-linux-amd64
path: ./hossted-linux-amd64
if-no-files-found: error

- name: Upload OSx binary
uses: actions/upload-artifact@v4
with:
name: hossted-darwin-amd64
path: ./hossted-darwin-amd64
if-no-files-found: error

- name: Create GitHub Release
if: ${{ inputs.is-production }}
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
release_name: Release ${{ github.ref_name }}
body: |
Automated release created for tag ${{ github.ref_name }}.
This release includes the latest production build.
draft: true
prerelease: false

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,3 +146,4 @@ Built on 2022-04-10 (24b8619)
- appName: demoapp
appPath: /opt/demoapp
```
t1
14 changes: 10 additions & 4 deletions cmd/activate.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ import (
"github.com/spf13/cobra"
)

var activate_type, releaseName, composeFilePath string
var (
activate_type, releaseName, composeFilePath, token, org_id string
)

// registerCmd represents the register command
var activateCmd = &cobra.Command{
Expand All @@ -29,15 +31,15 @@ hossted activate

if activate_type == "k8s" {

err := service.ActivateK8s(releaseName)
err := service.ActivateK8s(releaseName, token, org_id)
if err != nil {
fmt.Println(err)
}
return
} else if activate_type == "compose" {
// hossted.SetUpdates(ENVIRONMENT, true)
// hossted.SetMonitoring(ENVIRONMENT, true)
err := compose.ActivateCompose(composeFilePath)
err := compose.ActivateCompose(composeFilePath, token, org_id)
if err != nil {
fmt.Println(err)
return
Expand All @@ -60,7 +62,11 @@ hossted activate

func init() {
rootCmd.AddCommand(activateCmd)
activateCmd.Flags().StringVarP(&activate_type, "type", "t", "", "supported env type k8s|docker")
activateCmd.Flags().StringVarP(&activate_type, "type", "t", "", "supported env type k8s|compose")
activateCmd.Flags().StringVarP(&token, "token", "", "", "token for orgID")
activateCmd.Flags().StringVarP(&org_id, "org_id", "", "", "orgID")
activateCmd.Flags().StringVar(&releaseName, "release_name", "", "release name (optional)")
activateCmd.Flags().StringVar(&composeFilePath, "compose_filepath", "", "compose filepath (optional)")

activateCmd.MarkFlagRequired("type")
}
22 changes: 3 additions & 19 deletions hossted/reconcileCompose.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,18 @@ package hossted
import (
"fmt"

"github.com/hossted/cli/hossted/service/common"
"github.com/hossted/cli/hossted/service/compose"
)

func ReconcileCompose() error {
emailID, err := common.GetEmail()
if err != nil {
return err
}

resp, err := common.GetLoginResponse()
if err != nil {
return err
}

// get OrgID and HosstedApiUrl
orgID, hosstedAPIUrl, projectName, osUUID, err := compose.GetOrgIDHosstedApiUrl()
// get OsInfo
osInfo, err := compose.GetClusterInfo()
if err != nil {
fmt.Println(err)
return err
}

/*
================================ TBD: To be discussed ================================
sendComposeInfo inside compose.ComposeReconciler uses HOSSTED_API_URL env variable which will not
be present during cron ReconcileCompose. So for now, the below function is not sending compose info.
*/
err = compose.ReconcileCompose(osUUID, orgID, emailID, resp.Token, projectName, hosstedAPIUrl, "true")
err = compose.ReconcileCompose(osInfo, "false")
if err != nil {
return err
}
Expand Down
48 changes: 24 additions & 24 deletions hossted/service/activate.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,28 +62,28 @@ type response struct {
}

// ActivateK8s imports Kubernetes clusters.
func ActivateK8s(releaseName string) error {
emailsID, err := getEmail()
if err != nil {
return err
}
func ActivateK8s(releaseName, token, orgID string) error {
// emailsID, err := getEmail()
// if err != nil {
// return err
// }

// getResponse from reading file in .hossted/config.json
resp, err := getLoginResponse()
if err != nil {
return err
}
// resp, err := getLoginResponse()
// if err != nil {
// return err
// }
// validate auth token

err = validateToken(resp)
if err != nil {
return err
}
// err = validateToken(resp)
// if err != nil {
// return err
// }
// handle usecases for orgID selection
orgID, err := useCases(resp)
if err != nil {
return err
}
// orgID, err := useCases(resp)
// if err != nil {
// return err
// }

// prompt user for k8s context
clusterName, err := promptK8sContext()
Expand All @@ -102,18 +102,18 @@ func ActivateK8s(releaseName string) error {
fmt.Println("Standby mode detected")
clientset := getKubeClient()
fmt.Println("Updating deployment....")
err := updateDeployment(clientset, hosstedPlatformNamespace, releaseName+"-controller-manager", emailsID, clusterName, orgID)
err := updateDeployment(clientset, hosstedPlatformNamespace, releaseName+"-controller-manager", "", clusterName, orgID)
if err != nil {
return err
}

config, err := readConfig()
if err != nil {
return err
}
// config, err := readConfig()
// if err != nil {
// return err
// }

fmt.Println("Updating secret....")
err = updateSecret(clientset, hosstedPlatformNamespace, releaseName+"-secret", "AUTH_TOKEN", config.Token)
err = updateSecret(clientset, hosstedPlatformNamespace, releaseName+"-secret", "AUTH_TOKEN", token)
if err != nil {
return err
}
Expand Down Expand Up @@ -147,7 +147,7 @@ func ActivateK8s(releaseName string) error {
return nil
}

err = deployOperator(clusterName, emailsID, orgID, resp.Token)
err = deployOperator(clusterName, "", orgID, token)
if err != nil {
return err
}
Expand Down
Loading