Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

Epic - Improve development & testing infrastructure #2647

Closed
11 tasks done
marccarre opened this issue Nov 15, 2016 · 7 comments
Closed
11 tasks done

Epic - Improve development & testing infrastructure #2647

marccarre opened this issue Nov 15, 2016 · 7 comments
Assignees
Milestone

Comments

@marccarre
Copy link
Contributor

marccarre commented Nov 15, 2016

Summary

Re-factor the current smoke tests in order to:

  • better re-use provisioning & configuration "modules" / "APIs"
  • run integration tests on top of these layers
  • run cross-version tests on top of these layers
  • run stress tests on top of these layers
  • be able to easily spawn development & manual testing environments.

This should hopefully:

  • lead to a nicer development & testing experience
  • boost Weave Net developer productivity
  • enabler richer testing scenarios.
+------------------+ +-----------------+ +-----------------------+ +---------------------+
| make stress-test | | make cross-test | | make integration-test | | Weave Net developer |
+-------+----------+ +--------+--------+ +--------+--------------+ +--+--------------+---+
        |                     |                   |                   |              |
        | +-------------------+-----------------+ |                   |              |
        | | Cartesian-product of deps. versions | |                   |              |
        | +-------------------+-----------------+ |                   |              |
        |                      \                  |                   |              |
+-------+------+                \        +--------+----------+        |              |
| Stress Tests |                 `-------+ Integration Tests |        |              |
+-------+------+                         +--------+----------+        |              |
        |                                         |                   |              |
+-------+-----------------------------------------+-------------------+---+          |
|          Configuration (Go, Docker, K8S, etc. via Ansible)              |          |
+-------+-----------------------------------------+-------------------+---+          |
        |                                         |                   |              |
+-------+-----------------------------------------+-------------------+--------------+---+
|                Provisioning (VMs via Vagrant, AWS/GCP/DO via Terraform)                |
+----------------------------------------------------------------------------------------+

Progress

Details

Current state

Weave Net is currently integration-tested in two main ways:

  • locally by developers, using VMs (see test/Vagrantfile) and make run-smoketests;
  • on every git push, using CircleCI and Google Cloud Platform (GCP -- see circle.yml and test/gce.sh)

Software used during the build & testing currently is:

  • Go 1.5.2 (see build/Dockerfile and vagrant-common.rb)
  • Docker:
    • 1.6.2 (see Makefile)
    • 1.10.2 (see cd weave; vagrant up; vagrant ssh; docker --version)
    • 1.12.3 (see cd weave/test; vagrant up; vagrant ssh host1; docker --version)
  • Ubuntu:
    • 15.10 Wily Werewolf (see cd weave; vagrant up; vagrant ssh; cat /etc/*-release and cd weave/test; vagrant up; vagrant ssh host1; cat /etc/*-release)
    • 16.04 LTS Xenial Xerus (see test/gce.sh)

Limitations & Potential Issues

  1. We only test against one version of Docker, which will not flag issues with other versions used in Production by our users.
  2. We do not systematically test against Docker release candidates -- and when we do, do it manually -- so cannot consistently react to or feed back issues before Docker releases.
  3. We only test against one Operating System (Ubuntu), which will not flag issues with other ones used in Production by our users.
  4. We only test against one version of Ubuntu, which will not flag issues with other ones used in Production by our users.
  5. We only test against one cloud provider (GCP), which will not flag issues with other ones used in Production by our users.
  6. Some of these versions are hardcoded, while some others depend on what is available in the OS' package manager at the time of the build which may change over time, i.e. their version is a "moving target".
  7. Vagrant and GCP are not using the same versions of Docker and Ubuntu, which could cause issues.
  8. When using Vagrant, different versions of Docker are used, which could cause issues.
  9. It is very manual to set up testing environments for arbitrary configurations, which can be useful to reproduce various issues quickly.

Proposed Target State

  1. Decouple dependencies definition, provisioning, configuration and testing:
    i. It should be easy to list all available versions of software we rely upon (OS, Docker, Go, etc.).
    ii. It should be easy to define a combination of these versions to use for development/testing.
    iii. It should be easy to provision a local or remote environment. In the case of remote environments, it should be easy to leverage any cloud provider.
    iv. It should be easy to configure the environment created in 1.iii. using the versions defined in 1.ii.
    v. It should be easy to then perform any kind of testing on this environment: manual, automated, integration tests, cross-version tests, stress tests, etc.

  2. "Dependency-inject" versions to the build: OS, Docker and Go versions should all be configurable in one single place, and then passed in a "top-down" fashion to the provisioning and configuration layers and NOT hardcoded anywhere else below (other layers, in actual tests, etc.).

  3. Testing:
    i. Integration testing should simply be one instance of 1.ii/iii/iv., with, e.g. the latest versions, or a hardcoded combination of versions of all dependencies. This would continue to be run on every git push.
    ii. Cross-version testing: it should be easy to repeat 3.i. for multiple combinations of versions, or even all combinations (cartesian product of versions of all dependencies), hence making it easy to:

    • spot incompatibilities between versions
    • document compatible versions (e.g. via a "compatibility matrix")

    This would typically be run weekly and/or manually before releases.

    iii. Cross-version testing should ideally be done concurrently, for faster feedback.
    iv. Stress testing & more advanced testing scenarios could also re-use 1.ii/iii/iv.

Proposed Implementation

  1. Dependencies listing: a set of shell scripts would list all available versions of all dependencies (OSes/Kernels, Go, Docker, K8S, etc.).
  2. Dependencies definition: make would, depending on the target, either:
    i. call 1. and select versions using pre-defined rules (e.g. latest production version, latest RC version, etc.)
    ii. use hardcoded versions.
  3. Provisioning:
    i. Locally: a set of Vagrantfiles (see Vagrant) could be used to provision local VMs.
    ii. Remotely: a set of .tf (see Terraform) files could be used to provision machines from AWS, GCP and Digital Ocean.
    Docker Infrakit may also be a good tool to implement the above -- see also this article
  4. Configuration: a set of Ansible scripts, as potentially more portable and idempotent than bash scripts, could be used to automatically configure the newly provisioned environments.
@marccarre marccarre added this to the 1.9.0 milestone Nov 15, 2016
@marccarre marccarre self-assigned this Nov 15, 2016
@marccarre marccarre changed the title Improve development & testing infrastructure Epic - Improve development & testing infrastructure Nov 15, 2016
@rade
Copy link
Member

rade commented Nov 16, 2016

Does this replace #229?

@rade
Copy link
Member

rade commented Nov 16, 2016

Does this encompass #1747?

@rade
Copy link
Member

rade commented Nov 16, 2016

Does this replace #2018?

@rade
Copy link
Member

rade commented Nov 16, 2016

Does this encompass #2620?

@marccarre
Copy link
Contributor Author

Let's keep #1747, #2018 and #2620 as an individual issues though. #2647 is more of an "epic" or meta-issue.

@marccarre
Copy link
Contributor Author

marccarre commented Jan 10, 2017

Next: cross-version testing.

  • Script to parallelize/orchestrate cross version testing
  • Script to generate compatibility matrix

Note that cross-version testing of Kubernetes depends on kubernetes/release/issues/234.

marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 24, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 24, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit that referenced this issue Jan 24, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 24, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 24, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 24, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 24, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 24, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 24, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 24, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 24, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 24, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 24, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit that referenced this issue Jan 24, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 25, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 25, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 25, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 25, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 25, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 25, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 25, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 25, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 25, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit to weaveworks/build-tools that referenced this issue Jan 25, 2017
Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and weaveworks/weave#2694 for weaveworks/weave#2647),
* etc.

This change adds the ability to optionally process a `.lintignore` file, which can contain any number of `GLOB`s then used to filter out files one does not want to lint, a-la `.gitignore`.
This, coupled with a `.lintignore` file in Weave Net will then enable Weave Net to use the latest version of `build-tools`.
marccarre added a commit that referenced this issue Jan 25, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
marccarre added a commit that referenced this issue Jan 25, 2017
…ipts when lint-ing.

Lint-ing all of Weave Net is currently not desirable because:

* it would create conflicts on many branches,
* it would pollute the git history,
* etc.

and because `lint` currently lints all files except `./vendor`, this breaks Weave Net's build.
As a result, Weave Net is not using the latest commit in `build-tools`'s `master` branch, which is also source of problems:

* it limits standardisation of projects across Weaveworks,
* it limits the ability to use the latest features of `build-tools`,
* it complexifies merging changes in `build-tools` (e.g. #53 and #2694 for #2647),
* etc.

This change:

* brings Weave Net to the latest version of `build-tools` (which now supports `.lintignore` files),
* adds such a `.lintignore` file to skip all bash scripts (in order to avoid breaking the build).

`GLOB`s in `.lintignore` can then, over time and as scripts are `shfmt`-ed, be relaxed and maybe even removed.
@bboreham bboreham modified the milestones: 1.9.1, 1.9.0 Feb 2, 2017
brb added a commit that referenced this issue Feb 8, 2017
@brb
Copy link
Contributor

brb commented Feb 8, 2017

Fixed by #2694

@brb brb closed this as completed Feb 8, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants