#release-engineering (2020-02)

jenkins_ci All things CI/CD. Specific emphasis on Codefresh and CodeBuild with CodePipeline.

CI/CD Discussions

Archive: https://archive.sweetops.com/release-engineering/

2020-02-05

IckesJ avatar

Any notes on how you guys at Cloud Posse or others that manage many modules as separate repos do your release process? It would be greatly appreciated.

I see the makefile works as the runner for the unit tests which is awesome and I’m assuming happens upon merging to master for module X. But what determines module X is ready to release into an new version? A global find and replace of the old version tag to the new, run all unit & integration tests & if all pass push release?

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

@IckesJ we talk about it here: https://github.com/cloudposse/docs/issues/335

Document our Semver Strategy · Issue #335 · cloudposse/docs

what it's not clear how we currently do versioning why our strategy is unique because we tag every single merge to master our versioning strategy allows us to systematically and consistently in…

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

basically, every time you merge to master, you bump the version.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

bugs = patch releases

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

every other release is a minor release.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

major releases are milestone driven.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

keep in mind that pre-1.0 has a special meaning in semver

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

@Julian Gindi might have some more thoughts on this.

Julian Gindi avatar
Julian Gindi
01:40:19 AM

@Julian Gindi has joined the channel

Santiago Campuzano avatar
Santiago Campuzano

Welcome @Julian Gindi !

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

(he just did a big presentation at a local meetup on semver and when/how to bump versions)

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

IMO, the main purpose of semver is not to communicate the stability of the functionality. that’s almost impossible to guarantee. even a bug fix can be a breaking change for someone else who had a workaround for that bug.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

I assume that every change could be breaking for someone.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

therefore, IMO the purpose behind semver is to pin software so it only changes when you expect it to.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

thus, I hate it when projects don’t cut a release for every merge to master.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

and that’s why I prefer every merge to master to have release so I can gauge our distance from the latest release.

2
Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

git sha’s suck for humans.

Julian Gindi avatar
Julian Gindi

All of this I agree with, I do think you can add safety and a bit of structure to internal API’s and set rules on which services can talk to what, but it’s most powerful when used as a final “resolution” for software and being able to see how things change over time.

Julian Gindi avatar
Julian Gindi

I have a tool to help with this process, but it’s almost identical to what Erik suggested

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

do you have a recording of your talk?

Julian Gindi avatar
Julian Gindi

We do

IckesJ avatar

This is awesome info guys! Thanks & would love to see/hear the recording

Julian Gindi avatar
Julian Gindi

Here is a repo that might “automate” the boring mechanical bits of incrementing semver https://github.com/JulianGindi/auto-semver

JulianGindi/auto-semver

A small python tool that aims to let you focus on writing software, while it versions it for you. - JulianGindi/auto-semver

loren avatar

curious about how this might compare to bumpversion? https://github.com/c4urself/bump2version/

c4urself/bump2version

Version-bump your software with a single command. Contribute to c4urself/bump2version development by creating an account on GitHub.

Julian Gindi avatar
Julian Gindi

That looks like a great package, and seems more mature. I think the only issue I have with it is that it seems to require me to pass in the current, while my script automatically determines that based on git tags. Not sure if this script is able to do that, not clear on first glance.

Julian Gindi avatar
Julian Gindi

My approach was also a bit more simplicity, but I’m going to dig into this tool a bit, I rather use and support a tool that has a larger community if it accomplishes my personal needs

Julian Gindi avatar
Julian Gindi

thus, I hate it when projects don't cut a release for every merge to master. 100% @Erik Osterman (Cloud Posse)

Corey Gale avatar
Corey Gale

• Recording of the whole presentation//vimeo.com/388711413> (including @Julian Gindi’s talk on SemVer)

• Julian’s deck and notes on SemVer//gindi.io/semver.html>

• Industry Updates slides//slides.com/coreygale/west-la-devops-5-versioning#/4>

West LA DevOps #5: Versioningattachment image

A presentation created with Slides.

1
1
2
Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

Thanks @Corey Gale

Corey Gale avatar
Corey Gale

No problem thanks again for all your support!

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

@Julian Gindi did you consider showing a github actions code snippet that can be used to automate the semver stuff with your tool?

Julian Gindi avatar
Julian Gindi

So we have some bits and pieces, but I should 100% add something like that to the repo. My intention was to have it used with CI and it’s certainly how we use it.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)
cloudposse/actions

Our Library of GitHub Actions. Contribute to cloudposse/actions development by creating an account on GitHub.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

we have a lot of auto-* type actions

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

auto-approve, auto-assign, auto-merge, auto-readme, etc

Julian Gindi avatar
Julian Gindi

Perfect place to slot in an auto-semver

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

IckesJ avatar

This actions library is great. I just created a couple days ago to do BulkRepoChanges & pipeline in azdo to be able to do a find and replace in files across all our tf module repos &/or run a cmd like pre-commit run -a….auto creates the branch, pr, etc…i was also wondering how you guys managed hundreds of repos. Digging in reading also brought to light dependabot, i haven’t seen that before…pretty cool as well.

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

yea, dependabot is great and pullreminders

michal.matyjek avatar
michal.matyjek

damn, pullreminders no longer allows signups? any alternative?

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

ahhh bummer!

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)
Pull Reminders: Pull request reminders for Slack & GitHubattachment image

Dev teams at 1,000+ companies like Pivotal, Instacart, and WeWork use Pull Reminders to stay on top of code reviews and ship faster.

IckesJ avatar

oh ya that is nice

IckesJ avatar

@Julian Gindi - nice presentation…I like the aviation angles…I have my instrument rating & loved every second of the learning process.

Julian Gindi avatar
Julian Gindi

@IckesJ nice! Absolutely a goal of mine to finish my private and get instrument one day! Will have to talk more…

1

2020-02-06

jose.amengual avatar
jose.amengual

Hi, does cloudposse/atlantis:latest supports 0.12.16 ? AFAIK it downloads any version, right ?

Andriy Knysh (Cloud Posse) avatar
Andriy Knysh (Cloud Posse)

it can download TF versions specified in config

Andriy Knysh (Cloud Posse) avatar
Andriy Knysh (Cloud Posse)

in our Docker container, we install atlantis and TF version what we need, and atlantis just uses it

jose.amengual avatar
jose.amengual

is that by env variable ?

jose.amengual avatar
jose.amengual

ENV DEFAULT_TERRAFORM_VERSION=0.12.16

jose.amengual avatar
jose.amengual

or :

jose.amengual avatar
jose.amengual

AVAILABLE_TERRAFORM_VERSIONS

jose.amengual avatar
jose.amengual

although AVAILABLE_TERRAFORM_VERSIONS contains DEFAULT_TERRAFORM_VERSIONand then it goes on the loop to download the versions

jose.amengual avatar
jose.amengual
cloudposse/atlantis

GitOps for Teams (experimental hard fork of atlantis) - cloudposse/atlantis

jose.amengual avatar
jose.amengual

my Dockerfile :

FROM segment/chamber:2 AS chamber
FROM cloudposse/atlantis:latest

# install terraform binaries
ENV DEFAULT_TERRAFORM_VERSION=0.12.16
COPY --from=chamber /chamber /bin/chamber
COPY atlantis-repo-config.yaml /
ENTRYPOINT ["/bin/chamber", "exec", "ecs-atlantis-test", "--", "docker-entrypoint.sh", "server"]
jose.amengual avatar
jose.amengual

I just copy the command from the fork that downloads terraform

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

I don’t think we shop an atlantis container

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

If we do, it is out of date or not maintained

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

We distribute Atlantis as an alpine package

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

That we install like the other tools

jose.amengual avatar
jose.amengual

so you are saying that the image in docker hub is unmaintained and I should not use it ?

jose.amengual avatar
jose.amengual

so to use the fork you guys have I will have to build from the repo/fork you guys have

jose.amengual avatar
jose.amengual

is that a correct assumption ?

jose.amengual avatar
jose.amengual

@Erik Osterman (Cloud Posse)

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

Yes, and let me explain

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

our fundamental position on this is that running “alantis” from some kind of shared docker image is more or less useless

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

it doesn’t solve how custom providers get installed

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

it doesn’t solve how any other tools or dependencies will get installed

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

if someone depends on helm, helmfile, terragrunt etc…. it won’t do much good

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

that’s why we distribute the package instead so that it can be installed in a docker image you control

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

In our model, we use cloudposse/geodesic as our base image (which is up to date)

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

and then add the exrta tool we depend on.

jose.amengual avatar
jose.amengual

I completely agree, make sense

jose.amengual avatar
jose.amengual

and you guys do no host those alpine packages I guess

jose.amengual avatar
jose.amengual

so I will have to build this : https://github.com/cloudposse/atlantis

cloudposse/atlantis

GitOps for Teams (experimental hard fork of atlantis) - cloudposse/atlantis

jose.amengual avatar
jose.amengual

myself

jose.amengual avatar
jose.amengual

if I want to use your fork

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

oh we do!

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)
cloudposse/packages

Cloud Posse installer and distribution of native apps, binaries and alpine packages - cloudposse/packages

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

Add something like this to your dockerfile

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)
# Install the cloudposse alpine repository
ADD <https://apk.cloudposse.com/[email protected]> /etc/apk/keys/
RUN echo "@cloudposse <https://apk.cloudposse.com/3.11/vendor>" >> /etc/apk/repositories
Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

then you can do apk add cloudposse-atlantis@cloudposse

jose.amengual avatar
jose.amengual

ahhhhh cool

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

where cloudposse-atlantis is the naem of our package from our fork

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

Also, check out the other packages we have

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

dozens and dozens

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

thanks to @Zachary Loeber

jose.amengual avatar
jose.amengual

this is awesome, well I’m glad I got it working with the old image at least to do my demo

1
jose.amengual avatar
jose.amengual

now I will update

jose.amengual avatar
jose.amengual

it was VERY hard to get my head around this

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

(i know)

jose.amengual avatar
jose.amengual

and….I might have found a bug

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

a master class in ECS/Atlatnis/codebuild/modules/etc

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

I would like it to be simpler

jose.amengual avatar
jose.amengual

I think there is a problem with the example….

jose.amengual avatar
jose.amengual
cloudposse/terraform-aws-ecs-atlantis

Terraform module for deploying Atlantis as an ECS Task - cloudposse/terraform-aws-ecs-atlantis

jose.amengual avatar
jose.amengual

well what happens is that the ingress module creates a TG and the alb module too

jose.amengual avatar
jose.amengual

but the alb module listener rule uses the alb-default TG

jose.amengual avatar
jose.amengual
cloudposse/terraform-aws-alb-ingress

Terraform module to provision an HTTP style ingress rule based on hostname and path for an ALB using target groups - cloudposse/terraform-aws-alb-ingress

jose.amengual avatar
jose.amengual

I think so….

jose.amengual avatar
jose.amengual

I got pretty confused when following the dependencies

jose.amengual avatar
jose.amengual

I think I did something wrong

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

did you figure it out?

jose.amengual avatar
jose.amengual

I have no tried yet again, I’m going to do some cleanup and see but I think this could be the ingress module. I created a PR long ago that was merges to allow to pass a target group arn in case the target groups were created by other means, so i think this could be a case were the alb module is creating the TG and the ingress module too.

jose.amengual avatar
jose.amengual

so maybe is a matter of passing the TG arn

jose.amengual avatar
jose.amengual

but I need to test my theory

2020-02-07

Zachary Loeber avatar
Zachary Loeber
12:48:55 AM

@Zachary Loeber has joined the channel

2020-02-08

2020-02-12

2020-02-18

roth.andy avatar
roth.andy

Thoughts? My team is finally picking up on my “dadsgarage” idea. This is my writeup so far.

roth.andy avatar
roth.andy

@Erik Osterman (Cloud Posse)

roth.andy avatar
roth.andy

@Pierre Humberdroz

Santiago Campuzano avatar
Santiago Campuzano

How would you you manage the versioning nightmare/hell ?

