Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
devtool
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
10
Issues
10
List
Boards
Labels
Service Desk
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
k8s
devtool
Commits
9f284c27
Commit
9f284c27
authored
Mar 20, 2019
by
Christopher Harm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding ci build and deploy commands
parent
d957d9f0
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
225 additions
and
0 deletions
+225
-0
cmd/ci.go
cmd/ci.go
+55
-0
cmd/ci_build.go
cmd/ci_build.go
+82
-0
cmd/ci_deploy.go
cmd/ci_deploy.go
+88
-0
No files found.
cmd/ci.go
0 → 100644
View file @
9f284c27
// Copyright © 2019 NAME HERE <EMAIL ADDRESS>
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://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.
package
cmd
import
(
"github.com/spf13/cobra"
)
var
dockerRegistry
string
var
dockerRegistryNamespace
string
var
imageTag
string
var
environmentSuffix
string
// configCmd represents the config command
var
ciCmd
=
&
cobra
.
Command
{
Use
:
"ci"
,
Short
:
"Build tools for the CI system"
,
// Run: func(cmd *cobra.Command, args []string) {
// fmt.Println("config called")
// },
}
func
init
()
{
rootCmd
.
AddCommand
(
ciCmd
)
// Here you will define your flags and configuration settings.
// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
// configCmd.PersistentFlags().String("foo", "", "A help for foo")
ciCmd
.
PersistentFlags
()
.
StringVarP
(
&
dockerRegistry
,
"registry"
,
"r"
,
""
,
"url of the docker registry"
)
ciCmd
.
PersistentFlags
()
.
StringVarP
(
&
dockerRegistryNamespace
,
"registry-namespace"
,
"n"
,
""
,
"namespace in the docker registry"
)
ciCmd
.
PersistentFlags
()
.
StringVarP
(
&
imageTag
,
"image"
,
"i"
,
""
,
"image tag for docker"
)
ciCmd
.
PersistentFlags
()
.
StringVarP
(
&
environmentSuffix
,
"environment"
,
"e"
,
""
,
"environment suffix to append to helm release name"
)
ciCmd
.
MarkPersistentFlagRequired
(
"registry"
)
ciCmd
.
MarkPersistentFlagRequired
(
"registry-namespace"
)
ciCmd
.
MarkPersistentFlagRequired
(
"image"
)
// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
// configCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}
cmd/ci_build.go
0 → 100644
View file @
9f284c27
// Copyright © 2019 NAME HERE <EMAIL ADDRESS>
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://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.
package
cmd
import
(
"git.psu.edu/k8s/devtool/config"
"git.psu.edu/k8s/devtool/environment"
"github.com/fatih/color"
"github.com/spf13/cobra"
)
// buildCmd represents the build command
var
ciBuildCmd
=
&
cobra
.
Command
{
Use
:
"build"
,
Short
:
"build the application within the CI system"
,
RunE
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
conf
,
err
:=
config
.
New
(
configFile
)
if
err
!=
nil
{
color
.
New
(
color
.
FgRed
)
.
PrintFunc
()(
"Error reading configuration file: %s"
,
configFile
)
return
err
}
err
=
buildCiDocker
(
conf
)
if
err
!=
nil
{
color
.
Red
(
"Failed to build docker image."
)
return
err
}
return
nil
},
}
func
init
()
{
ciCmd
.
AddCommand
(
ciBuildCmd
)
// Here you will define your flags and configuration settings.
// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
// buildCmd.PersistentFlags().String("foo", "", "A help for foo")
// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
// buildCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}
func
buildCiDocker
(
config
config
.
Config
)
error
{
color
.
Blue
(
"Building Docker Containers"
)
for
_
,
deployable
:=
range
config
.
Deployables
{
dockerfile
:=
deployable
.
Dockerfile
image
:=
deployable
.
Name
dockerImage
:=
dockerRegistry
+
"/"
+
dockerRegistryNamespace
+
"/"
+
image
dockerTag
:=
dockerImage
+
":"
+
imageTag
color
.
New
(
color
.
FgGreen
)
.
PrintFunc
()(
"Building: "
,
dockerTag
)
err
:=
environment
.
Run
(
true
,
"docker"
,
"build"
,
"-t"
,
dockerTag
,
"-f"
,
dockerfile
,
"."
)
if
err
!=
nil
{
return
err
}
color
.
New
(
color
.
FgGreen
)
.
PrintFunc
()(
"Pushing Docker image: "
,
dockerTag
)
err
=
environment
.
Run
(
true
,
"docker"
,
"push"
,
dockerImage
)
if
err
!=
nil
{
return
err
}
}
return
nil
}
cmd/ci_deploy.go
0 → 100644
View file @
9f284c27
// Copyright © 2019 NAME HERE <EMAIL ADDRESS>
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://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.
package
cmd
import
(
"os"
"git.psu.edu/k8s/devtool/config"
"git.psu.edu/k8s/devtool/environment"
"github.com/fatih/color"
"github.com/spf13/cobra"
)
// buildCmd represents the build command
var
ciDeployCmd
=
&
cobra
.
Command
{
Use
:
"deploy"
,
Short
:
"deploy the application within the CI system"
,
RunE
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
conf
,
err
:=
config
.
New
(
configFile
)
if
err
!=
nil
{
color
.
New
(
color
.
FgRed
)
.
PrintFunc
()(
"Error reading configuration file: %s"
,
configFile
)
return
err
}
err
=
fluxDeployCi
(
conf
)
if
err
!=
nil
{
color
.
Red
(
"Failed to build docker image."
)
return
err
}
return
nil
},
}
func
init
()
{
ciCmd
.
AddCommand
(
ciDeployCmd
)
// Here you will define your flags and configuration settings.
// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
// buildCmd.PersistentFlags().String("foo", "", "A help for foo")
// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
// buildCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}
func
fluxDeployCi
(
config
config
.
Config
)
error
{
color
.
Blue
(
"Updating Flux Releases"
)
for
_
,
deployable
:=
range
config
.
Deployables
{
image
:=
deployable
.
Name
dockerImage
:=
dockerRegistry
+
"/"
+
dockerRegistryNamespace
+
"/"
+
image
dockerTag
:=
dockerImage
+
":"
+
imageTag
var
releaseName
string
if
environmentSuffix
==
""
{
releaseName
=
deployable
.
Name
}
else
{
releaseName
=
deployable
.
Name
+
"-"
+
environmentSuffix
}
color
.
Blue
(
"Updating Flux Release:"
,
releaseName
)
os
.
Setenv
(
"KUBE_SERVICE_NAME"
,
releaseName
)
os
.
Setenv
(
"DOCKER_IMAGE_TAG"
,
dockerTag
)
os
.
Setenv
(
"CI_PROJECT_NAME"
,
image
)
err
:=
environment
.
Run
(
true
,
"fluxhelmrelease"
)
if
err
!=
nil
{
color
.
Red
(
"fluxhelmrelease error."
)
return
err
}
}
return
nil
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment