🚧 This instance is under construction; expect occasional downtime. Runners available in /repos. Questions? Ask in #wikimedia-gitlab on libera.chat, or under GitLab on Phabricator.

  1. 15 Jul, 2020 1 commit
  2. 11 Dec, 2019 1 commit
  3. 28 Jun, 2019 1 commit
    • Thcipriani's avatar
      Bump config version to v4 · d2ff2621
      Thcipriani authored
      We've changed the config to be more consistent about "copies" and
      "artifacts". This means that "copies" no longer accepts a string, but a
      slice of strings. We should bump the config version and blubber version
      to make it clear that we're not longer backwards compatible.
      
      Change-Id: Ib68f623cbdcdf0aed74f4fdaec062835748e8eb9
      d2ff2621
  4. 28 Jan, 2019 1 commit
    • Dduvall's avatar
      Unify `copies` and `artifacts` configuration · fd20d346
      Dduvall authored
      Refactored `copies` configuration to allow for greater control over when
      and which both local build context files and variant artifacts are
      copied into the target image.
      
      The new configuration introduces a "local" keyword to signify when a
      `copies` entry should apply to the files from the local build context as
      opposed to files from another variant's image during a multi-stage
      build.
      
        variants:
          build:
            copies:
             - from: local
               source: ./src
               destination: .
      
      Note that with this change, the user must now explicitly define whether
      _any_ files should be copied in from the local build context. None will
      be copied in by default.
      
      To help keep configurations succinct, especially considering this new
      requirement, and to approximate the old `copies: variant`, a shorthand
      format and sane defaults for `source` and `destination` (depending whether
      `from` is "local" or a variant name) were implemented.
      
        variants:
          build:
            copies: [local]
          development:
            copies:
             - from: build
             - from: local
               source: ./config.dev.yaml
               destination: ./config.yaml
      
      The shorthand:
      
        copies: [ref, ...]
        # is equivalent to
        copies: [{ from: ref }, ...]
      
      And the following defaults are used when no `source` and `destination`
      are specified.
      
        copies:
         - from: local
         # defaults to
         - from: local
           source: .
           destination: .
      
        copies:
         - from: variant
         # defaults to two entries
         - from: variant
           source: /srv/app # the lives.in dir
           destination: /srv/app
         - from: variant
           source: /opt/local # the shared lib dir
           destination: /opt/local
      
      Bug: T211625
      Change-Id: I4c4217905afc0762b6bd66ed594d43cc0486e3e2
      fd20d346
  5. 20 Dec, 2018 1 commit
    • Dduvall's avatar
      Provide a new Blubber logo · 013ab435
      Dduvall authored
      The new logo was the winner of a recent round of voting among Release
      Engineering. (See https://phabricator.wikimedia.org/V19) It incorporates
      colors from the WM design palette and the ring pattern from the logos of
      other WM teams, platforms, and tooling.
      
      R.I.P. Tyler's dead-whale logo.
      
      Change-Id: I0f79dcd9cb521f39059fa4270f65508c3c097a54
      013ab435
  6. 01 Oct, 2018 1 commit
    • Dduvall's avatar
      Remove support for `sharedvolume` configuration · af9e7979
      Dduvall authored
      Support for mounting a shared volume instead of copying application
      files was meant to provide an option for development use cases. This
      functionality has never been thoroughly tested or utilized for any use
      case. It should be removed for now.
      
      Relates tangentially to task T204591 that simplifies node support.
      
      Change-Id: Ib70cb7bceb504841897a38d732880ba376fe67c8
      af9e7979
  7. 14 Aug, 2018 2 commits
    • Dduvall's avatar
      Bump Blubber config version to v3 · b6c9e31f
      Dduvall authored
      Change-Id: I91cac046976cf88d513487e27e1b52bf77a6f974
      b6c9e31f
    • Dduvall's avatar
      Refactor builder to support file requirements and run pre-install · 374976d4
      Dduvall authored
      The builder configuration has proven useful for supporting generic
      pre-entrypoint commands such as dependency managers not otherwise
      supported by specific Blubber configuration. Adding additional
      `builder.requirements` config expands support for such commands by
      allowing the user to specify files that should be copied into the image
      before the builder command runs.
      
      To support this extra configuration, `builder` had to be changed from a
      simple string to a mapping. The builder command must now by given as
      `builder.command`.
      
      The pattern of creating parent directories, copying files, and executing
      one or more commands prior to the entrypoint has become a common
      one. Some of the implementation of this pattern was moved from
      `PythonConfig` into shared build macros `build.SortFilesByDir` and
      `build.SyncFiles`. All config types that must have requirements files
      copied over independently of the entire source tree (`PythonConfig`,
      `BuilderConfig`, `NodeConfig`) now delegate to these functions.
      
      Change-Id: I67f33034f22cee2851ec866cfb07ab20c23eba8c
      374976d4
  8. 20 May, 2018 3 commits
  9. 28 Mar, 2018 1 commit
    • Dduvall's avatar
      Provide a CONTRIBUTING.md guide · 73ee493d
      Dduvall authored
      Summary:
      To help new developers get on board, let's provide a `CONTRIBUTING.md`
      doc.
      
      Test Plan: Proofread with your eyeballs.
      
      Reviewers: thcipriani, demon, hashar, mmodell, zeljkofilipin, greg, Jrbranaa, #release-engineering-team
      
      Reviewed By: thcipriani, hashar, #release-engineering-team
      
      Tags: #release-engineering-team
      
      Differential Revision: https://phabricator.wikimedia.org/D993
      73ee493d
  10. 07 Sep, 2017 3 commits
    • Dduvall's avatar
      Smarter copies/sharedvolume/default behavior · 62066296
      Dduvall authored
      Summary:
      Defined new abstract `build.Volume` and corresponding
      `docker.DockerVolume` instructions.
      
      Refactored compilation of main `COPY` or `VOLUME` instruction for
      application files to use the new instructions and moved injection of
      these instructions out of the compiler and into `VariantConfig`. The
      latter can be smarter about the following cases:
      
       1. When `copies` is set, simply depend on artifacts for the application
          files and do not copy anything from the build host.
       2. When `sharedvolume` is `true`, inject a `build.Volume` instruction
          for the application working directory.
       3. When neither of the above are set, copy application files from the
          host.
      
      Fixes T174623
      Depends on D768
      
      Test Plan:
      Run `go test ./...`. Run `blubber blubber.example.yaml production` and ensure:
      
       1. The `prep` stage has a `COPY . .` instruction.
       2. The final stage has no `COPY . .` instruction, only `COPY --from=prep`
          instructions.
      
      Reviewers: thcipriani, mobrovac, hashar, mmodell, #release-engineering-team
      
      Reviewed By: thcipriani, mobrovac, #release-engineering-team
      
      Tags: #release-engineering-team
      
      Maniphest Tasks: T174623
      
      Differential Revision: https://phabricator.wikimedia.org/D769
      62066296
    • Dduvall's avatar
      Support `copies` config entry for multi-stage builds · 410085e1
      Dduvall authored
      Summary:
      Support a `copies` variant config entry that will result in a
      multi-stage build, copying both shared library files and application
      directory from a previously defined variant. This is essentially a
      shorthand for two `artifacts` entries that are likely to be idiomatic to
      multi-stage build/prod configurations.
      
      Defined a new abstract `build.CopyFrom` instruction and corresponding
      `docker.DockerCopyFrom` instruction and refactored the writing of these
      Dockerfile lines to be accomplished using an `InstructionsForPhase`
      method on `config.ArtifactsConfig`.
      
      Implemented new support for `copies` configuration in
      `config.VariantConfig` and an `InstructionsForPhase` method that returns
      `build.CopyFrom` instructions for both the shared library and
      application directories.
      
      Fixes T174622
      Depends on D759
      
      Test Plan:
      Run `go test ./...`. Run `blubber blubber.example.yaml production` and ensure
      the right `COPY --from` lines are included for the final stage.
      
      Reviewers: thcipriani, mobrovac, hashar, mmodell, #release-engineering-team
      
      Reviewed By: thcipriani, #release-engineering-team
      
      Tags: #release-engineering-team
      
      Maniphest Tasks: T174622
      
      Differential Revision: https://phabricator.wikimedia.org/D768
      410085e1
    • Dduvall's avatar
      Define `NODE_ENV` and always define `NODE_PATH` · 2a19f046
      Dduvall authored
      Summary:
      Define `NODE_ENV` based on the configuration and define `NODE_PATH` when
      either `npm.install` or `npm.env` are true. The latter behavior is
      necessary for final stages of multi-stage builds where npm modules are
      not installed but the application requires node-related environment
      variables to run.
      
      Depends on D757
      Ref T174626
      
      Rename npm module/config to node
      
      Renamed `npm` yaml entry to `node` and `NpmConfig` to `NodeConfig`.
      Since we're dealing with general node builds and configuration, this
      seems to make more sense.
      
      Test Plan:
      Run `go test ./...` or `arc unit`. Run blubber against at least the
      `blubber.example.yaml`.
      
      Reviewers: thcipriani, mobrovac, mmodell, #release-engineering-team
      
      Reviewed By: thcipriani, #release-engineering-team
      
      Tags: #release-engineering-team
      
      Maniphest Tasks: T174626
      
      Differential Revision: https://phabricator.wikimedia.org/D759
      2a19f046
  11. 26 Jun, 2017 1 commit
    • Dduvall's avatar
      Support environment variables · 9f2ef14b
      Dduvall authored
      Summary:
      Added support for definition of environment variables under
      `runs.environment`. Corresponding `ENV` instructions will be added to
      Dockerfile output for the unprivileged build phase.
      
      Fixes T168425
      
      Test Plan: Run `go test ./...`.
      
      Reviewers: thcipriani, mobrovac, hashar, Jrbranaa, mmodell, #release-engineering-team
      
      Reviewed By: mobrovac
      
      Tags: #release-engineering-team
      
      Maniphest Tasks: T168425
      
      Differential Revision: https://phabricator.wikimedia.org/D691
      9f2ef14b
  12. 01 Jun, 2017 1 commit
    • Giuseppe Lavagetto's avatar
      Add Makefile · a3124c04
      Giuseppe Lavagetto authored
      Summary:
        Added a Makefile so you don't need any special mangling of your go path
      
      Test Plan:
        None
      
      Reviewers: dduvall, mmodell, #release-engineering-team
      
      Reviewed By: mmodell
      
      Subscribers: Joe
      
      Tags: #release-engineering-team
      
      Revert Plan:
        None
      
      Differential Revision: https://phabricator.wikimedia.org/D671
      a3124c04
  13. 01 May, 2017 1 commit
  14. 25 Apr, 2017 1 commit
  15. 19 Apr, 2017 3 commits