Build | Status |
---|---|
macOS 10.15 GitHub action | [![Build Status]( |
Homebrew tap for osrf simulation software
To use:
brew tap osrf/simulation
brew install ignition-citadel
ignition_cmake2
ignition_tools1
ignition_math6
ignition_common3
ignition_msgs6
ignition_fuel-tools5
ignition_plugin1
ignition_transport9
ignition_physics3
ignition_rendering4
ignition_gui4
ignition_sensors4
ignition_gazebo4
ignition_launch3
ignition_dome
ignition_cmake2
ignition_tools1
ignition_math6
ignition_common3
ignition_msgs5
ignition_fuel-tools4
ignition_plugin1
ignition_transport8
ignition_physics2
ignition_rendering3
ignition_gui3
ignition_sensors3
ignition_gazebo3
ignition_launch2
ignition_citadel
The https://build.osrfoundation.org jenkins instance is used for building bottles with the following job (configured in brew_release.dsl):
This jenkins job is triggered for pull requests when an administrator makes a comment
on the pull request that includes the phrase build bottle
.
The job should appear in the GitHub build status interface for the latest commit:
For example, #1157 was created after running our release.py script and this comment triggered the bottle build, resulting in a successful bottle upload and a4793387.
Bottle builds are not triggered automatically for every pull request for several reasons:
- Not all pull requests require a bottle to be rebuilt (such as #1007 that added this text to the README)
- Successful bottle builds result in binary artifacts being immediately uploaded to our hosting provider
so pull requests should be screened for malicious intent by administrators before triggering
a bottle build.
- This process differs from the approach taken by homebrew/homebrew-core whose bottles are hosted at Bintray, which has a different publishing mechanism than s3. Files uploaded to Bintray are not immediately available for public download; they must first be published. If they are not published within 7 days of upload, they are automatically deleted. The homebrew-core CI jobs will build bottles for any incoming pull request, which will upload bottles directly to bintray, but these bottles will not be publicly available unless the pull request is merged by a homebrew maintainer within 7 days.
-
Does a new bottle need to be built for every homebrew pull request?
- A new bottle is not needed for all pull requests.
For example, updates to documentation or a formula's
test do
block do not change the installed binary and thus don't require a new bottle. Changing the tarballurl
, adding patches, or bumping the formularevision
do require new bottles. If you aren't sure, just ask in the pull request.
- A new bottle is not needed for all pull requests.
For example, updates to documentation or a formula's
-
Do I need to wait for the
brew test-bot / test-bot
GitHub action to succeed for starting a bottle build?- No, you don't need to wait. You can start the bottle build as soon as the pull request is opened.
-
When can I merge a pull request? Does CI need to be finished?
- Yes, CI must be finished and successful. If a new bottle is needed, the
generic-release-homebrew_triggered_bottle_builder
job must be successful as well.
- Yes, CI must be finished and successful. If a new bottle is needed, the
-
I commented
build bottle
, but it did not start a generic-release-homebrew_triggered_bottle_builder job.- Confirm that the build.osrfoundation.org web page loads. If it is not accessible, an OSRF build farmer should be notified.
- If build.osrfoundation.org is operational,
confirm that you have adequate permissions.
Currently, you must be a member of the github.com/ignitionrobotics
org in order to use the
build bottle
trigger phrase (see configuration in brew_release.dsl).
-
I'm updating a Formula to build from a specific commit in a git repository. How do I get the
sha256
for the tarball corresponding to that commit?- First, make sure that you have updated the url to use the commit hash that corresponds to the commit in the repository that you'd like to use.
Also be sure to update the version, if it exists (in the example linked here,
20201028~c02cd0
is the part that needs to be modified:20201028
is the date (year-month-day), andc02cd0
is the first 6 characters of the commit was used in the updated url). - Now, run the command
wget <url>
, where<url>
is the updated url that was just mentioned. Once you have thetar
file downloaded, run the commandsha256sum <file>
, replacing<file>
with the file that was downloaded viawget
. Thesha256
will be printed to the console, which can then be used to update the Formula's sha256.
- First, make sure that you have updated the url to use the commit hash that corresponds to the commit in the repository that you'd like to use.
Also be sure to update the version, if it exists (in the example linked here,
-
I ran the release.py script multiple times for the same release and commented
build bottle
on the pull request, but the bottle building job failed, with console output containing the textWarning: Formula reports different SHA256:
.- It's possible that the tarball uploaded at the time the pull request was created was overwritten
by a subsequent call to
release.py
(see ignition-tooling/release-tools#274). If so, update thesha256
field for the tarball (see #1156 and 57fa5defcce for an example).
- It's possible that the tarball uploaded at the time the pull request was created was overwritten
by a subsequent call to
The generic-release-homebrew_triggered_bottle_builder
jenkins job currently builds bottles for macOS 10.13 high_sierra
and 10.14 mojave
using the following job configurations and the
homebrew_bottle_creation.bash
script:
https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder/label=osx_highsierra
https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder/label=osx_mojave
If the bottle building job finishes without errors for each build configuration,
it will trigger a subsequent repository_uploader_packages
job that uploads the bottles to s3
and a generic-release-homebrew_pr_bottle_hash_updater
job that commits the changes in bottle sha256
values to the pull request branch
using this script.