René's URL Explorer Experiment


Title: Add PR binary graduation to the things spackbot can do by scottwittenburg · Pull Request #45 · spack/spackbot · GitHub

Open Graph Title: Add PR binary graduation to the things spackbot can do by scottwittenburg · Pull Request #45 · spack/spackbot

X Title: Add PR binary graduation to the things spackbot can do by scottwittenburg · Pull Request #45 · spack/spackbot

Description: Add a new handler to spackbot routing to process spack PRs which have been merged to develop. When these events happen, we want to copy the binaries from the per-PR mirror used by gitlab pipelines run against the PR to a shared PR mirror. The shared PR mirror can then be used by other PR pipelines that come along before the develop pipeline (associated with the aforementioned merged PR) finishes populating the main mirror with its own copies of those binaries. Because copying the binaries could take awhile (depending on the number of specs the PR had to rebuild), and the update of the shared PR mirror index could take a long time (depending on the number of binaries in the mirror), this PR uses the rq module to schedule those tasks as jobs to be run by another process in a separate container, freeing up the handler to return quickly. I've tested this using the updated docker-compose.yml and a webhook I set up on the spack repo to send events on pull requests. Because that's not the same as when a github app sends the requests, I temporarily commented out the installation authentication part for my testing. I'd love a better workflow for testing this part of spackbot without breaking it for everyone else though. I'm currently working on a change to spack-infrastructure to update the spackbot-spack-io deployment to reflect the extra containers spackbot will need to support doing PR binary graduation this way. See that PR to see how the deployment looks and how I'm testing it "in production". Remaining TODO: Clean up per-PR mirrors here rather than in the cron where it is done currently (by this code). We don't want binaries deleted while we're still copying them. Uncomment things that are commented for testing: installation authentication and all route registration not required for PR binary graduation Sort out the mismatch between where spackbot images get pushed and where the k8s deployment pulls them

Open Graph Description: Add a new handler to spackbot routing to process spack PRs which have been merged to develop. When these events happen, we want to copy the binaries from the per-PR mirror used by gitlab pipelines...

X Description: Add a new handler to spackbot routing to process spack PRs which have been merged to develop. When these events happen, we want to copy the binaries from the per-PR mirror used by gitlab pipelines...

