{"action":"created","comment":{"url":"https://api.github.com/repos/edx/edx-gomatic/pulls/comments/72635458","id":72635458,"diff_hunk":"@@ -0,0 +1,173 @@\n+#!/usr/bin/env python\n+\n+from gomatic import *\n+\n+import click\n+import edxpipelines.utils as utils\n+import edxpipelines.patterns.tasks as tasks\n+\n+\n+@click.command()\n+@click.option('--save-config', 'save_config_locally', envvar='SAVE_CONFIG',\n+              help='Save the pipeline configuration xml locally', required=False, default=False)\n+@click.option('--dry-run', envvar='DRY_RUN',\n+              help='do a dry run of  the pipeline installation, and save the pre/post xml configurations locally',\n+              required=False, default=False)\n+@click.option('--variable_file', 'variable_files', multiple=True,\n+              help='path to yaml variable file with a dictionary of key/value pairs to be used as variables in the script',\n+              required=False, default = [])\n+@click.option('-e', '--variable', 'cmd_line_vars', multiple=True,\n+              help='key/value of a variable used as a replacement in this script', required=False, type=(str, str),\n+              nargs=2, default = {})\n+def install_pipeline(save_config_locally, dry_run, variable_files, cmd_line_vars):\n+    config = utils.merge_files_and_dicts(variable_files, list(cmd_line_vars, ))\n+\n+    configurator = GoCdConfigurator(\n+        HostRestClient(config['gocd_url'], config['gocd_username'], config['gocd_password'], ssl=True))\n+\n+    pipeline = configurator \\\n+        .ensure_pipeline_group(\"marketing_deployment\") \\\n+        .ensure_replacement_of_pipeline(\"marketing_deployment\") \\\n+        .set_git_material(GitMaterial(\"https://github.com/edx/tubular\", polling=False))\n+\n+    push_to_drupal_stage = pipeline.ensure_stage(\"github_workflow\")\n+    push_to_drupal_job = push_to_drupal_stage.ensure_job(\"push_to_drupal_job\")\n+    # Ensures the tag name is accessible in future jobs.\n+    push_to_drupal_job.ensure_artifacts(\n+        [BuildArtifact(\"target/tag_name.txt\")]\n+    )\n+    pipeline.ensure_encrypted_environment_variables(\n+        {\n+            'PRIVATE_GITHUB_KEY': config['private_github_key'],\n+            'PRIVATE_MARKETING_REPOSITORY_URL': config['mktg_repository_url'],  # I dunno, you pick the name, mktg_repository_url will go in a <config>.yml file that you feed this script\n+            'PRIVATE_MARKETING_REPOSITORY_VERSION': config['mktg_repository_version'], # this can be overridden by the person running the pipeline when they click play + on the UI\n+            'PRIVATE_ECOM_REPOSITORY_URL': config['ecom_repository_url'],\n+            'PRIVATE_ECOM_REPOSITORY_VERSION': config['ecom_repository_version'],\n+            # Any further variables you need inside this stage to push to aquia should go here, you'll also need the url for the aquia remote\n+            'PRIVATE_ACQUIA_REMOTE': config['acquia_remote_url'],\n+            # Unless we start using drush commands again, Acquia account credentials can be stored in config\n+            # since we need to directly pass in its contents as opposed to drush searching for the file.\n+            'PRIVATE_ACQUIA_USERNAME': config['acquia_username'],\n+            'PRIVATE_ACQUIA_PASSWORD': config['acquia_password'],\n+         }\n+    )\n+\n+    tasks.generate_target_directory(push_to_drupal_job)\n+    tasks.fetch_gomatic_secure(push_to_drupal_job, 'gomatic-secure')\n+    tasks.fetch_secure_repo(push_to_drupal_job, 'edx-mktg', 'PRIVATE_MARKETING_REPOSITORY_URL',\n+                            'PRIVATE_MARKETING_REPOSITORY_VERSION', 'edx-mktg')\n+\n+    # Checkout and pull the master branch of marketing repo.\n+    push_to_drupal_job.add_task(\n+        ExecTask(\n+            [\n+                '/bin/bash',\n+                '-c',\n+                '/usr/bin/git checkout master && ', # Possibly unnecessary since it should be covered under the repo_version env variable, but included to double check\n+                '/usr/bin/git pull origin master' # Possibly able to remove 'origin master'\n+            ],\n+            working_dir='edx-mktg/'\n+        )\n+    )\n+\n+    # Create a tag from master branch of marketing repo\n+    push_to_drupal_job.add_task(\n+        ExecTask(\n+            [\n+                'bin/bash',\n+                '-c',\n+                # Writing dates to a file should help with any issues dealing with a job\n+                # taking place over two days (23:59:59 -> 00:00:00). Only the day can be\n+                # affected since we don't use minutes or seconds.\n+                'echo -n \"release-`date +%Y-%m-%d`\" > ../target/tag_name.txt && ',\n+                # Not sure this is right, but since my working_dir is edx/mktg, figured I wouldn't want to make target inside of it.\n+                'echo -n \"`date +B\\ %d,\\ %Y`\" > ../target/message.txt && ',\n+                'TAG_NAME=`cat ../target/tag_name.txt` && ',\n+                '/usr/bin/git tag -a $TAG_NAME -m \"Release for `cat ../target/message.txt`\" && ',\n+                '/usr/bin/git push origin $TAG_NAME',\n+            ],\n+            working_dir='edx-mktg/'\n+        )\n+    )\n+\n+    # Set up Acquia remote repo and push tag to Acquia\n+    push_to_drupal_job.add_task(\n+        ExecTask(\n+            [\n+                'bin/bash',\n+                '-c',\n+                'TAG_NAME=`cat ../target/tag_name.txt` && ',\n+                '/usr/bin/git remote add acquia $PRIVATE_ACQUIA_REMOTE && ',\n+                '/usr/bin/git push acquia $TAG_NAME'\n+            ],\n+            working_dir='edx-mktg/'\n+        )\n+    )\n+\n+    # Stage to clear caches in stage\n+    clear_stage_caches_stage = pipeline.ensure_stage(\"clear_drupal_stage_caches\")\n+    clear_stage_caches_job = clear_stage_caches_stage.ensure_job('clear_stage_caches_job')\n+    # Do not need to use ecom-secure until we start using drush acquia commands.\n+    # tasks.fetch_secure_repo(push_to_drupal_job, 'ecom-secure', 'PRIVATE_ECOM_REPOSITROY_URL',\n+    #                         'PRIVATE_ECOM_REPOSITORY_VERSION', 'ecom-secure')\n+    tasks.generate_requirements_install(clear_stage_caches_job, 'tubular')\n+    tasks.flush_drupal_caches('test', 'PRIVATE_ACQUIA_USERNAME', 'PRIVATE_ACQUIA_PASSWORD')\n+\n+    # Stage to deploy to stage\n+    deploy_stage_for_stage = pipeline.ensure_stage(\"deploy_drupal_to_stage\")\n+    deploy_job_for_stage = deploy_stage_for_stage.ensure_job('deploy_to_stage_job')\n+    tasks.generate_requirements_install(deploy_job_for_stage, 'tubular')\n+    tasks.generate_target_directory(deploy_job_for_stage)\n+    deploy_job_for_stage.add_task(\n+        ExecTask(\n+            [\n+                '/bin/bash',\n+                '-c',\n+                'TAG_NAME=`cat ../target/tag_name.txt` && ',\n+                'python scripts/drupal_deploy.py '\n+                '--env test '\n+                '--username $PRIVATE_ACQUIA_USERNAME '\n+                '--password $PRIVATE_ACQUIA_PASSWORD '\n+                '--tag $TAG_NAME'\n+            ],\n+            working_dir='tubular/'\n+        )\n+    )\n+\n+    # Stage to clear caches in prod\n+    clear_prod_caches_stage = pipeline.ensure_stage(\"clear_drupal_prod_caches\")\n+    # Should only run if manually started\n+    clear_prod_caches_stage.set_has_manual_approval()\n+    clear_prod_caches_job = clear_prod_caches_stage.ensure_job('clear_prod_caches_job')\n+    # Do not need to use ecom-secure until we start using drush acquia commands.\n+    # tasks.fetch_secure_repo(push_to_drupal_job, 'ecom-secure', 'PRIVATE_ECOM_REPOSITROY_URL',\n+    #                         'PRIVATE_ECOM_REPOSITORY_VERSION', 'ecom-secure')\n+    tasks.generate_requirements_install(clear_prod_caches_job, 'tubular')\n+    tasks.flush_drupal_caches('prod', 'PRIVATE_ACQUIA_USERNAME', 'PRIVATE_ACQUIA_PASSWORD')\n+\n+    # Stage to deploy to prod\n+    deploy_stage_for_prod = pipeline.ensure_stage(\"deploy_drupal_to_prod\")\n+    deploy_job_for_prod = deploy_stage_for_prod.ensure_job('deploy_to_prod_job')\n+    tasks.generate_requirements_install(deploy_job_for_prod, 'tubular')\n+    tasks.generate_target_directory(deploy_job_for_prod)\n+    deploy_job_for_prod.add_task(\n+        ExecTask(\n+            [\n+                '/bin/bash',\n+                '-c',\n+                'TAG_NAME=`cat ../target/tag_name.txt` && ',","path":"edxpipelines/pipelines/deploy_marketing_site.py","position":170,"original_position":158,"commit_id":"c58c9c16d21193fe5e6c533af7837f07e95c09c8","original_commit_id":"d1ae8c499b12cc2596f71c076e3052aa1cfaee33","user":{"login":"Dillon-Dumesnil","id":12799718,"avatar_url":"https://avatars.githubusercontent.com/u/12799718?v=3","gravatar_id":"","url":"https://api.github.com/users/Dillon-Dumesnil","html_url":"https://github.com/Dillon-Dumesnil","followers_url":"https://api.github.com/users/Dillon-Dumesnil/followers","following_url":"https://api.github.com/users/Dillon-Dumesnil/following{/other_user}","gists_url":"https://api.github.com/users/Dillon-Dumesnil/gists{/gist_id}","starred_url":"https://api.github.com/users/Dillon-Dumesnil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dillon-Dumesnil/subscriptions","organizations_url":"https://api.github.com/users/Dillon-Dumesnil/orgs","repos_url":"https://api.github.com/users/Dillon-Dumesnil/repos","events_url":"https://api.github.com/users/Dillon-Dumesnil/events{/privacy}","received_events_url":"https://api.github.com/users/Dillon-Dumesnil/received_events","type":"User","site_admin":false},"body":"Done","created_at":"2016-07-28T14:42:57Z","updated_at":"2016-07-28T14:42:57Z","html_url":"https://github.com/edx/edx-gomatic/pull/15#discussion_r72635458","pull_request_url":"https://api.github.com/repos/edx/edx-gomatic/pulls/15","_links":{"self":{"href":"https://api.github.com/repos/edx/edx-gomatic/pulls/comments/72635458"},"html":{"href":"https://github.com/edx/edx-gomatic/pull/15#discussion_r72635458"},"pull_request":{"href":"https://api.github.com/repos/edx/edx-gomatic/pulls/15"}}},"pull_request":{"url":"https://api.github.com/repos/edx/edx-gomatic/pulls/15","id":78690372,"html_url":"https://github.com/edx/edx-gomatic/pull/15","diff_url":"https://github.com/edx/edx-gomatic/pull/15.diff","patch_url":"https://github.com/edx/edx-gomatic/pull/15.patch","issue_url":"https://api.github.com/repos/edx/edx-gomatic/issues/15","number":15,"state":"open","locked":false,"title":"Ddumesnil/drupal","user":{"login":"Dillon-Dumesnil","id":12799718,"avatar_url":"https://avatars.githubusercontent.com/u/12799718?v=3","gravatar_id":"","url":"https://api.github.com/users/Dillon-Dumesnil","html_url":"https://github.com/Dillon-Dumesnil","followers_url":"https://api.github.com/users/Dillon-Dumesnil/followers","following_url":"https://api.github.com/users/Dillon-Dumesnil/following{/other_user}","gists_url":"https://api.github.com/users/Dillon-Dumesnil/gists{/gist_id}","starred_url":"https://api.github.com/users/Dillon-Dumesnil/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dillon-Dumesnil/subscriptions","organizations_url":"https://api.github.com/users/Dillon-Dumesnil/orgs","repos_url":"https://api.github.com/users/Dillon-Dumesnil/repos","events_url":"https://api.github.com/users/Dillon-Dumesnil/events{/privacy}","received_events_url":"https://api.github.com/users/Dillon-Dumesnil/received_events","type":"User","site_admin":false},"body":"@edx/pipeline-team Please review. Also, thoughts on making the deploy task into a pattern or just writing the clear caches script into the clear caches jobs directly in the deploy_marketing_site file? I use both the same number of times, but once as a pattern and once inline.\r\n@edx/ecommerce FYI. Clinton, please review.\r\nhttps://openedx.atlassian.net/browse/ECOM-4918\r\nhttps://openedx.atlassian.net/browse/ECOM-4921\r\nhttps://openedx.atlassian.net/browse/ECOM-4924","created_at":"2016-07-25T14:25:29Z","updated_at":"2016-07-28T14:42:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a1f419cda5399cbc944d21c296497f3da0b6b840","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/edx/edx-gomatic/pulls/15/commits","review_comments_url":"https://api.github.com/repos/edx/edx-gomatic/pulls/15/comments","review_comment_url":"https://api.github.com/repos/edx/edx-gomatic/pulls/comments{/number}","comments_url":"https://api.github.com/repos/edx/edx-gomatic/issues/15/comments","statuses_url":"https://api.github.com/repos/edx/edx-gomatic/statuses/c58c9c16d21193fe5e6c533af7837f07e95c09c8","head":{"label":"edx:ddumesnil/drupal","ref":"ddumesnil/drupal","sha":"c58c9c16d21193fe5e6c533af7837f07e95c09c8","user":{"login":"edx","id":3179841,"avatar_url":"https://avatars.githubusercontent.com/u/3179841?v=3","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"repo":{"id":61151389,"name":"edx-gomatic","full_name":"edx/edx-gomatic","owner":{"login":"edx","id":3179841,"avatar_url":"https://avatars.githubusercontent.com/u/3179841?v=3","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/edx/edx-gomatic","description":"Collection of gomatic scripts used at edx","fork":false,"url":"https://api.github.com/repos/edx/edx-gomatic","forks_url":"https://api.github.com/repos/edx/edx-gomatic/forks","keys_url":"https://api.github.com/repos/edx/edx-gomatic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/edx/edx-gomatic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/edx/edx-gomatic/teams","hooks_url":"https://api.github.com/repos/edx/edx-gomatic/hooks","issue_events_url":"https://api.github.com/repos/edx/edx-gomatic/issues/events{/number}","events_url":"https://api.github.com/repos/edx/edx-gomatic/events","assignees_url":"https://api.github.com/repos/edx/edx-gomatic/assignees{/user}","branches_url":"https://api.github.com/repos/edx/edx-gomatic/branches{/branch}","tags_url":"https://api.github.com/repos/edx/edx-gomatic/tags","blobs_url":"https://api.github.com/repos/edx/edx-gomatic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/edx/edx-gomatic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/edx/edx-gomatic/git/refs{/sha}","trees_url":"https://api.github.com/repos/edx/edx-gomatic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/edx/edx-gomatic/statuses/{sha}","languages_url":"https://api.github.com/repos/edx/edx-gomatic/languages","stargazers_url":"https://api.github.com/repos/edx/edx-gomatic/stargazers","contributors_url":"https://api.github.com/repos/edx/edx-gomatic/contributors","subscribers_url":"https://api.github.com/repos/edx/edx-gomatic/subscribers","subscription_url":"https://api.github.com/repos/edx/edx-gomatic/subscription","commits_url":"https://api.github.com/repos/edx/edx-gomatic/commits{/sha}","git_commits_url":"https://api.github.com/repos/edx/edx-gomatic/git/commits{/sha}","comments_url":"https://api.github.com/repos/edx/edx-gomatic/comments{/number}","issue_comment_url":"https://api.github.com/repos/edx/edx-gomatic/issues/comments{/number}","contents_url":"https://api.github.com/repos/edx/edx-gomatic/contents/{+path}","compare_url":"https://api.github.com/repos/edx/edx-gomatic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/edx/edx-gomatic/merges","archive_url":"https://api.github.com/repos/edx/edx-gomatic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/edx/edx-gomatic/downloads","issues_url":"https://api.github.com/repos/edx/edx-gomatic/issues{/number}","pulls_url":"https://api.github.com/repos/edx/edx-gomatic/pulls{/number}","milestones_url":"https://api.github.com/repos/edx/edx-gomatic/milestones{/number}","notifications_url":"https://api.github.com/repos/edx/edx-gomatic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/edx/edx-gomatic/labels{/name}","releases_url":"https://api.github.com/repos/edx/edx-gomatic/releases{/id}","deployments_url":"https://api.github.com/repos/edx/edx-gomatic/deployments","created_at":"2016-06-14T19:50:32Z","updated_at":"2016-06-22T20:30:37Z","pushed_at":"2016-07-28T14:26:09Z","git_url":"git://github.com/edx/edx-gomatic.git","ssh_url":"git@github.com:edx/edx-gomatic.git","clone_url":"https://github.com/edx/edx-gomatic.git","svn_url":"https://github.com/edx/edx-gomatic","homepage":null,"size":92,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"edx:master","ref":"master","sha":"88647edc37b2d1a8e831f9de4ed1161a937c6b8e","user":{"login":"edx","id":3179841,"avatar_url":"https://avatars.githubusercontent.com/u/3179841?v=3","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"repo":{"id":61151389,"name":"edx-gomatic","full_name":"edx/edx-gomatic","owner":{"login":"edx","id":3179841,"avatar_url":"https://avatars.githubusercontent.com/u/3179841?v=3","gravatar_id":"","url":"https://api.github.com/users/edx","html_url":"https://github.com/edx","followers_url":"https://api.github.com/users/edx/followers","following_url":"https://api.github.com/users/edx/following{/other_user}","gists_url":"https://api.github.com/users/edx/gists{/gist_id}","starred_url":"https://api.github.com/users/edx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edx/subscriptions","organizations_url":"https://api.github.com/users/edx/orgs","repos_url":"https://api.github.com/users/edx/repos","events_url":"https://api.github.com/users/edx/events{/privacy}","received_events_url":"https://api.github.com/users/edx/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/edx/edx-gomatic","description":"Collection of gomatic scripts used at edx","fork":false,"url":"https://api.github.com/repos/edx/edx-gomatic","forks_url":"https://api.github.com/repos/edx/edx-gomatic/forks","keys_url":"https://api.github.com/repos/edx/edx-gomatic/keys{/key_id}","collaborators_url":"https://api.github.com/repos/edx/edx-gomatic/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/edx/edx-gomatic/teams","hooks_url":"https://api.github.com/repos/edx/edx-gomatic/hooks","issue_events_url":"https://api.github.com/repos/edx/edx-gomatic/issues/events{/number}","events_url":"https://api.github.com/repos/edx/edx-gomatic/events","assignees_url":"https://api.github.com/repos/edx/edx-gomatic/assignees{/user}","branches_url":"https://api.github.com/repos/edx/edx-gomatic/branches{/branch}","tags_url":"https://api.github.com/repos/edx/edx-gomatic/tags","blobs_url":"https://api.github.com/repos/edx/edx-gomatic/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/edx/edx-gomatic/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/edx/edx-gomatic/git/refs{/sha}","trees_url":"https://api.github.com/repos/edx/edx-gomatic/git/trees{/sha}","statuses_url":"https://api.github.com/repos/edx/edx-gomatic/statuses/{sha}","languages_url":"https://api.github.com/repos/edx/edx-gomatic/languages","stargazers_url":"https://api.github.com/repos/edx/edx-gomatic/stargazers","contributors_url":"https://api.github.com/repos/edx/edx-gomatic/contributors","subscribers_url":"https://api.github.com/repos/edx/edx-gomatic/subscribers","subscription_url":"https://api.github.com/repos/edx/edx-gomatic/subscription","commits_url":"https://api.github.com/repos/edx/edx-gomatic/commits{/sha}","git_commits_url":"https://api.github.com/repos/edx/edx-gomatic/git/commits{/sha}","comments_url":"https://api.github.com/repos/edx/edx-gomatic/comments{/number}","issue_comment_url":"https://api.github.com/repos/edx/edx-gomatic/issues/comments{/number}","contents_url":"https://api.github.com/repos/edx/edx-gomatic/contents/{+path}","compare_url":"https://api.github.com/repos/edx/edx-gomatic/compare/{base}...{head}","merges_url":"https://api.github.com/repos/edx/edx-gomatic/merges","archive_url":"https://api.github.com/repos/edx/edx-gomatic/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/edx/edx-gomatic/downloads","issues_url":"https://api.github.com/repos/edx/edx-gomatic/issues{/number}","pulls_url":"https://api.github.com/repos/edx/edx-gomatic/pulls{/number}","milestones_url":"https://api.github.com/repos/edx/edx-gomatic/milestones{/number}","notifications_url":"https://api.github.com/repos/edx/edx-gomatic/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/edx/edx-gomatic/labels{/name}","releases_url":"https://api.github.com/repos/edx/edx-gomatic/releases{/id}","deployments_url":"https://api.github.com/repos/edx/edx-gomatic/deployments","created_at":"2016-06-14T19:50:32Z","updated_at":"2016-06-22T20:30:37Z","pushed_at":"2016-07-28T14:26:09Z","git_url":"git://github.com/edx/edx-gomatic.git","ssh_url":"git@github.com:edx/edx-gomatic.git","clone_url":"https://github.com/edx/edx-gomatic.git","svn_url":"https://github.com/edx/edx-gomatic","homepage":null,"size":92,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/edx/edx-gomatic/pulls/15"},"html":{"href":"https://github.com/edx/edx-gomatic/pull/15"},"issue":{"href":"https://api.github.com/repos/edx/edx-gomatic/issues/15"},"comments":{"href":"https://api.github.com/repos/edx/edx-gomatic/issues/15/comments"},"review_comments":{"href":"https://api.github.com/repos/edx/edx-gomatic/pulls/15/comments"},"review_comment":{"href":"https://api.github.com/repos/edx/edx-gomatic/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/edx/edx-gomatic/pulls/15/commits"},"statuses":{"href":"https://api.github.com/repos/edx/edx-gomatic/statuses/c58c9c16d21193fe5e6c533af7837f07e95c09c8"}}}}
{"actor":{"display_login":"Dillon-Dumesnil"}}