Permalink
Branch: master
Commits on Feb 9, 2019
  1. lint: vetshadow fixes + ignore 'err' shadowing

    kanatohodets committed Feb 9, 2019
    vetshadow can be very useful. However, shadowing 'err' is incredibly
    common, rarely harmful, and requires writing non-idiomatic Go in order
    to avoid. So, let's filter that out.
  2. lint: fix missing error checks (errcheck)

    kanatohodets committed Feb 9, 2019
    One minor bug fixed: bash filename autocompletion for shipperctl apply
    was not working.
    
    One minor judgement call: if we can't set up /metrics, this is a fatal
    error.
    
    Examples:
    
    cmd/shipper-state-metrics/main.go:95:21⚠️ error return value not
    checked (srv.ListenAndServe()) (errcheck)
    
    cmd/shipper/main.go:255:20⚠️ error return value not checked
    (srv.ListenAndServe()) (errcheck)
    
    cmd/shipperctl/cmd/apply.go:47:27⚠️ error return value not
    checked (applyCmd.MarkFlagFilename("config", "yaml")) (errcheck)
    
    cmd/shipperctl/cmd/apply.go:48:27⚠️ error return value not
    checked (applyCmd.MarkFlagFilename("kube-config", "yaml")) (errcheck)
    
    cmd/shipperctl/cmd/apply.go:387:16⚠️ error return value not
    checked (yaml.Unmarshal(configBytes, configuration)) (errcheck)
  3. lint: unreachable cases in type switches (staticcheck SA4020)

    kanatohodets committed Feb 9, 2019
    The patch in traffic/errors.go is a targeted fix; the larger scale
    solution is to implement structured errors throughout Shipper.
    
    (kudos to @ksurent, who implemented this new check in staticcheck)
    
    Examples:
    
    pkg/testing/util.go:182:2⚠️ unreachable case clause:
    github.com/bookingcom/shipper/vendor/k8s.io/client-go/testing.CreateAction
    will always match before
    github.com/bookingcom/shipper/vendor/k8s.io/client-go/testing.UpdateAction
    (SA4020) (staticcheck)
    
    pkg/testing/util.go:197:2⚠️ unreachable case clause:
    github.com/bookingcom/shipper/vendor/k8s.io/client-go/testing.GetAction
    will always match before
    github.com/bookingcom/shipper/vendor/k8s.io/client-go/testing.DeleteAction
    (SA4020) (staticcheck)
  4. lint: skip ignored receivers (staticcheck ST1006)

    kanatohodets committed Feb 9, 2019
    Examples:
    
    cmd/shipper-state-metrics/main.go:119:7⚠️ receiver name should
    not be an underscore, omit the name if it is unused (ST1006)
    (staticcheck)
    
    cmd/shipper/main.go:234:7⚠️ receiver name should not be an
    underscore, omit the name if it is unused (ST1006) (staticcheck)
  5. lint: style fixes for error strings (staticcheck ST1005)

    kanatohodets committed Feb 9, 2019
    Examples:
    
    pkg/chart/cache/cache.go:94:20⚠️ error strings should not end
    with punctuation or a newline (ST1005) (staticcheck)
    
    pkg/clusterclientstore/queue.go:48:37⚠️ error strings should not
    be capitalized (ST1005) (staticcheck)
  6. lint: simplify loop declaration (staticcheck S1005)

    kanatohodets committed Feb 8, 2019
    Example:
    
    pkg/controller/traffic/pod_label_shifter.go:55:15⚠️ should omit
    value from range; this loop is equivalent to `for cluster := range ...`
    (S1005) (staticcheck)
Commits on Feb 8, 2019
  1. ci: update metalinter config

    kanatohodets committed Feb 8, 2019
    megacheck was merged into staticcheck
Commits on Jan 25, 2019
  1. codegen: re-run codegen to update copyright date

    kanatohodets committed Jan 25, 2019
Commits on Dec 24, 2018
  1. shipperctl: sync CRD openAPI validation with yaml

    kanatohodets committed Dec 21, 2018
Commits on Dec 20, 2018
  1. readme: add note about Tiller

    kanatohodets committed Dec 20, 2018
    (or lack thereof)
Commits on Dec 19, 2018
  1. docs: add note about issue GKE cluster names

    kanatohodets committed Dec 19, 2018
    shipperctl's usage of the context name for the Cluster object fails if that context name is not an acceptable Kubernetes object name, as is the case in GKE clusters and their underscores.
    
    This helps people work around the issue in #61, but a better fix will be for shipperctl to give immediate feedback when it detects that issue.