Santiago Campuzano avatar
Santiago Campuzano

Scores of Terraform versions, Java versions … etc….

roth.andy avatar
roth.andy

@Santiago Campuzano By having an ARG variable for the version of each tool in the dockerfile. That way, a team can take it and pin whichever versions they need for their own purposes

Santiago Campuzano avatar
Santiago Campuzano

I mean… having a DevOps Swiss Army Knife Container is a terrific idea… but when there’s a super complex environment like my company,, it can be trickier

Santiago Campuzano avatar
Santiago Campuzano

@roth.andy Is the container gonna download and install the tools on the Fly depending on those ARGs ?

Chris Fowles avatar
Chris Fowles

@Santiago Campuzano - i think the pattern is fine; you just need to define the boundaries. you could have team or product based swiss army knives - if you can get away with one for the whole company great.

1
roth.andy avatar
roth.andy

No, your team would build the container with the versions you want specified, and push the image to a docker registry

Chris Fowles avatar
Chris Fowles

having a bunch of smaller tooling containers is usually going to end up a bigger management overhead

Santiago Campuzano avatar
Santiago Campuzano

@Chris Fowles We have a Docker Container like that for Terraform/Terragrunt …

Santiago Campuzano avatar
Santiago Campuzano

And all the different versions of Terraform Providers.. that have worked well so far

Santiago Campuzano avatar
Santiago Campuzano

@roth.andy It would be nice if you share with us any work/advances on your idea

Santiago Campuzano avatar
Santiago Campuzano

I’ll be glad to give you feedback

Chris Fowles avatar
Chris Fowles

becomes really powerful when you start using the same container for things like this https://code.visualstudio.com/docs/remote/containers

Developing inside a Container using Visual Studio Code Remote Developmentattachment image

Developing inside a Container using Visual Studio Code Remote Development

2
Santiago Campuzano avatar
Santiago Campuzano

Yep… I’ve seen that pattern.. an IDE with all it’s dependencies inside a container….

Santiago Campuzano avatar
Santiago Campuzano

That one is great…. Onboarding a new Developer in a matter of mins…

Santiago Campuzano avatar
Santiago Campuzano

At least the Tooling/Env part…

Chris Fowles avatar
Chris Fowles

yeh it’s pretty sweet

MattyB avatar

I was tasked with this at my last company. The product had a super complex architecture. When I joined I had just 3 years of experience. Ramp up time for a new developer was typically 6-12 months, no joke. When somebody tried to dive in it they had to ask me or a senior dev what the hell was going on. I’m not saying it’s a bad idea at all. Just that it can be. If I was in charge I’d say to force each team member to do a part of it so that you’re not in charge of the whole thing.

MattyB avatar

I want to understand the entire system and not just small pieces. If you have team members that only care about certain parts then I think you’re asking for trouble. Let us know how it goes!

1
roth.andy avatar
roth.andy

@Santiago Campuzano I started an OSS project a while back. @Pierre Humberdroz has used it and contributed it.

https://github.com/dadsgarage/dadsgarage

dadsgarage/dadsgarage

Container version of Dad&#39;s garage. It&#39;s full of tools, you spend lots of time in it, and you use it to build great things. https://hub.docker.com/r/dadsgarage/dadsgarage - dadsgarage/dadsga…

Chris Fowles avatar
Chris Fowles

@MattyB - i think it’s important to acknowledge that the more junior a member is the less instinctive understanding they have based on experience and so it’s harder for them to understand the whole system. there’s no excuse for senior members of a team to not have a big picture view however

MattyB avatar

Fair point! There are quite a few variables that could cause it to succeed vs fail. You know your team better than I do. I’d like to think if I was in charge of doing that at my current job I’d be in a better position to help others help themselves

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

@roth.andy I think that captures it well. In terms of managing multiple versions of software, we use the “alternatives” system for that, as well as build our own packages.

roth.andy avatar
roth.andy

@Erik Osterman (Cloud Posse) can you point me at an example? I’m familiar with the “java-alternatives” package. Is that what you are talking about? I didnt realize it could be used for other arbitrary tools

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)


