GithubHelp home page GithubHelp logo

alphagov / release Goto Github PK

View Code? Open in Web Editor NEW
21.0 85.0 15.0 3.43 MB

Helps deploying to GOV.UK

Home Page: https://docs.publishing.service.gov.uk/apps/release.html

License: MIT License

Ruby 77.60% JavaScript 0.81% HTML 18.39% Dockerfile 0.52% SCSS 2.57% Shell 0.11%
govuk container govuk-pr-team

release's Introduction

Release

An application to make managing releases to specific environments easier.

Technical documentation

This is a Ruby on Rails app, and should follow our Rails app conventions.

You can use the GOV.UK Docker environment to run the application and its tests with all the necessary dependencies. Follow the usage instructions to get started.

Use GOV.UK Docker to run any commands that follow.

To the run the tests

bundle exec rake

Licence

MIT License

release's People

Contributors

agadufrat avatar alexmuller avatar alext avatar andysellick avatar barrucadu avatar benthorner avatar brucebolt avatar catalinailie avatar cbaines avatar chrisbashton avatar deborahchua avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar dhwthompson avatar govuk-ci avatar h-lame avatar injms avatar jamiecobbett avatar jordanhatch avatar kevindew avatar kushalp avatar murilodalri avatar robinjam avatar robyoung avatar sengi avatar suzannehamilton avatar theseanything avatar thomasleese avatar tijmenb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

release's Issues

A read-only view on the deployed application

