{"action":"created","comment":{"url":"https://api.github.com/repos/spack/spack/pulls/comments/224682236","pull_request_review_id":164111673,"id":224682236,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyNDY4MjIzNg==","diff_hunk":"@@ -108,13 +108,19 @@ jobs:\n       os: linux\n       language: python\n       env: [ TEST_SUITE=build, 'SPEC=mpich' ]\n+    - stage: 'docker build'\n+      sudo: required\n+      os: linux\n+      language: generic\n+      env: TEST_SUITE=docker\n   allow_failures:\n     - dist: xenial\n \n stages:\n   - 'style checks'\n   - 'unit tests + documentation'\n   - 'build tests'\n+  - 'docker build'","path":".travis.yml","position":16,"original_position":16,"commit_id":"4eb585aca23d3c9572a56c11905445e1dbe3f44f","original_commit_id":"4eb585aca23d3c9572a56c11905445e1dbe3f44f","user":{"login":"tgamblin","id":299842,"node_id":"MDQ6VXNlcjI5OTg0Mg==","avatar_url":"https://avatars3.githubusercontent.com/u/299842?v=4","gravatar_id":"","url":"https://api.github.com/users/tgamblin","html_url":"https://github.com/tgamblin","followers_url":"https://api.github.com/users/tgamblin/followers","following_url":"https://api.github.com/users/tgamblin/following{/other_user}","gists_url":"https://api.github.com/users/tgamblin/gists{/gist_id}","starred_url":"https://api.github.com/users/tgamblin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tgamblin/subscriptions","organizations_url":"https://api.github.com/users/tgamblin/orgs","repos_url":"https://api.github.com/users/tgamblin/repos","events_url":"https://api.github.com/users/tgamblin/events{/privacy}","received_events_url":"https://api.github.com/users/tgamblin/received_events","type":"User","site_admin":false},"body":"Does this need to run every time, on every PR?  It seems like that's too frequent.  I think it should only run on branch builds for develop -- so when `TRAVIS_BRANCH` is set to `develop`.","created_at":"2018-10-12T06:30:27Z","updated_at":"2018-10-12T06:31:12Z","html_url":"https://github.com/spack/spack/pull/9329#discussion_r224682236","pull_request_url":"https://api.github.com/repos/spack/spack/pulls/9329","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/spack/spack/pulls/comments/224682236"},"html":{"href":"https://github.com/spack/spack/pull/9329#discussion_r224682236"},"pull_request":{"href":"https://api.github.com/repos/spack/spack/pulls/9329"}}},"pull_request":{"url":"https://api.github.com/repos/spack/spack/pulls/9329","id":217825674,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE3ODI1Njc0","html_url":"https://github.com/spack/spack/pull/9329","diff_url":"https://github.com/spack/spack/pull/9329.diff","patch_url":"https://github.com/spack/spack/pull/9329.patch","issue_url":"https://api.github.com/repos/spack/spack/issues/9329","number":9329,"state":"open","locked":false,"title":"Unite Dockerfiles - add build/run/push scripts","user":{"login":"opadron","id":2837854,"node_id":"MDQ6VXNlcjI4Mzc4NTQ=","avatar_url":"https://avatars2.githubusercontent.com/u/2837854?v=4","gravatar_id":"","url":"https://api.github.com/users/opadron","html_url":"https://github.com/opadron","followers_url":"https://api.github.com/users/opadron/followers","following_url":"https://api.github.com/users/opadron/following{/other_user}","gists_url":"https://api.github.com/users/opadron/gists{/gist_id}","starred_url":"https://api.github.com/users/opadron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opadron/subscriptions","organizations_url":"https://api.github.com/users/opadron/orgs","repos_url":"https://api.github.com/users/opadron/repos","events_url":"https://api.github.com/users/opadron/events{/privacy}","received_events_url":"https://api.github.com/users/opadron/received_events","type":"User","site_admin":false},"body":"In preparation for pushing Spack docker images in support of the Release and PR testing milestone, I observed that there was still a lot of duplication among the Dockerfiles for the various flavors of Linux, and there were still a lot of area for improvement.  This PR tries to cut duplication down as much as possible, and in a way that tries to be as maintainable as possible.\r\n\r\nI've consolidated all the Dockerfiles into a single one.  It works using a shell script that wraps the script provided to docker during builds.  The script masks out subsets of the provided commands based on embedded annotations and forwards the result to `/bin/bash` for execution.  Using this script as the Dockerfile's `SHELL`, we are able to fully specify which commands to run in which Linux variants, and minimize duplication by providing commands common to multiple variants only once.\r\n\r\nThe reduction in duplication was so considerable that there was very little reason to continue requiring the use of `docker-compose`.  So, it was removed and replaced with shell scripts that make building predefined configurations with just plain docker very straightforward.\r\n\r\nFor example, to use the predefined configuration for ubuntu (based on bionic).\r\n\r\n```Bash\r\ncd share/spack/docker\r\nsource config/ubuntu.bash\r\n./build-image.sh\r\n# ... build ...\r\n./run-image.sh --version # run \"spack --version\" inside the container\r\n./run-image.sh # no arguments -- run an interactive shell session (with local tree mounted)\r\n./push-image.sh # push to dockerhub (need permission to push to spack org)\r\n```\r\nIn addition to making our docker offerings much simpler and more maintainable, this PR also cuts the guess work for building and publishing new versions down practically to zero.  Just source a config (or make your own), build, and push.  To support other variants of linux, just update the Dockerfile with the commands for your variant.","created_at":"2018-09-25T00:36:09Z","updated_at":"2018-10-12T06:31:12Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c7eb83f723a68787a9ca10aea824f5e41778cddc","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":719256466,"node_id":"MDU6TGFiZWw3MTkyNTY0NjY=","url":"https://api.github.com/repos/spack/spack/labels/containers","name":"containers","color":"c5def5","default":false},{"id":832208203,"node_id":"MDU6TGFiZWw4MzIyMDgyMDM=","url":"https://api.github.com/repos/spack/spack/labels/docker","name":"docker","color":"77b9d6","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/spack/spack/pulls/9329/commits","review_comments_url":"https://api.github.com/repos/spack/spack/pulls/9329/comments","review_comment_url":"https://api.github.com/repos/spack/spack/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spack/spack/issues/9329/comments","statuses_url":"https://api.github.com/repos/spack/spack/statuses/4eb585aca23d3c9572a56c11905445e1dbe3f44f","head":{"label":"opadron:unite-dockerfiles","ref":"unite-dockerfiles","sha":"4eb585aca23d3c9572a56c11905445e1dbe3f44f","user":{"login":"opadron","id":2837854,"node_id":"MDQ6VXNlcjI4Mzc4NTQ=","avatar_url":"https://avatars2.githubusercontent.com/u/2837854?v=4","gravatar_id":"","url":"https://api.github.com/users/opadron","html_url":"https://github.com/opadron","followers_url":"https://api.github.com/users/opadron/followers","following_url":"https://api.github.com/users/opadron/following{/other_user}","gists_url":"https://api.github.com/users/opadron/gists{/gist_id}","starred_url":"https://api.github.com/users/opadron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opadron/subscriptions","organizations_url":"https://api.github.com/users/opadron/orgs","repos_url":"https://api.github.com/users/opadron/repos","events_url":"https://api.github.com/users/opadron/events{/privacy}","received_events_url":"https://api.github.com/users/opadron/received_events","type":"User","site_admin":false},"repo":{"id":106852101,"node_id":"MDEwOlJlcG9zaXRvcnkxMDY4NTIxMDE=","name":"spack","full_name":"opadron/spack","private":false,"owner":{"login":"opadron","id":2837854,"node_id":"MDQ6VXNlcjI4Mzc4NTQ=","avatar_url":"https://avatars2.githubusercontent.com/u/2837854?v=4","gravatar_id":"","url":"https://api.github.com/users/opadron","html_url":"https://github.com/opadron","followers_url":"https://api.github.com/users/opadron/followers","following_url":"https://api.github.com/users/opadron/following{/other_user}","gists_url":"https://api.github.com/users/opadron/gists{/gist_id}","starred_url":"https://api.github.com/users/opadron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opadron/subscriptions","organizations_url":"https://api.github.com/users/opadron/orgs","repos_url":"https://api.github.com/users/opadron/repos","events_url":"https://api.github.com/users/opadron/events{/privacy}","received_events_url":"https://api.github.com/users/opadron/received_events","type":"User","site_admin":false},"html_url":"https://github.com/opadron/spack","description":"A flexible package manager that supports multiple versions, configurations, platforms, and compilers.","fork":true,"url":"https://api.github.com/repos/opadron/spack","forks_url":"https://api.github.com/repos/opadron/spack/forks","keys_url":"https://api.github.com/repos/opadron/spack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/opadron/spack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/opadron/spack/teams","hooks_url":"https://api.github.com/repos/opadron/spack/hooks","issue_events_url":"https://api.github.com/repos/opadron/spack/issues/events{/number}","events_url":"https://api.github.com/repos/opadron/spack/events","assignees_url":"https://api.github.com/repos/opadron/spack/assignees{/user}","branches_url":"https://api.github.com/repos/opadron/spack/branches{/branch}","tags_url":"https://api.github.com/repos/opadron/spack/tags","blobs_url":"https://api.github.com/repos/opadron/spack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/opadron/spack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/opadron/spack/git/refs{/sha}","trees_url":"https://api.github.com/repos/opadron/spack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/opadron/spack/statuses/{sha}","languages_url":"https://api.github.com/repos/opadron/spack/languages","stargazers_url":"https://api.github.com/repos/opadron/spack/stargazers","contributors_url":"https://api.github.com/repos/opadron/spack/contributors","subscribers_url":"https://api.github.com/repos/opadron/spack/subscribers","subscription_url":"https://api.github.com/repos/opadron/spack/subscription","commits_url":"https://api.github.com/repos/opadron/spack/commits{/sha}","git_commits_url":"https://api.github.com/repos/opadron/spack/git/commits{/sha}","comments_url":"https://api.github.com/repos/opadron/spack/comments{/number}","issue_comment_url":"https://api.github.com/repos/opadron/spack/issues/comments{/number}","contents_url":"https://api.github.com/repos/opadron/spack/contents/{+path}","compare_url":"https://api.github.com/repos/opadron/spack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/opadron/spack/merges","archive_url":"https://api.github.com/repos/opadron/spack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/opadron/spack/downloads","issues_url":"https://api.github.com/repos/opadron/spack/issues{/number}","pulls_url":"https://api.github.com/repos/opadron/spack/pulls{/number}","milestones_url":"https://api.github.com/repos/opadron/spack/milestones{/number}","notifications_url":"https://api.github.com/repos/opadron/spack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/opadron/spack/labels{/name}","releases_url":"https://api.github.com/repos/opadron/spack/releases{/id}","deployments_url":"https://api.github.com/repos/opadron/spack/deployments","created_at":"2017-10-13T17:08:26Z","updated_at":"2018-10-05T16:17:47Z","pushed_at":"2018-10-05T16:17:36Z","git_url":"git://github.com/opadron/spack.git","ssh_url":"git@github.com:opadron/spack.git","clone_url":"https://github.com/opadron/spack.git","svn_url":"https://github.com/opadron/spack","homepage":"https://spack.io","size":44510,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"spack:develop","ref":"develop","sha":"5aa05b8ef496e9601e74ba3a43240ae9bb3d14aa","user":{"login":"spack","id":25539161,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1NTM5MTYx","avatar_url":"https://avatars2.githubusercontent.com/u/25539161?v=4","gravatar_id":"","url":"https://api.github.com/users/spack","html_url":"https://github.com/spack","followers_url":"https://api.github.com/users/spack/followers","following_url":"https://api.github.com/users/spack/following{/other_user}","gists_url":"https://api.github.com/users/spack/gists{/gist_id}","starred_url":"https://api.github.com/users/spack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spack/subscriptions","organizations_url":"https://api.github.com/users/spack/orgs","repos_url":"https://api.github.com/users/spack/repos","events_url":"https://api.github.com/users/spack/events{/privacy}","received_events_url":"https://api.github.com/users/spack/received_events","type":"Organization","site_admin":false},"repo":{"id":15730865,"node_id":"MDEwOlJlcG9zaXRvcnkxNTczMDg2NQ==","name":"spack","full_name":"spack/spack","private":false,"owner":{"login":"spack","id":25539161,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1NTM5MTYx","avatar_url":"https://avatars2.githubusercontent.com/u/25539161?v=4","gravatar_id":"","url":"https://api.github.com/users/spack","html_url":"https://github.com/spack","followers_url":"https://api.github.com/users/spack/followers","following_url":"https://api.github.com/users/spack/following{/other_user}","gists_url":"https://api.github.com/users/spack/gists{/gist_id}","starred_url":"https://api.github.com/users/spack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spack/subscriptions","organizations_url":"https://api.github.com/users/spack/orgs","repos_url":"https://api.github.com/users/spack/repos","events_url":"https://api.github.com/users/spack/events{/privacy}","received_events_url":"https://api.github.com/users/spack/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/spack/spack","description":"A flexible package manager that supports multiple versions, configurations, platforms, and compilers.","fork":false,"url":"https://api.github.com/repos/spack/spack","forks_url":"https://api.github.com/repos/spack/spack/forks","keys_url":"https://api.github.com/repos/spack/spack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spack/spack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spack/spack/teams","hooks_url":"https://api.github.com/repos/spack/spack/hooks","issue_events_url":"https://api.github.com/repos/spack/spack/issues/events{/number}","events_url":"https://api.github.com/repos/spack/spack/events","assignees_url":"https://api.github.com/repos/spack/spack/assignees{/user}","branches_url":"https://api.github.com/repos/spack/spack/branches{/branch}","tags_url":"https://api.github.com/repos/spack/spack/tags","blobs_url":"https://api.github.com/repos/spack/spack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spack/spack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spack/spack/git/refs{/sha}","trees_url":"https://api.github.com/repos/spack/spack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spack/spack/statuses/{sha}","languages_url":"https://api.github.com/repos/spack/spack/languages","stargazers_url":"https://api.github.com/repos/spack/spack/stargazers","contributors_url":"https://api.github.com/repos/spack/spack/contributors","subscribers_url":"https://api.github.com/repos/spack/spack/subscribers","subscription_url":"https://api.github.com/repos/spack/spack/subscription","commits_url":"https://api.github.com/repos/spack/spack/commits{/sha}","git_commits_url":"https://api.github.com/repos/spack/spack/git/commits{/sha}","comments_url":"https://api.github.com/repos/spack/spack/comments{/number}","issue_comment_url":"https://api.github.com/repos/spack/spack/issues/comments{/number}","contents_url":"https://api.github.com/repos/spack/spack/contents/{+path}","compare_url":"https://api.github.com/repos/spack/spack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spack/spack/merges","archive_url":"https://api.github.com/repos/spack/spack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spack/spack/downloads","issues_url":"https://api.github.com/repos/spack/spack/issues{/number}","pulls_url":"https://api.github.com/repos/spack/spack/pulls{/number}","milestones_url":"https://api.github.com/repos/spack/spack/milestones{/number}","notifications_url":"https://api.github.com/repos/spack/spack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spack/spack/labels{/name}","releases_url":"https://api.github.com/repos/spack/spack/releases{/id}","deployments_url":"https://api.github.com/repos/spack/spack/deployments","created_at":"2014-01-08T09:22:12Z","updated_at":"2018-10-11T21:30:01Z","pushed_at":"2018-10-12T05:43:19Z","git_url":"git://github.com/spack/spack.git","ssh_url":"git@github.com:spack/spack.git","clone_url":"https://github.com/spack/spack.git","svn_url":"https://github.com/spack/spack","homepage":"https://spack.io","size":47033,"stargazers_count":677,"watchers_count":677,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":521,"mirror_url":null,"archived":false,"open_issues_count":1078,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":521,"open_issues":1078,"watchers":677,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/spack/spack/pulls/9329"},"html":{"href":"https://github.com/spack/spack/pull/9329"},"issue":{"href":"https://api.github.com/repos/spack/spack/issues/9329"},"comments":{"href":"https://api.github.com/repos/spack/spack/issues/9329/comments"},"review_comments":{"href":"https://api.github.com/repos/spack/spack/pulls/9329/comments"},"review_comment":{"href":"https://api.github.com/repos/spack/spack/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spack/spack/pulls/9329/commits"},"statuses":{"href":"https://api.github.com/repos/spack/spack/statuses/4eb585aca23d3c9572a56c11905445e1dbe3f44f"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"tgamblin"}}