How would you you manage the versioning nightmare/hell ?
• no silver bullet, but it’s not a new problem either • reduce the dimensions for which you allow changes to vary • pin docker images (devops) to releases for stability • use package manager (OS have been doing this for years), with alternatives system • use PATH strategically (e.g. PATH=$PATH:/usr/local/terraform/0.12.19/bin/)

Santiago Campuzano avatar
Santiago Campuzano

Alternatives can be used for any binary @roth.andy

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)
cloudposse/packages

Cloud Posse installer and distribution of native apps, binaries and alpine packages - cloudposse/packages

Santiago Campuzano avatar
Santiago Campuzano

Python, Golang, Java, etc….

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

here’s where we have our packages. our helm2 and helm3 packages are examples that have alternatives hooked up. our alpine distro is a little bit unconventional as we’ve templatized the APKBUILD template.

Pierre Humberdroz avatar
Pierre Humberdroz

Depending on how your work I would add that a simple smoke test for some components are needed. Like does it still compile a simple java project for example. Just to make sure that every is kinda working.

1
Pierre Humberdroz avatar
Pierre Humberdroz

In regards to managing the versions of external dependencies this has to be done anyways if you have different containers.

@ a previous company our build container had a entry point script which would make a request to a file and to check if minimal version requirements are satisfied we did this to prevent exploitable software to run inside our critical toolchain there was a semver checker and a blacklist mode.

This learning we made after some internal tool got compromised by an ex engineer. (long story)

Pierre Humberdroz avatar
Pierre Humberdroz

regarding that this is something to keep in mind and might not even be important at all right now.

back than I wish it just told me hey upgrade your build container version to X to get latest features of Y .. it was writen in Go and super simple to use.

2020-02-20

Neil Gealy avatar
Neil Gealy

What are some of the best tools to automate application deployments to Kubernetes? I was looking at Spinnaker and Jenkins X. Has to be cloud-provider agnostic

Santiago Campuzano avatar
Santiago Campuzano

Neil…. Actually Spinnaker and Jenkins X is a good marriage. Spinnaker is a CD tool, whereas Jenkins X is a powerful and stable CI tool…..

Santiago Campuzano avatar
Santiago Campuzano

I’ve been researching that couple for a while in my company …

Zachary Loeber avatar
Zachary Loeber

Jenkins-x is heavily opinionated though

Santiago Campuzano avatar
Santiago Campuzano

Why ? @Zachary Loeber ?

Zachary Loeber avatar
Zachary Loeber

in a good way but still may be hard to tear gitflow from some dev teams

Zachary Loeber avatar
Zachary Loeber

I’ve been looking at jx pretty hard lately and I think I’m onboard with their flow for development but for some teams and deployments its going to be a hard sell I think.

Zachary Loeber avatar
Zachary Loeber

jx seems to be the manifestation of the Accelerate book

Zachary Loeber avatar
Zachary Loeber

it’s also in a bit of flux from what I see. documentation for deployment into clusters is already out of date so most tutorials from just last year are deprecated already.

Zachary Loeber avatar
Zachary Loeber

its also cloud native so if you have anything hosted on prem it becomes less magical (at least from what I’ve seen)

Santiago Campuzano avatar
Santiago Campuzano

We’ve been PoCing a lot of tools…

Santiago Campuzano avatar
Santiago Campuzano

The last one was CodeFresh…. .

Zachary Loeber avatar
Zachary Loeber

just my 2 cents on jx

Santiago Campuzano avatar
Santiago Campuzano

We are very disappointed

Santiago Campuzano avatar
Santiago Campuzano

We are right now using Jenkins (legacy) and Drone.io

Zachary Loeber avatar
Zachary Loeber

really? I’ve yet to dig into codefresh

Zachary Loeber avatar
Zachary Loeber

lots of people swear by it though

Zachary Loeber avatar
Zachary Loeber

I was looking into maybe GoCD or Tekton for pipelines (jx wraps around Tekton)

Santiago Campuzano avatar
Santiago Campuzano

Hmmmm don’t know… our experience was not that good… We were expecting too much I think …