Opengraph URL: https://github.com/spack/spackbot/pull/45

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:4fa8887d-3f24-f983-97f0-1f32efb6f046
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idC2C4:2608B0:18BEBE:2396DF:6A4BBFBC
html-safe-nonceba2f6d64d7a15ee47ea66cd292c7be8d8a7add99d2887649f4a8ea9ad78ce11e
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMkM0OjI2MDhCMDoxOEJFQkU6MjM5NkRGOjZBNEJCRkJDIiwidmlzaXRvcl9pZCI6IjQ2NTE3NTYxMjgwNTIxNjY1ODgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmace4765745f0557e75a823053c6ea166ecf5fa74970d494ece9e36dc3f819f6b71
hovercard-subject-tagpull_request:709632043
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/spack/spackbot/pull/45/files
twitter:imagehttps://avatars.githubusercontent.com/u/6527504?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/6527504?s=400&v=4
og:image:altAdd a new handler to spackbot routing to process spack PRs which have been merged to develop. When these events happen, we want to copy the binaries from the per-PR mirror used by gitlab pipelines...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneae1c14875555a1dd92bdef45baa6dd9aa796df891e4e471989f7117fe3139fc1
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/spack/spackbot git https://github.com/spack/spackbot.git
octolytics-dimension-user_id25539161
octolytics-dimension-user_loginspack
octolytics-dimension-repository_id313734375
octolytics-dimension-repository_nwospack/spackbot
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id313734375
octolytics-dimension-repository_network_root_nwospack/spackbot
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releaseb15c57117aeff522995a9578e1185f6c45d6c562
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/spack/spackbot/pull/45/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fspack%2Fspackbot%2Fpull%2F45%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fspack%2Fspackbot%2Fpull%2F45%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=spack%2Fspackbot
Reloadhttps://github.com/spack/spackbot/pull/45/files
Reloadhttps://github.com/spack/spackbot/pull/45/files
Reloadhttps://github.com/spack/spackbot/pull/45/files
Please reload this pagehttps://github.com/spack/spackbot/pull/45/files
spack https://github.com/spack
spackbothttps://github.com/spack/spackbot
Notifications https://github.com/login?return_to=%2Fspack%2Fspackbot
Fork 14 https://github.com/login?return_to=%2Fspack%2Fspackbot
Star 9 https://github.com/login?return_to=%2Fspack%2Fspackbot
Code https://github.com/spack/spackbot
Issues 30 https://github.com/spack/spackbot/issues
Pull requests 4 https://github.com/spack/spackbot/pulls
Actions https://github.com/spack/spackbot/actions
Projects https://github.com/spack/spackbot/projects
Models https://github.com/spack/spackbot/models
Security and quality 0 https://github.com/spack/spackbot/security
Insights https://github.com/spack/spackbot/pulse
Code https://github.com/spack/spackbot
Issues https://github.com/spack/spackbot/issues
Pull requests https://github.com/spack/spackbot/pulls
Actions https://github.com/spack/spackbot/actions
Projects https://github.com/spack/spackbot/projects
Models https://github.com/spack/spackbot/models
Security and quality https://github.com/spack/spackbot/security
Insights https://github.com/spack/spackbot/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fspack%2Fspackbot%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fspack%2Fspackbot%2Fissues%2Fnew%2Fchoose
scottwittenburghttps://github.com/scottwittenburg
spack:mainhttps://github.com/spack/spackbot/tree/main
scottwittenburg:graduate-pr-binarieshttps://github.com/scottwittenburg/spackbot/tree/graduate-pr-binaries
Conversation 1 https://github.com/spack/spackbot/pull/45
Commits 1 https://github.com/spack/spackbot/pull/45/commits
Checks 0 https://github.com/spack/spackbot/pull/45/checks
Files changed https://github.com/spack/spackbot/pull/45/files
Please reload this pagehttps://github.com/spack/spackbot/pull/45/files
Add PR binary graduation to the things spackbot can do https://github.com/spack/spackbot/pull/45/files#top
Show all changes 1 commit https://github.com/spack/spackbot/pull/45/files
13fb2b1 Add PR binary graduation to the things spackbot can do scottwittenburg Aug 11, 2021 https://github.com/spack/spackbot/pull/45/commits/13fb2b183313a2743275d413a7da927aee2d3322
Clear filters https://github.com/spack/spackbot/pull/45/files
Please reload this pagehttps://github.com/spack/spackbot/pull/45/files
Please reload this pagehttps://github.com/spack/spackbot/pull/45/files
.env-dummy https://github.com/spack/spackbot/pull/45/files#diff-1a63dcf2bb25bc9e509b6ed93b1578c088b29335df947cd575a155bdd49d8b9d
build-deploy.yaml https://github.com/spack/spackbot/pull/45/files#diff-9bfae3b3d7e3df46c2decbbcffe8adae71d09031291c0ed7e35529b272bd6d5e
docker-compose.yml https://github.com/spack/spackbot/pull/45/files#diff-e45e45baeda1c1e73482975a664062aa56f20c03dd9d64a827aba57775bed0d3
requirements.txt https://github.com/spack/spackbot/pull/45/files#diff-4d7c51b1efe9043e44439a949dfd92e5827321b34082903477fd04876edb7552
__init__.py https://github.com/spack/spackbot/pull/45/files#diff-8562a97c0817045750366b4443b19e3a2ffedd92477296ed502640ed564bb718
mirrors.py https://github.com/spack/spackbot/pull/45/files#diff-20c74e163a8c85a5f4b1b4b555149a43d8dc69b778ba1a2aa51aceb4e012d4ce
helpers.py https://github.com/spack/spackbot/pull/45/files#diff-8c3ea7e1340051517be957c3569cd0080a487ca4b68f492908092971f2221828
routes.py https://github.com/spack/spackbot/pull/45/files#diff-9afe3332bf5162c85164c3a680f549ee6c26428ffded12cf84de73e93ccce62e
workers.py https://github.com/spack/spackbot/pull/45/files#diff-32369261a6ca2d1e63555fead2186d95cc1825c7fcf9eee26b0b00b47a95b3a4
Dockerfile https://github.com/spack/spackbot/pull/45/files#diff-b7a8697c04434939b25f5457c4a51a08522fa62f13a050c2aa4516df5efad24a
entrypoint.sh https://github.com/spack/spackbot/pull/45/files#diff-d53b72bba4dee8b98a9c65c7191f1715b1d963ce3d2be8ff6b7e4301b7727954
requirements.txt https://github.com/spack/spackbot/pull/45/files#diff-0f6c75b95142c47229dd82cf5f1129a08c0401f4ab6271b972e9ddc03e33217b
.env-dummyhttps://github.com/spack/spackbot/pull/45/files#diff-1a63dcf2bb25bc9e509b6ed93b1578c088b29335df947cd575a155bdd49d8b9d
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/.env-dummy
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
https://github.com/spack/spackbot/pull/45/files#diff-1a63dcf2bb25bc9e509b6ed93b1578c088b29335df947cd575a155bdd49d8b9d
.github/workflows/build-deploy.yamlhttps://github.com/spack/spackbot/pull/45/files#diff-9bfae3b3d7e3df46c2decbbcffe8adae71d09031291c0ed7e35529b272bd6d5e
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/.github/workflows/build-deploy.yaml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
https://github.com/spack/spackbot/pull/45/files#diff-9bfae3b3d7e3df46c2decbbcffe8adae71d09031291c0ed7e35529b272bd6d5e
docker-compose.ymlhttps://github.com/spack/spackbot/pull/45/files#diff-e45e45baeda1c1e73482975a664062aa56f20c03dd9d64a827aba57775bed0d3
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/docker-compose.yml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
https://github.com/spack/spackbot/pull/45/files#diff-e45e45baeda1c1e73482975a664062aa56f20c03dd9d64a827aba57775bed0d3
https://github.com/spack/spackbot/pull/45/files#diff-e45e45baeda1c1e73482975a664062aa56f20c03dd9d64a827aba57775bed0d3
requirements.txthttps://github.com/spack/spackbot/pull/45/files#diff-4d7c51b1efe9043e44439a949dfd92e5827321b34082903477fd04876edb7552
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/requirements.txt
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
https://github.com/spack/spackbot/pull/45/files#diff-4d7c51b1efe9043e44439a949dfd92e5827321b34082903477fd04876edb7552
spackbot/handlers/__init__.pyhttps://github.com/spack/spackbot/pull/45/files#diff-8562a97c0817045750366b4443b19e3a2ffedd92477296ed502640ed564bb718
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/spackbot/handlers/__init__.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
https://github.com/spack/spackbot/pull/45/files#diff-8562a97c0817045750366b4443b19e3a2ffedd92477296ed502640ed564bb718
spackbot/handlers/mirrors.pyhttps://github.com/spack/spackbot/pull/45/files#diff-20c74e163a8c85a5f4b1b4b555149a43d8dc69b778ba1a2aa51aceb4e012d4ce
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/spackbot/handlers/mirrors.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
spackbot/helpers.pyhttps://github.com/spack/spackbot/pull/45/files#diff-8c3ea7e1340051517be957c3569cd0080a487ca4b68f492908092971f2221828
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/spackbot/helpers.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
https://github.com/spack/spackbot/pull/45/files#diff-8c3ea7e1340051517be957c3569cd0080a487ca4b68f492908092971f2221828
https://github.com/spack/spackbot/pull/45/files#diff-8c3ea7e1340051517be957c3569cd0080a487ca4b68f492908092971f2221828
spackbot/routes.pyhttps://github.com/spack/spackbot/pull/45/files#diff-9afe3332bf5162c85164c3a680f549ee6c26428ffded12cf84de73e93ccce62e
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/spackbot/routes.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
https://github.com/spack/spackbot/pull/45/files#diff-9afe3332bf5162c85164c3a680f549ee6c26428ffded12cf84de73e93ccce62e
https://github.com/spack/spackbot/pull/45/files#diff-9afe3332bf5162c85164c3a680f549ee6c26428ffded12cf84de73e93ccce62e
spackbot/workers.pyhttps://github.com/spack/spackbot/pull/45/files#diff-32369261a6ca2d1e63555fead2186d95cc1825c7fcf9eee26b0b00b47a95b3a4
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/spackbot/workers.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
workers/Dockerfilehttps://github.com/spack/spackbot/pull/45/files#diff-b7a8697c04434939b25f5457c4a51a08522fa62f13a050c2aa4516df5efad24a
View file https://github.com/spack/spackbot/blob/13fb2b183313a2743275d413a7da927aee2d3322/workers/Dockerfile
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/spack/spackbot/pull/45/{{ revealButtonHref }}
Please reload this pagehttps://github.com/spack/spackbot/pull/45/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.