In order to reproduce issues from production
As a non-security-cleared developer (who isn't allowed edit access)
I want to know which version of my app is deployed on production

Proposed solution: a read-only role which has access to a read-only HTML view of the app versions (without any of the edit links)

Back fill release requests

Pull existing release requests from the current Google Spreadsheet.

This should email Carl rather than add the request directly to the release calendar.

Allow deleting applications

As a developer, I would like to delete applications from the release list. I may decide that an application I intended to create (and have added to the release app) is no longer required and hence I would like to delete it from the list.

If there are existing releases for this application, they should be retained in the database with corresponding information about what the application was, however the application itself should not appear on the Applications page.

If any new releases are made for that application, it should re-appear on the applications list automatically.

Request/claim a release slot from the app

It would be good to be able to request a release slot from within the Release app.

One possible solution: in the commit log view, display a link to request a release for any tag ahead of the currently released version. This could potentially hook into the release calendar to show available deploy slots and/or to show when a release is scheduled for a given app.

request-release

No link back to the application from a release

Once you click into a release for an application (e.g. this one) there is no way to get back to the list of releases for that application short of manually changing the URL or clicking "Applications" and finding the app again.

Don't attempt to show commit history for Private repositories

We have a number of repositories that are on a private github enterprise repository. The release app cannot connect to this github instance and hence cannot use the API to retrieve the commit history.

We should have a per-application flag to turn off the commit-log functionality.

Show a commit log annotated with release tags and deployed-to

It's great that we can see what tag is released where.

Sometimes you want to know if commit X has been deployed. This is really hard to figure out, especially if it is an active repo.

I think we could show a commit log annotated with this information, eg:

Currently Deployed To SHA Message Tag
Preview a1b2c3 Newer feature release_1500
x9c0v9 Bug fix for 1234 release_1499
Production, Staging g7h6j5 Older feature release_1498

I think we'd need to use the GitHub API for this.

The list filter doesn’t work for the release app

The JavaScript list filtering works for most apps, but doesn’t work for the release app itself. The reason for this is that it filters on the contents of any column, and so matches the release_xxx tags we record against the apps.

release-app-release-bug

Showing an application fails if the repo has moved

For example, when we move a repo from alphagov to gds-attic but haven't told release about it yet, the GH api can't find the commits and the show page breaks (see: https://sentry.io/govuk/app-release/issues/343884994/). I thought that GH put redirects in so maybe we need to update the API we use, or maybe we need to be more robust in the face of no commits. Frustratingly once the repo is moved you can't show the app to get the edit link to then update the repo in release.

Add error reporting

We should have error reporting if this app is going to be used seriously.

Errbit (if it's ready) or Exception Notifier.

Installation failing due to old version of therubyracer gem

Hi,

This is more of an FYI in case other people have this issue.

Performing a bundle install failed with:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/bensnape/.rvm/rubies/ruby-2.1.4/bin/ruby -r ./siteconf20150331-70877-1roy5v2.rb extconf.rb
checking for main() in -lobjc... yes
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling rr.cpp
clang: warning: argument unused during compilation: '-rdynamic'
rr.cpp:48:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
compiling v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_array.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_callbacks.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_context.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_date.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_debug.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_exception.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_exception.cpp:10:16: warning: unused variable 'stack' [-Wunused-variable]
  static void* stack[20];
               ^
1 warning generated.
compiling v8_external.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_external.cpp:10:9: warning: unused variable 'references' [-Wunused-variable]
  VALUE references;
        ^
1 warning generated.
compiling v8_function.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_handle.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_locker.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_locker.cpp:45:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
v8_locker.cpp:85:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
2 warnings generated.
compiling v8_message.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_object.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_object.cpp:77:19: warning: unused variable 'proto' [-Wunused-variable]
    Handle<Value> proto(rr_rb2v8(prototype));
                  ^
1 warning generated.
compiling v8_script.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_string.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_template.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_try_catch.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_value.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_value.cpp:100:9: warning: unused function 'ToInt32' [-Wunused-function]
  VALUE ToInt32(VALUE self) {
        ^
1 warning generated.
compiling v8_weakref.cpp
clang: warning: argument unused during compilation: '-rdynamic'
linking shared-object v8.bundle
clang: error: no such file or directory: '/Users/bensnape/.rvm/gems/ruby-2.1.4/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'
make: *** [v8.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/bensnape/.rvm/gems/ruby-2.1.4/gems/therubyracer-0.10.2 for inspection.
Results logged to /Users/bensnape/.rvm/gems/ruby-2.1.4/extensions/x86_64-darwin-13/2.1.0/therubyracer-0.10.2/gem_make.out
An error occurred while installing therubyracer (0.10.2), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.10.2'` succeeds before bundling.

Trying to manually install therubyracer did not work. I also tried various flags e.g. gem install therubyracer -v '0.10.2' -- --with-system-v8 with no luck.

Updating the Gemfile to use version 0.12.1 fixed the issue.

FWIW: I'm using OSX and the version of Ruby that you mandate (2.1.4).

It's trivial, but ping me if you'd like to see a PR.

Record the Jenkins user who ran a deploy task

@KushalP suggested recording who ran a given deploy. This seems like it might be nice to have.

There are a few things worth thinking about:

  • we probably can't automatically map the Jenkins username to their user in the release app/signon
  • If you have access to the authentication token, it would be easy to fake this (or anything else). Having said that, you would probably also have free access to the release app's database anyway.

Flakey test: `show when format is json`.

show when format is json should return a successful response flakes.

E.g.

Run options: --seed 56721

# Running:

..E

Error:
ApplicationsControllerTest#test_: GET show when format is json should return a successful response. :
RuntimeError: Neutered Exception ActiveRecord::RecordInvalid: Validation failed: Name has already been taken
    test/functional/applications_controller_test.rb:175:in `block (3 levels) in <class:ApplicationsControllerTest>'
    test/functional/applications_controller_test.rb:185:in `block in create_test_from_should_hash'

rails test test/functional/applications_controller_test.rb:178

Show the current Preview version on the Applications page.

The Applications page currently shows the versions in Staging and Production. It would be nice if it also showed the current version deployed to Preview (this already exists in the DB) so that I can be reminded what version may be deployed next.

Integrate with @gds_badger

As a deploying user, when I have finished a release I should be able to tweet about it from the @gds_badger account, so I can be more awesome with the Internets.

Expose diffs between versions in different environments.

It would be great if there was a button I could click on which would show me the github diff between the version deployed in the Preview environment and that deployed in Production (also between Staging and Production) so that I may know what the differences I will be deploying are.

Show code diff between released

As a deployer,
I would like to easily access a diff between versions deployed in each environment
So that I can see the changes I might be making as part of a deploy

Open source this repo

Having successfully made omniauth-gds open source, I'd like to get this open source too.

I don't believe there are any secrets contained in this repo, or it's history. The secret token used for signing tokens is overwritten on deploy.

Misleading commit ordering

The commits on a given release's page are in commit-date order, but the releases are tagged to merge commits.

This can mean that a commit can appear below a release tag that it wasn't included in, if it was committed earlier than that release but merged later.

For example, in this list, commit 1905d6e0f appears to be part of release_4242, but is actually part of the most recent merge which doesn't yet have a tag.

image

Ideally we'd want to be able to properly group commits under their relevant merge commits to give a clearer idea of what changes will go out with a given release tag.

Add a banner that indicates if it's not the canonical instance

The govuk_select_organisation script deliberately doesn't switch the release app between staging and production because this would be very confusing when you're deploying.

It feels like a nice failsafe/courtesy to make it very obvious when you are on anything but the canonical instance.

I think the app has access to $ORGANISATION, so it could use that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.