Commits on Dec 10, 2018
  1. docs: fix contact links

    kanatohodets committed Dec 10, 2018
  2. shipperctl: add support for external auth providers

    kanatohodets committed Dec 10, 2018
    This allows it to work with, for example, GKE clusters with the 'gcp'
    auth provider in ~/.kube/config.
    
    Also tweak the quick install docs to mention that you need to be a real
    cluster-admin. On GKE you need to create a clusterrolebinding first;
    otherwise you see errors that indicate trying to create the new Shipper
    clusterroles is privilege escalation.
    
    This commit includes a giant pile of new stuff in vendor: this is
    everything all of the cloud providers for their auth plugins.
  3. ci: don't skip tags

    kanatohodets committed Dec 10, 2018
    Previous change to build docker images on tags was early-exiting because
    the branch wasn't master.
  4. docs: limitations

    kanatohodets committed Dec 9, 2018
  5. docs: swap 'install' for 'developer'

    kanatohodets committed Dec 9, 2018
    this can become the tree for contributor docs
  6. docs: shift rollout example to user guide

    kanatohodets committed Dec 9, 2018
    And migrate some content from the API reference style rollout doc that
    we already had
  7. Dockerfiles: add CA certs, remove PATH truncation

    kanatohodets committed Dec 9, 2018
    Forcing PATH like that makes the container feel very odd if you exec
    into it. CA certs are nice if you want to download Helm charts over SSL.
Commits on Dec 9, 2018
  1. README update

    kanatohodets committed Dec 9, 2018
Commits on Nov 23, 2018
  1. controllers: replace 'shipper.booking.com/v1alpha1' with constant (#49)

    kanatohodets authored and icanhazbroccoli committed Nov 23, 2018
    shipper.SchemeGroupVersion is less error-prone
Commits on Nov 22, 2018
  1. e2e: don't hardcode test region (#50)

    kanatohodets authored and icanhazbroccoli committed Nov 22, 2018
    read it from the cluster object fetched by name
    
    along the way, change 'target' to 'app' in cluster naming in E2E args
Commits on Nov 7, 2018
  1. ci: change to microk8s and k8s 1.11

    kanatohodets committed Nov 7, 2018
  2. api: v1 -> v1alpha1

    kanatohodets committed Nov 6, 2018
    When I created the types initially, I was unfamiliar with the
    significance of picking a particular API version. As a result, I picked
    'v1'. This is not where Shipper is at the moment: we firmly expect some
    of our APIs to grow and evolve, potentially drastically, as it matures.
    
    One editorial decision: 'shipperv1' was renamed to 'shipper', not
    'shipperv1alpha1'. This is consistent with K8s controllers as far as
    I can tell.
    
    Note: this patch assumes a clean cluster, and hence 'v1' is not listed
    in the CRD 'versions' array. This is in the interest of keeping the
    damage from my early 'v1' decision limited to Booking's clusters; we'll
    apply an internal patch to the CRD to support both v1 and v1alpha1 while
    we migrate "backwards."
Commits on Nov 5, 2018
  1. strategy: fix log message for empty env check

    kanatohodets committed Nov 5, 2018
  2. driveby: remove old "sanity" cmd

    kanatohodets committed Nov 3, 2018
    Caused a build failure; these days I think we're confident enough in the
    codegen process to not need this.
  3. hack: add migration script for releases

    kanatohodets committed Nov 3, 2018
    This script just _copies_ the .metadata.environment to .spec. Once the
    clusters are running 1.11, the metadata section will be naturally
    deleted.
  4. apis: move 'Release.Meta.Environment' to 'Release.Spec.Environment'

    kanatohodets committed Nov 3, 2018
    Kubernetes 1.11 introduces a large set of improvements for CRDs.
    However, one of them is stricter validation of the 'metadata' field of
    CRD instances: it will drop any unknown keys from the 'metadata' object
    before storage.
    
    As a result, Release objects land in the cluster without any
    Environment. This Release is useless for the Schedule and Strategy
    controllers, and because it does not match the Application template,
    Shipper creates a new Release; ultimately this turns into a tight loop
    of creating bogus Releases. Suboptimal.
    
    This patch moves the 'environment' portion of Release objects to the
    'spec'. We originally did not put 'Environment' into the spec because it
    was meant to be immutable, and not part of the user-facing command
    language -- we appreciated a 'spec' section that consisted of nothing but
    the user control 'targetStep'.
    
    While well-intentioned, this was likely a bad call, since it makes it
    awkward to consider Releases generated by hand, without the control of
    an Application object. We can solve the immutability by introducing an
    admission controller, and trust our users to be smart about which fields
    are run-time-editable.
    
    Note: this requires a migration script to run against the management
    clusters between shutting down the previous version of Shipper and
    starting this one: the script should copy '.metadata.environment' to
    '.spec.environment' for all existing Releases.
    
    I decided to do this as a migration script rather than building
    a conversion into Shipper itself because there's currently no location
    in Shipper which regularly processes and updates all existing Releases.
    I expect this to change as we look towards merging the Schedule and
    Strategy controllers into the Release controller.
  5. driveby: fix vet failures

    kanatohodets committed Nov 2, 2018
    Go 1.11 runs 'go vet' by default when you run 'go test'. Not yet sure why
    our normal pipeline didn't catch these.