{"id":17348104,"url":"https://github.com/userdocs/boost","last_synced_at":"2025-04-13T21:07:06.482Z","repository":{"id":253139303,"uuid":"739929563","full_name":"userdocs/boost","owner":"userdocs","description":"A mirror for boost releases https://archives.boost.io/release/","archived":false,"fork":false,"pushed_at":"2025-02-01T10:45:49.000Z","size":25,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T21:07:06.338Z","etag":null,"topics":["boost","mirror"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/userdocs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-07T01:08:43.000Z","updated_at":"2025-02-01T10:45:52.000Z","dependencies_parsed_at":"2024-08-14T18:31:44.376Z","dependency_job_id":"61124b7b-d315-4a0c-b11e-59d2a2f75a1e","html_url":"https://github.com/userdocs/boost","commit_stats":null,"previous_names":["userdocs/boost"],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userdocs%2Fboost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userdocs%2Fboost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userdocs%2Fboost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userdocs%2Fboost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/userdocs","download_url":"https://codeload.github.com/userdocs/boost/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248782269,"owners_count":21160717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boost","mirror"],"created_at":"2024-10-15T16:51:06.576Z","updated_at":"2025-04-13T21:07:06.452Z","avatar_url":"https://github.com/userdocs.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# boost mirror\r\n\r\nA boost.org release mirror using Github workflows and the release system. This example repo has bootstrapped the `source` and `binary` folders of the remote with the exception `rc` or non release assets.\r\n\r\n\u003e [!NOTE]\r\n\u003e This solution aims to be an easy reproducible release mirror so if it's not a release asset we are not interested in it. `alpha`,`beta` and `rc` candidates are not releases.\r\n\r\n## How it works\r\n\r\nThere are 2 pairs of workflows that achieve different goals for a mirror repository. Pairs are linked as `source` or `source` and `binary`\r\n\r\n```txt\r\nbootstrap_source.yml (pair 1)\r\nbootstrap_source_binary.yml (pair 2)\r\ncheck_new_release_source.yml (pair 1)\r\ncheck_new_release_source_binary.yml (pair 2)\r\n```\r\n\r\n\u003e [!IMPORTANT]\r\n\u003e The workflows `source` will only get a specific set of boost release source code archives from the remote `source` folders. If you need a header only or source only mirror.\r\n\r\n\u003e [!TIP]\r\n\u003e This is what most projects will be using. The packaged source archives with the headers or used to build the components they need.\r\n\r\n\u003e [!NOTE]\r\n\u003e The `source` workflows work with just the `github.token` and need no special permissions in a newly forked repo\r\n\u003e It takes just over 60 seconds to bootstrap the releases.\r\n\r\n\u003e [!IMPORTANT]\r\n\u003e The workflows `source and binary` will get all files except `alpha`,`beta` and `rc` files from the remote `source` and `binary` folders.\r\n\r\n\u003e [!CAUTION]\r\n\u003e The `source` and `binary` workflows will not work with just the `github.token` and need a PAT created with minimal permissions to overcome api rate limiting.\r\n\u003e It takes just around 5 minutes to bootstrap this and involves some large files.\r\n\u003e\r\n\u003e In the repository settings, create a repository secret, called `BOOST`, with the token created. The workflows are already prepped to use this `${{ secrets.BOOST }}`\r\n\r\nFinally, you have the corresponding automated check release workflows which will create new releases in the same format as the selected bootstrap workflow.\r\n\r\nAfter a repo is bootstrapped we focus on the new releases and will never use that workflow again so it is required to be manually triggered.\r\n\r\n## Summary\r\n\r\nIn Summary, to bootstrap a source only repo:\r\n\r\n1. The [bootstrap_source.yml](https://github.com/userdocs/boost/blob/main/.github/workflows/bootstrap_source.yml) will determine the latest release and create an array of versions from `1.63.0`, the earliest version hosted on either `boostorg.jfrog.io` or `archives.boost.io`, through to current the latest version.\r\n2. This will fire a matrix job using that array and download the main assets and upload them as tagged releases, using a tag version that matches the \u003chttps://github.com/boostorg/boost/tags\u003e format.\r\n3. Remote latest release tag will be set as the local latest release tag.\r\n4. A scheduled [check_new_release_source.yml](https://github.com/userdocs/boost/blob/main/.github/workflows/check_new_release_source.yml) will check for new releases and mirror them as they are released.\r\n\r\n\u003e [!NOTE]\r\n\u003e Source location redundancy starting with `boostorg.jfrog.io` falling back to `archives.boost.io`\r\n\r\nSo just fork the repo, run the boost [bootstrap.yml](https://github.com/userdocs/boost/blob/main/.github/workflows/bootstrap_source.yml)\r\n\r\nThen edit the paired check release workflow to enable the scheduler.\r\n\r\nYou now have mirror that will update itself when new releases are available.\r\n\r\n## Need to know\r\n\r\n\u003e [!WARNING]\r\n\u003e The scheduled part of the workflows is commented out until you decide which one to use.\r\n\u003e\r\n\u003e ```\r\n\u003e  # schedule:\r\n\u003e  #   - cron: \"*/30 */1 * * *\"\r\n\u003e ```\r\n\r\n## Credits\r\n\r\nDynamic matrix arrays: https://www.kenmuse.com/blog/dynamic-build-matrices-in-github-actions/\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserdocs%2Fboost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuserdocs%2Fboost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserdocs%2Fboost/lists"}