/fa-harness-tools

Tools and preflight checks for deployments with Harness.io

Primary LanguageRubyApache License 2.0Apache-2.0

fa-harness-tools

FreeAgent-specific pre-flight checks and tools that are designed to work in Harness.

Installation

Add this line to your application's Gemfile:

gem 'fa-harness-tools'

And then execute:

$ bundle

Or install it yourself as:

$ gem install fa-harness-tools

Usage

Examples below use variables defined by Harness so should be suitable to use directly in Harness scripts.

Full scripts that can be used in Harness are available in the examples/ directory.

Optional environment variables

  • To access private repositories, GITHUB_OAUTH_TOKEN must be exported, containing a valid personal access token for GitHub

check-branch-brotection

Check the new build/commit being deployed is on the master branch:

bundle exec exe/check-branch-protection -r ${artifact.source.repositoryName} -e ${env.name} -b ${artifact.buildNo}

(Branch name etc can be changed, see --help for more options.)

check-forward-deploy

Using a Git tag indicating the last deployment, check that the new commit being deployed is a descendant of the current commit:

bundle exec exe/check-forward-deploy -r ${artifact.source.repositoryName} -e ${env.name} -b ${artifact.buildNo}

(Tag prefix etc can be changed, see --help for more options.)

check-recent-deploy

Using Git tags indicating recent deployments, check the commit being deployed is one of the last X commits or newer. Allows a user to rollback by X deployments.

bundle exec exe/check-recent-deploy -r ${artifact.source.repositoryName} -e ${env.name} -b ${artifact.buildNo}

(Allowed rollback count and tag prefix etc can be changed, see --help for more options.)

check-schedule

Check the current time is within the deployment window of Mon-Thu 9am to 4pm, or Fri 9am to 12pm, using local London time.

bundle exec exe/check-schedule

create-deployment-tag

Creates a Git tag in the project repository to indicate the deployment has happened:

bundle exec exe/create-deployment-tag -r ${artifact.source.repositoryName} -e ${env.name} -b ${artifact.buildNo}

(Tagger's name and email address etc can be changed, see --help for more options.)

Development

After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install.

To release a new version, update the version number in version.rb. After your PR is merged to master, the CICD GitHub Action workflow will release to RubyGems automatically: Gem is hosted publicly here: https://rubygems.org/gems/fa-harness-tools

The Ruby version used matches the one from the harness/delegate Docker image.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/fac/fa-harness-tools

Licence

Copyright 2019 FreeAgent Central Ltd.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.