Zachary Loeber avatar
Zachary Loeber

isn’t drone pretty good?

Santiago Campuzano avatar
Santiago Campuzano

Drone is pretty stable…. it has a good learning curve for us DevOps

Santiago Campuzano avatar
Santiago Campuzano

It’s just that we are hitting some limits in terms of GitOps and K8S

Zachary Loeber avatar
Zachary Loeber

sorry, I’m looking at doing releases via argoCD (or flux or similar) for kube deployments and still vetting out the CI platform

Santiago Campuzano avatar
Santiago Campuzano

Question about Tekton

Santiago Campuzano avatar
Santiago Campuzano

Is it a fully fledged CI/CD tool for K8S apps ?

Zachary Loeber avatar
Zachary Loeber

It is a pipeline tool that I believe still is in alpha or beta but looks really promising to me. Only issue I see is having ot manage the backend cluster/resources it uses

Zachary Loeber avatar
Zachary Loeber

jx orchestrates Tekton (at least that’s what I see it doing)

Santiago Campuzano avatar
Santiago Campuzano

Hmmmm ok… we were exploring FluxCD as well… but we found it kind of overcomplicated

Zachary Loeber avatar
Zachary Loeber

But I really really like the idea of platform independent declarative pipelines

Zachary Loeber avatar
Zachary Loeber

I was looking at flux initially but shifted over to ArgoCD. I think they are combining efforts though

Santiago Campuzano avatar
Santiago Campuzano

Nice !! Gonna explore ArgoCD then ….

Zachary Loeber avatar
Zachary Loeber

worth a peek at least to answer your original question though, I don’t know that there is a best tool ATM. Seems to be an emerging space

Zachary Loeber avatar
Zachary Loeber

I’ll say I’m not very fond of devployment though (my just now created word for when developers directly deploy to kube clusters)

Zachary Loeber avatar
Zachary Loeber

jx does that only a little bit with preview deployments

Neil Gealy avatar
Neil Gealy

I briefly looked at Codefresh but I couldn’t get it to connect to our Azure account for some reason. @Zachary Loeber Youre right that jenkins x is very opinionated and in flux. Documentation is outdated already. Also a lot of these tools rely on helm, which we recently upgraded to v3 and they only support helm v2. I’m going to check out drone and AgroCD

Neil Gealy avatar
Neil Gealy

All of our builds are being done with Github Actions, so i really just need a way to deploy now

Alex Siegman avatar
Alex Siegman

What’s stopping you from deploying with Github Actions as well?

Neil Gealy avatar
Neil Gealy

I just haven’t figured out how to do it with a manual trigger. We aren’t confident to deploy to production without a manual approval

Neil Gealy avatar
Neil Gealy

I’m really liking Argo-cd. thanks for recommending it

Zack Hewison avatar
Zack Hewison

If it doesn’t have to be self-hosted, gitlab ci/cd supports manual triggers.

I also couldn’t get behind not having at least the option to create a manual trigger.

Currently in my org we’re using Jenkins from stable/jenkins helm chart

Implementing our own GitOps with https://github.com/FairwindsOps/rok8s-scripts

It’s still in flux though, I’m working on “dark launch” Right now, we do devployments () with terraform

FairwindsOps/rok8s-scripts

Opinionated scripts for managing application deployment lifecycle in Kubernetes - FairwindsOps/rok8s-scripts

Zachary Loeber avatar
Zachary Loeber

Fairwinds makes some excellent tools, not sure how I missed this one, thanks for sharing

2020-02-21

Erik Osterman (Cloud Posse) avatar
Erik Osterman (Cloud Posse)

@scorebot help keep tabs!

scorebot avatar
scorebot
05:50:17 PM

@scorebot has joined the channel

scorebot avatar
scorebot
05:50:17 PM

Thanks for adding me emojis used in this channel are now worth points.

scorebot avatar
scorebot
05:50:18 PM

Wondering what I can do? try @scorebot help

2020-02-25

Laurynas avatar
Laurynas

Hi, what do you use for application deployment to ECS? we use .NET core docker containers

2020-02-26

    keyboard_arrow_up