From a4a880be39717cd50754d77b5b4ebb37b7a6bd7d Mon Sep 17 00:00:00 2001 From: schneems Date: Fri, 26 Jun 2020 13:08:18 -0500 Subject: [PATCH 1/3] Allow testing in staging This PR replaces the prior testing method with Hatchet. It adds support for testing against the staging bucket: ``` $ bundle exec rake test[2.3.0,cedar-14,true] ``` --- .gitignore | 2 + Gemfile | 2 +- Gemfile.lock | 978 +++++++++++++++++++++++++++++++++++++++++++++++++-- Rakefile | 169 ++------- hatchet.json | 6 + hatchet.lock | 3 + 6 files changed, 992 insertions(+), 168 deletions(-) create mode 100644 hatchet.json create mode 100644 hatchet.lock diff --git a/.gitignore b/.gitignore index a377893..302258d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ builds/ cache/ vendor/ .DS_Store + +test/fixtures/repos/* diff --git a/Gemfile b/Gemfile index 5a09d94..ff33571 100644 --- a/Gemfile +++ b/Gemfile @@ -2,4 +2,4 @@ source "https://rubygems.org" gem "rake" gem "aws-sdk" -gem "okyakusan", github: 'hone/okyakusan' +gem "heroku_hatchet" diff --git a/Gemfile.lock b/Gemfile.lock index 51be069..09615e2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,32 +1,970 @@ -GIT - remote: https://github.com/hone/okyakusan.git - revision: d32fd91e07c71cf54670a2802165de361f7a5d12 - specs: - okyakusan (0.0.1) - netrc (~> 0.7.7) - GEM remote: https://rubygems.org/ specs: - aws-sdk (1.58.0) - aws-sdk-v1 (= 1.58.0) - aws-sdk-v1 (1.58.0) - json (~> 1.4) - nokogiri (>= 1.4.4) - json (1.8.6) - mini_portile (0.6.1) - netrc (0.7.9) - nokogiri (1.6.4.1) - mini_portile (~> 0.6.0) - rake (10.1.0) + activesupport (6.0.3.2) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + zeitwerk (~> 2.2, >= 2.2.2) + aws-eventstream (1.1.0) + aws-partitions (1.335.0) + aws-sdk (3.0.1) + aws-sdk-resources (~> 3) + aws-sdk-accessanalyzer (1.9.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-acm (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-acmpca (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-alexaforbusiness (1.39.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-amplify (1.20.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-apigateway (1.47.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-apigatewaymanagementapi (1.16.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-apigatewayv2 (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-appconfig (1.9.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-applicationautoscaling (1.42.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-applicationdiscoveryservice (1.29.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-applicationinsights (1.12.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-appmesh (1.27.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-appstream (1.43.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-appsync (1.28.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-athena (1.29.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-augmentedairuntime (1.7.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-autoscaling (1.41.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-autoscalingplans (1.25.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-backup (1.18.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-batch (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-budgets (1.32.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-chime (1.31.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloud9 (1.25.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-clouddirectory (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudformation (1.39.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudfront (1.32.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudhsm (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudhsmv2 (1.25.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudsearch (1.22.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudsearchdomain (1.19.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudtrail (1.25.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudwatch (1.40.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudwatchevents (1.31.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudwatchlogs (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codeartifact (1.1.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codebuild (1.54.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codecommit (1.36.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codedeploy (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codeguruprofiler (1.7.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codegurureviewer (1.8.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codepipeline (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codestar (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codestarconnections (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-codestarnotifications (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cognitoidentity (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cognitoidentityprovider (1.40.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-cognitosync (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-comprehend (1.34.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-comprehendmedical (1.19.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-computeoptimizer (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-configservice (1.47.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-connect (1.27.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-connectparticipant (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-core (3.102.1) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.239.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1.0) + aws-sdk-costandusagereportservice (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-costexplorer (1.44.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-databasemigrationservice (1.36.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-dataexchange (1.7.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-datapipeline (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-datasync (1.22.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-dax (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-detective (1.8.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-devicefarm (1.35.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-directconnect (1.32.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-directoryservice (1.30.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-dlm (1.31.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-docdb (1.19.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-dynamodb (1.50.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-dynamodbstreams (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ebs (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ec2 (1.171.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ec2instanceconnect (1.8.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ecr (1.32.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ecs (1.66.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-efs (1.31.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-eks (1.39.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-elasticache (1.39.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-elasticbeanstalk (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-elasticinference (1.7.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-elasticloadbalancing (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-elasticloadbalancingv2 (1.46.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-elasticsearchservice (1.38.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-elastictranscoder (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-emr (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-eventbridge (1.9.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-firehose (1.30.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-fms (1.28.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-forecastqueryservice (1.7.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-forecastservice (1.7.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-frauddetector (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-fsx (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-gamelift (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-glacier (1.31.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-globalaccelerator (1.20.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-glue (1.61.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-greengrass (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-groundstation (1.10.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-guardduty (1.36.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-health (1.27.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-honeycode (1.0.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iam (1.42.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-imagebuilder (1.10.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-importexport (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv2 (~> 1.0) + aws-sdk-inspector (1.28.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iot (1.53.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iot1clickdevicesservice (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iot1clickprojects (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotanalytics (1.31.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotdataplane (1.22.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotevents (1.17.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ioteventsdata (1.10.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotjobsdataplane (1.22.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotsecuretunneling (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotsitewise (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotthingsgraph (1.9.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kafka (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kendra (1.8.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kinesis (1.25.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kinesisanalytics (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kinesisanalyticsv2 (1.18.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kinesisvideo (1.27.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kinesisvideoarchivedmedia (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kinesisvideomedia (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kinesisvideosignalingchannels (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-kms (1.35.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-lakeformation (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-lambda (1.45.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-lambdapreview (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-lex (1.28.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-lexmodelbuildingservice (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-licensemanager (1.16.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-lightsail (1.34.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-machinelearning (1.22.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-macie (1.22.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-macie2 (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-managedblockchain (1.13.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-marketplacecatalog (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-marketplacecommerceanalytics (1.25.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-marketplaceentitlementservice (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-marketplacemetering (1.28.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediaconnect (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediaconvert (1.53.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-medialive (1.49.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediapackage (1.30.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediapackagevod (1.16.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediastore (1.27.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediastoredata (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediatailor (1.29.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-migrationhub (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-migrationhubconfig (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mobile (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mq (1.29.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-mturk (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-neptune (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-networkmanager (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-opsworks (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-opsworkscm (1.37.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-organizations (1.44.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-outposts (1.7.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-personalize (1.15.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-personalizeevents (1.9.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-personalizeruntime (1.13.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-pi (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-pinpoint (1.43.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-pinpointemail (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-pinpointsmsvoice (1.18.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-polly (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-pricing (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-qldb (1.8.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-qldbsession (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-quicksight (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ram (1.19.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-rds (1.89.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-rdsdataservice (1.20.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-redshift (1.45.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-rekognition (1.41.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-resourcegroups (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-resourcegroupstaggingapi (1.28.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-resources (3.75.0) + aws-sdk-accessanalyzer (~> 1) + aws-sdk-acm (~> 1) + aws-sdk-acmpca (~> 1) + aws-sdk-alexaforbusiness (~> 1) + aws-sdk-amplify (~> 1) + aws-sdk-apigateway (~> 1) + aws-sdk-apigatewaymanagementapi (~> 1) + aws-sdk-apigatewayv2 (~> 1) + aws-sdk-appconfig (~> 1) + aws-sdk-applicationautoscaling (~> 1) + aws-sdk-applicationdiscoveryservice (~> 1) + aws-sdk-applicationinsights (~> 1) + aws-sdk-appmesh (~> 1) + aws-sdk-appstream (~> 1) + aws-sdk-appsync (~> 1) + aws-sdk-athena (~> 1) + aws-sdk-augmentedairuntime (~> 1) + aws-sdk-autoscaling (~> 1) + aws-sdk-autoscalingplans (~> 1) + aws-sdk-backup (~> 1) + aws-sdk-batch (~> 1) + aws-sdk-budgets (~> 1) + aws-sdk-chime (~> 1) + aws-sdk-cloud9 (~> 1) + aws-sdk-clouddirectory (~> 1) + aws-sdk-cloudformation (~> 1) + aws-sdk-cloudfront (~> 1) + aws-sdk-cloudhsm (~> 1) + aws-sdk-cloudhsmv2 (~> 1) + aws-sdk-cloudsearch (~> 1) + aws-sdk-cloudsearchdomain (~> 1) + aws-sdk-cloudtrail (~> 1) + aws-sdk-cloudwatch (~> 1) + aws-sdk-cloudwatchevents (~> 1) + aws-sdk-cloudwatchlogs (~> 1) + aws-sdk-codeartifact (~> 1) + aws-sdk-codebuild (~> 1) + aws-sdk-codecommit (~> 1) + aws-sdk-codedeploy (~> 1) + aws-sdk-codeguruprofiler (~> 1) + aws-sdk-codegurureviewer (~> 1) + aws-sdk-codepipeline (~> 1) + aws-sdk-codestar (~> 1) + aws-sdk-codestarconnections (~> 1) + aws-sdk-codestarnotifications (~> 1) + aws-sdk-cognitoidentity (~> 1) + aws-sdk-cognitoidentityprovider (~> 1) + aws-sdk-cognitosync (~> 1) + aws-sdk-comprehend (~> 1) + aws-sdk-comprehendmedical (~> 1) + aws-sdk-computeoptimizer (~> 1) + aws-sdk-configservice (~> 1) + aws-sdk-connect (~> 1) + aws-sdk-connectparticipant (~> 1) + aws-sdk-costandusagereportservice (~> 1) + aws-sdk-costexplorer (~> 1) + aws-sdk-databasemigrationservice (~> 1) + aws-sdk-dataexchange (~> 1) + aws-sdk-datapipeline (~> 1) + aws-sdk-datasync (~> 1) + aws-sdk-dax (~> 1) + aws-sdk-detective (~> 1) + aws-sdk-devicefarm (~> 1) + aws-sdk-directconnect (~> 1) + aws-sdk-directoryservice (~> 1) + aws-sdk-dlm (~> 1) + aws-sdk-docdb (~> 1) + aws-sdk-dynamodb (~> 1) + aws-sdk-dynamodbstreams (~> 1) + aws-sdk-ebs (~> 1) + aws-sdk-ec2 (~> 1) + aws-sdk-ec2instanceconnect (~> 1) + aws-sdk-ecr (~> 1) + aws-sdk-ecs (~> 1) + aws-sdk-efs (~> 1) + aws-sdk-eks (~> 1) + aws-sdk-elasticache (~> 1) + aws-sdk-elasticbeanstalk (~> 1) + aws-sdk-elasticinference (~> 1) + aws-sdk-elasticloadbalancing (~> 1) + aws-sdk-elasticloadbalancingv2 (~> 1) + aws-sdk-elasticsearchservice (~> 1) + aws-sdk-elastictranscoder (~> 1) + aws-sdk-emr (~> 1) + aws-sdk-eventbridge (~> 1) + aws-sdk-firehose (~> 1) + aws-sdk-fms (~> 1) + aws-sdk-forecastqueryservice (~> 1) + aws-sdk-forecastservice (~> 1) + aws-sdk-frauddetector (~> 1) + aws-sdk-fsx (~> 1) + aws-sdk-gamelift (~> 1) + aws-sdk-glacier (~> 1) + aws-sdk-globalaccelerator (~> 1) + aws-sdk-glue (~> 1) + aws-sdk-greengrass (~> 1) + aws-sdk-groundstation (~> 1) + aws-sdk-guardduty (~> 1) + aws-sdk-health (~> 1) + aws-sdk-honeycode (~> 1) + aws-sdk-iam (~> 1) + aws-sdk-imagebuilder (~> 1) + aws-sdk-importexport (~> 1) + aws-sdk-inspector (~> 1) + aws-sdk-iot (~> 1) + aws-sdk-iot1clickdevicesservice (~> 1) + aws-sdk-iot1clickprojects (~> 1) + aws-sdk-iotanalytics (~> 1) + aws-sdk-iotdataplane (~> 1) + aws-sdk-iotevents (~> 1) + aws-sdk-ioteventsdata (~> 1) + aws-sdk-iotjobsdataplane (~> 1) + aws-sdk-iotsecuretunneling (~> 1) + aws-sdk-iotsitewise (~> 1) + aws-sdk-iotthingsgraph (~> 1) + aws-sdk-kafka (~> 1) + aws-sdk-kendra (~> 1) + aws-sdk-kinesis (~> 1) + aws-sdk-kinesisanalytics (~> 1) + aws-sdk-kinesisanalyticsv2 (~> 1) + aws-sdk-kinesisvideo (~> 1) + aws-sdk-kinesisvideoarchivedmedia (~> 1) + aws-sdk-kinesisvideomedia (~> 1) + aws-sdk-kinesisvideosignalingchannels (~> 1) + aws-sdk-kms (~> 1) + aws-sdk-lakeformation (~> 1) + aws-sdk-lambda (~> 1) + aws-sdk-lambdapreview (~> 1) + aws-sdk-lex (~> 1) + aws-sdk-lexmodelbuildingservice (~> 1) + aws-sdk-licensemanager (~> 1) + aws-sdk-lightsail (~> 1) + aws-sdk-machinelearning (~> 1) + aws-sdk-macie (~> 1) + aws-sdk-macie2 (~> 1) + aws-sdk-managedblockchain (~> 1) + aws-sdk-marketplacecatalog (~> 1) + aws-sdk-marketplacecommerceanalytics (~> 1) + aws-sdk-marketplaceentitlementservice (~> 1) + aws-sdk-marketplacemetering (~> 1) + aws-sdk-mediaconnect (~> 1) + aws-sdk-mediaconvert (~> 1) + aws-sdk-medialive (~> 1) + aws-sdk-mediapackage (~> 1) + aws-sdk-mediapackagevod (~> 1) + aws-sdk-mediastore (~> 1) + aws-sdk-mediastoredata (~> 1) + aws-sdk-mediatailor (~> 1) + aws-sdk-migrationhub (~> 1) + aws-sdk-migrationhubconfig (~> 1) + aws-sdk-mobile (~> 1) + aws-sdk-mq (~> 1) + aws-sdk-mturk (~> 1) + aws-sdk-neptune (~> 1) + aws-sdk-networkmanager (~> 1) + aws-sdk-opsworks (~> 1) + aws-sdk-opsworkscm (~> 1) + aws-sdk-organizations (~> 1) + aws-sdk-outposts (~> 1) + aws-sdk-personalize (~> 1) + aws-sdk-personalizeevents (~> 1) + aws-sdk-personalizeruntime (~> 1) + aws-sdk-pi (~> 1) + aws-sdk-pinpoint (~> 1) + aws-sdk-pinpointemail (~> 1) + aws-sdk-pinpointsmsvoice (~> 1) + aws-sdk-polly (~> 1) + aws-sdk-pricing (~> 1) + aws-sdk-qldb (~> 1) + aws-sdk-qldbsession (~> 1) + aws-sdk-quicksight (~> 1) + aws-sdk-ram (~> 1) + aws-sdk-rds (~> 1) + aws-sdk-rdsdataservice (~> 1) + aws-sdk-redshift (~> 1) + aws-sdk-rekognition (~> 1) + aws-sdk-resourcegroups (~> 1) + aws-sdk-resourcegroupstaggingapi (~> 1) + aws-sdk-robomaker (~> 1) + aws-sdk-route53 (~> 1) + aws-sdk-route53domains (~> 1) + aws-sdk-route53resolver (~> 1) + aws-sdk-s3 (~> 1) + aws-sdk-s3control (~> 1) + aws-sdk-sagemaker (~> 1) + aws-sdk-sagemakerruntime (~> 1) + aws-sdk-savingsplans (~> 1) + aws-sdk-schemas (~> 1) + aws-sdk-secretsmanager (~> 1) + aws-sdk-securityhub (~> 1) + aws-sdk-serverlessapplicationrepository (~> 1) + aws-sdk-servicecatalog (~> 1) + aws-sdk-servicediscovery (~> 1) + aws-sdk-servicequotas (~> 1) + aws-sdk-ses (~> 1) + aws-sdk-sesv2 (~> 1) + aws-sdk-shield (~> 1) + aws-sdk-signer (~> 1) + aws-sdk-simpledb (~> 1) + aws-sdk-sms (~> 1) + aws-sdk-snowball (~> 1) + aws-sdk-sns (~> 1) + aws-sdk-sqs (~> 1) + aws-sdk-ssm (~> 1) + aws-sdk-sso (~> 1) + aws-sdk-ssooidc (~> 1) + aws-sdk-states (~> 1) + aws-sdk-storagegateway (~> 1) + aws-sdk-support (~> 1) + aws-sdk-swf (~> 1) + aws-sdk-synthetics (~> 1) + aws-sdk-textract (~> 1) + aws-sdk-transcribeservice (~> 1) + aws-sdk-transcribestreamingservice (~> 1) + aws-sdk-transfer (~> 1) + aws-sdk-translate (~> 1) + aws-sdk-waf (~> 1) + aws-sdk-wafregional (~> 1) + aws-sdk-wafv2 (~> 1) + aws-sdk-workdocs (~> 1) + aws-sdk-worklink (~> 1) + aws-sdk-workmail (~> 1) + aws-sdk-workmailmessageflow (~> 1) + aws-sdk-workspaces (~> 1) + aws-sdk-xray (~> 1) + aws-sdk-robomaker (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-route53 (1.39.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-route53domains (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-route53resolver (1.16.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.71.1) + aws-sdk-core (~> 3, >= 3.102.1) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.1) + aws-sdk-s3control (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-sagemaker (1.61.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-sagemakerruntime (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-savingsplans (1.7.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-schemas (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-secretsmanager (1.38.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-securityhub (1.28.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-serverlessapplicationrepository (1.29.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-servicecatalog (1.42.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-servicediscovery (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-servicequotas (1.8.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ses (1.32.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-sesv2 (1.8.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-shield (1.28.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-signer (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-simpledb (1.21.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv2 (~> 1.0) + aws-sdk-sms (1.22.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-snowball (1.30.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-sns (1.26.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-sqs (1.29.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ssm (1.83.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-sso (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-ssooidc (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-states (1.30.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-storagegateway (1.44.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-support (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-swf (1.22.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-synthetics (1.5.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-textract (1.17.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-transcribeservice (1.45.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-transcribestreamingservice (1.17.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-transfer (1.23.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-translate (1.24.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-waf (1.32.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-wafregional (1.33.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-wafv2 (1.7.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-workdocs (1.25.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-worklink (1.18.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-workmail (1.27.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-workmailmessageflow (1.6.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-workspaces (1.39.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sdk-xray (1.28.0) + aws-sdk-core (~> 3, >= 3.99.0) + aws-sigv4 (~> 1.1) + aws-sigv2 (1.0.1) + aws-sigv4 (1.2.1) + aws-eventstream (~> 1, >= 1.0.2) + concurrent-ruby (1.1.6) + erubis (2.7.0) + excon (0.75.0) + heroics (0.1.1) + erubis (~> 2.0) + excon + moneta + multi_json (>= 1.9.2) + heroku_hatchet (6.0.0) + excon (~> 0) + platform-api (= 3.0.0.pre.1) + repl_runner (~> 0.0.3) + rrrretry (~> 1) + thor (~> 0) + threaded (~> 0) + i18n (1.8.3) + concurrent-ruby (~> 1.0) + jmespath (1.4.0) + minitest (5.14.1) + moneta (1.0.0) + multi_json (1.14.1) + platform-api (3.0.0.pre.1) + heroics (~> 0.1.1) + moneta (~> 1.0.0) + rate_throttle_client (~> 0.1.0) + rake (13.0.1) + rate_throttle_client (0.1.2) + repl_runner (0.0.3) + activesupport + rrrretry (1.0.0) + thor (0.20.3) + thread_safe (0.3.6) + threaded (0.0.4) + tzinfo (1.2.7) + thread_safe (~> 0.1) + zeitwerk (2.3.0) PLATFORMS ruby DEPENDENCIES aws-sdk - okyakusan! + heroku_hatchet rake BUNDLED WITH - 2.0.2 + 2.1.4 diff --git a/Rakefile b/Rakefile index 6804753..7ddbf5f 100644 --- a/Rakefile +++ b/Rakefile @@ -124,156 +124,31 @@ namespace :batch do end desc "Test images" -task :test, [:version, :stack] do |t, args| - require 'tmpdir' - require 'okyakusan' - require 'rubygems/package' - require 'zlib' - require 'net/http' - - def system_pipe(command) - IO.popen(command) do |io| - while data = io.read(16) do - print data - end - end - end - - def gemfile_ruby(version, patchlevel = nil) - string = %Q{ruby "#{version}"} - string << %Q{, :patchlevel => "#{patchlevel}"} if patchlevel - - string - end - - def network_retry(max_retries, retry_count = 0) - yield - rescue Errno::ECONNRESET, EOFError - if retry_count < max_retries - $stderr.puts "Retry Count: #{retry_count}" - sleep(0.01 * retry_count) - retry_count += 1 - retry - end +task :test, [:version, :stack, :staging] do |t, args| + require 'hatchet' + + ruby_version, patchlevel = args[:version].split("-p") + stack = args[:stack] + staging = args[:staging] + + if staging + buildpacks = ["https://github.com/sharpstone/sudo_set_config_var_buildpack", "heroku/ruby"] + config = {"__SUDO_BUILDPACK_VENDOR_URL" => "https://heroku-buildpack-ruby-staging.s3.amazonaws.com"} + else + buildpacks = ["heroku/ruby"] + config = {} end - tmp_dir = Dir.mktmpdir - app_dir = "#{tmp_dir}/app" - app_tar = "#{tmp_dir}/app.tgz" - app_name = nil - web_url = nil - FileUtils.mkdir_p("#{tmp_dir}/app") - - begin - system_pipe("git clone --depth 1 https://github.com/sharpstone/default_ruby #{app_dir}") - exit 1 unless $?.success? - - ruby_version, patchlevel = args[:version].split("-p") - ruby_line = gemfile_ruby(ruby_version, patchlevel) - puts "Setting ruby version: #{ruby_line}" - text = File.read("#{app_dir}/Gemfile") - subbed = text.sub!(/^\s*ruby.*$/, ruby_line) - File.open("#{app_dir}/Gemfile", 'w') do |file| - file.puts ruby_line unless subbed - file.print(text) + Hatchet::Runner.new("default_ruby", stack: stack, buildpacks: buildpacks, config: config).tap do |app| + app.before_deploy do + ruby_string = %Q{ruby "#{ruby_version}"} + ruby_string << %Q{, :patchlevel => "#{patchlevel}"} if patchlevel + out = `echo "#{ruby_string.inspect}" >> Gemfile` + raise "Could not modify Gemfile: #{out}" unless $?.success? end - - Dir.chdir(app_dir) do - puts "Packaging app" - system_pipe("tar czf #{app_tar} *") - exit 1 unless $?.success? + app.deploy do + out = app.run("echo 'Ruby version: $(ruby -v), Gem version: $(gem -v)'", raw: true) + puts "Stack: #{stack}, #{out.chomp}, s3_bucket: #{staging ? "staging" : "production"}" end - - Okyakusan.start do |heroku| - # create new app - response = heroku.post("/apps", data: { - stack: args[:stack] - }) - - if response.code != "201" - $stderr.puts "Error Creating Heroku App (#{response.code}): #{response.body}" - exit 1 - end - json = JSON.parse(response.body) - app_name = json["name"] - web_url = json["web_url"] - - # upload source - response = heroku.post("/apps/#{app_name}/sources") - if response.code != "201" - $stderr.puts "Couldn't get sources to upload code." - exit 1 - end - - json = JSON.parse(response.body) - source_get_url = json["source_blob"]["get_url"] - source_put_url = json["source_blob"]["put_url"] - - puts "Uploading data to #{source_put_url}" - uri = URI(source_put_url) - Net::HTTP.start(uri.host, uri.port, :use_ssl => (uri.scheme == 'https')) do |http| - request = Net::HTTP::Put.new(uri.request_uri, { - 'Content-Length' => File.size(app_tar).to_s, - # This is required, or Net::HTTP will add a default unsigned content-type. - 'Content-Type' => '' - }) - begin - app_tar_io = File.open(app_tar) - request.body_stream = app_tar_io - response = http.request(request) - if response.code != "200" - $stderr.puts "Could not upload code" - exit 1 - end - ensure - app_tar_io.close - end - end - - # create build - response = heroku.post("/apps/#{app_name}/builds", version: "3.streaming-build-output", data: { - "source_blob" => { - "url" => source_get_url, - "version" => "" - } - }) - if response.code != "201" - $stderr.puts "Could create build" - exit 1 - end - - # stream build output - uri = URI(JSON.parse(response.body)["output_stream_url"]) - Net::HTTP.start(uri.host, uri.port, :use_ssl => (uri.scheme == 'https')) do |http| - request = Net::HTTP::Get.new uri.request_uri - http.request(request) do |response| - response.read_body do |chunk| - print chunk - end - end - end - end - - # test app - puts web_url - sleep(1) - response = network_retry(20) do - Net::HTTP.get_response(URI(web_url)) - end - - if response.code != "200" - $stderr.puts "App did not return a 200: #{response.code}" - exit 1 - else - puts "Successfully returned a 200" - puts `heroku run ruby -v -a #{app_name}` - puts `heroku run gem -v -a #{app_name}` - puts "Deleting #{app_name}" - Okyakusan.start {|heroku| heroku.delete("/apps/#{app_name}") if app_name } - end - - puts response.body - ensure - FileUtils.remove_entry tmp_dir end end diff --git a/hatchet.json b/hatchet.json new file mode 100644 index 0000000..64a49f8 --- /dev/null +++ b/hatchet.json @@ -0,0 +1,6 @@ +{ + "hatchet": {"directory": "test/fixtures"}, + "ruby": [ + "sharpstone/default_ruby" + ] +} diff --git a/hatchet.lock b/hatchet.lock new file mode 100644 index 0000000..8c84867 --- /dev/null +++ b/hatchet.lock @@ -0,0 +1,3 @@ +--- +- - test/fixtures/repos/ruby/default_ruby + - master From be183681a7872ed39f176b7e67df0b63a94ae6f8 Mon Sep 17 00:00:00 2001 From: schneems Date: Mon, 29 Jun 2020 12:03:39 -0500 Subject: [PATCH 2/3] Fix mal-formed binstubs --- Rakefile | 7 +++++-- build.rb | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Rakefile b/Rakefile index 7ddbf5f..39fbafa 100644 --- a/Rakefile +++ b/Rakefile @@ -147,8 +147,11 @@ task :test, [:version, :stack, :staging] do |t, args| raise "Could not modify Gemfile: #{out}" unless $?.success? end app.deploy do - out = app.run("echo 'Ruby version: $(ruby -v), Gem version: $(gem -v)'", raw: true) - puts "Stack: #{stack}, #{out.chomp}, s3_bucket: #{staging ? "staging" : "production"}" + out = app.run("cat bin/rake | head -n 1").chomp + raise "Expected #{out} to not include shebang with `bin/ruby` but it did" if out =~ /bin\/ruby/ + + out = app.run("echo 'Ruby version: $(ruby -v), Gem version: $(gem -v)'", raw: true).chomp + puts "Stack: #{stack}, #{out}, s3_bucket: #{staging ? "staging" : "production"}" end end end diff --git a/build.rb b/build.rb index a79993d..920b1cc 100644 --- a/build.rb +++ b/build.rb @@ -187,7 +187,23 @@ def fetch(url, name = nil) end end + Dir.chdir(prefix) do + # Fix malformed binstubs + Dir.entries("bin").each do |entry| + next unless File.file?("bin/#{entry}") + + shebang = `cat bin/#{entry} | head -n 1` + next unless shebang.force_encoding("UTF-8").valid_encoding? # Check if binstub is a binary file + + regex = /#{Regexp.escape("#!/app/vendor/#{full_name}/bin/ruby")}/ + next unless shebang =~ regex + + puts "Fixing binstub for bin/#{entry}" + contents = File.read("bin/#{entry}").gsub(regex, "#!/usr/bin/env ruby") + File.open("bin/#{entry}", "w") {|f| f.write(contents) } + end + filename = if build "ruby-build-#{full_version}.tgz" @@ -195,7 +211,6 @@ def fetch(url, name = nil) "#{full_name}.tgz" end - pipe "ls" puts "Writing #{filename}" FileUtils.mkdir_p("#{output_dir}/#{stack}") pipe("tar czf #{output_dir}/#{stack}/#{filename} *") From 03a589dfd66283b1723826e2c6db33d2b922723a Mon Sep 17 00:00:00 2001 From: schneems Date: Mon, 29 Jun 2020 12:30:02 -0500 Subject: [PATCH 3/3] Update AWS to use latest gem syntax MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Manual test output: ``` $ bundle exec rake test[2.3.0,cedar-14,staging] › Warning: token will expire 04/21/2021 › Use heroku authorizations:create to generate a long-term token Hatchet setup: "hatchet-t-36e571baec" for "default_ruby" Running cat bin/rake | head -n 1 on hatchet-t-36e571baec... up, run.5765 (Free) Running echo "Ruby version: $(ruby -v), Gem version: $(gem -v)" on hatchet-t-36e571baec... up, run.4327 (Free) Stack: cedar-14, Ruby version: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux], Gem version: 2.5.1, s3_bucket: staging Destroying "hatchet-t-418ce77161": 9b0648c1-ac6c-40af-a949-0754c1f1b20e. Hatchet app limit: 20 Warning: Reached Heroku app limit of 100. ⛄ 2.7.1 🚀 ~/Documents/projects/docker-heroku-ruby-builder (schneems/staging-test) $ heroku run "cat bin/rake | head -n 1" -a hatchet-t-36e571baec Running cat bin/rake | head -n 1 on ⬢ hatchet-t-36e571baec... up, run.8771 (Free) #!/usr/bin/env ruby ``` --- Rakefile | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/Rakefile b/Rakefile index 39fbafa..4c06e6a 100644 --- a/Rakefile +++ b/Rakefile @@ -31,20 +31,22 @@ end desc "Upload a ruby to S3" task :upload, [:version, :stack, :staging] do |t, args| - require 'aws-sdk' + require 'aws-sdk-s3' profile_name = "#{S3_BUCKET_NAME}#{args[:staging] ? "-staging" : ""}" - credentials = AWS::Core::CredentialProviders::SharedCredentialFileProvider.new(profile_name: profile_name) + filename = "ruby-#{args[:version]}.tgz" s3_key = "#{args[:stack]}/#{filename.sub(/-(preview|rc)\d+/, '')}" - s3 = AWS::S3.new(access_key_id: ENV.fetch("AWS_ACCESS_KEY_ID"), secret_access_key: ENV.fetch("AWS_SECRET_ACCESS_KEY")) - bucket = s3.buckets[profile_name] - object = bucket.objects[s3_key] + + s3 = Aws::S3::Resource.new(region: "us-east-1", access_key_id: ENV.fetch("AWS_ACCESS_KEY_ID"), secret_access_key: ENV.fetch("AWS_SECRET_ACCESS_KEY")) + bucket = s3.bucket(profile_name) + s3_object = bucket.object(s3_key) output_file = "builds/#{args[:stack]}/#{filename}" puts "Uploading #{output_file} to s3://#{profile_name}/#{s3_key}" - object.write(file: output_file) - object.acl = :public_read + File.open(output_file, 'rb') do |file| + s3_object.put(body: file, acl: "public-read") + end end desc "Make this patchlevel the default for that version" @@ -107,18 +109,10 @@ namespace :batch do puts "Uploading the following rubies:\n* #{rubies.join("\n* ")}" - require 'aws-sdk' - s3 = AWS::S3.new - bucket = s3.buckets[S3_BUCKET_NAME] - rubies.each do |ruby_path| - s3_key = "#{args[:stack]}/#{File.basename(ruby_path)}" - object = bucket.objects[s3_key] - + version = ruby_path.gsub("ruby-") puts "Uploading #{ruby_path} to s3://#{S3_BUCKET_NAME}/{s3_key}" - - object.write(file: ruby_path) - object.acl = :public_read + Rake::Task[:upload].invoke(version, stack) end end end