Skip to content

Latest commit

 

History

History
67 lines (43 loc) · 5.97 KB

CONTRIBUTING.md

File metadata and controls

67 lines (43 loc) · 5.97 KB

Contributing to Thumbprint

The Design Systems team welcomes contributions from all developers at Thumbtack. These contributions can range from small bug reports to brand new components and initiatives.

Here are a few ways to get started:

File a bug or request a feature

Providing feedback is the easiest way to contribute to Thumbprint. You can do this by creating an issue on GitHub.

If you're a Thumbtack employee, you can also post on #design-systems for quick help.

Contribute code to Thumbprint

There are two ways to contribute code back to Thumbprint:

  1. Tackle open GitHub issues: Issues labeled as “good first issue” or “help wanted” are perfect for contributors that want to tackle small tasks.
  2. Propose and create a new component: Creating a component allows contributors to dive-deep into component API design, testing, accessibility, and documentation. Please create a GitHub issue to propose a new component. If the component is a good candidate for Thumbprint, we’ll schedule a kick-off meeting to discuss next steps. Keep in mind that any new component will need to be added to the Playground in order to enable the component to be viewed in the Playground.

Submitting a pull request

Here are a few things to keep in mind when creating a pull request:

  • Testing: Run the Thumbrint scheme's test suite locally in Xcode to ensure that the build will pass. If any snapshot tests fail, set recordMode = true in the setUp() function of that test class, and re-run the test. Review the changes to the snapshots to ensure that they are intended and include them in the code review.

Releasing a new version of Thumbprint

This will be done by a member of the Thumbtack iOS team when code has been merged and is ready for release.

  1. Go to release workflow: In GitHub, go to the repo's Actions tab and select the Release Thumbprint workflow. Screenshot of Actions tab on GitHub
  2. Open dialog: On the righthand side of the blue banner labeled "This workflow has a workflow_dispatch event trigger.", click "Run workflow." Screenshot of the manual trigger dialog
  3. Update version: Enter a version number for the release (e.g. 1.2.3). We follow semantic versioning, so look at the changes that will be included in this release and increment it accordingly. Leave "Branch" as main.
  4. Start action: Click "Run workflow" to start the release process.
  5. Manual step: The script will create a PR that bumps the version in the podspec. This PR must be merged manually, as GitHub Actions do not have write access for the main branch.
  6. Manual step: Update the description of the GitHub release created by the action with the changes included in this version.

This action (a) creates the version bump PR mentioned above (b) creates a tag for the release (c) creates a release in GitHub tied to this tag (d) publishes the new version of the CocoaPod

Manual process (if GitHub Action is broken)

  1. Update CocoaPod version: Update s.version in Thumbprint.podspec. We follow semantic versioning, so look at the changes that will be included in this release and increment it accordingly.
  2. Run Pod linter: In the root directory of the repo, run pod lib lint. If there are any errors, resolve them before continuing with the release.
  3. Commit: Commit the change you made in step 1 with the subject "Release " (e.g., "Release 1.2.3"). Create and merge a pull request with this commit.
  4. Checkout main: Return to the main branch and pull to get the commit you just merged.
  5. Tag release: Run git tag '<version>' (e.g., git tag '1.2.3') to tag this commit, and then run git push --tags to push the new tag.
  6. Create a new release in GitHub: On the Releases page for the repo, click "Draft a new release". Set "Tag version" to the name of the tag you created in step 3 (e.g., 1.2.3). Set "Release title" to the same value as the tag version. In the description field, give an overview of the changes going into this release. When all fields have been filled out, click "Publish release."
  7. Publish CocoaPod: Run pod trunk push Thumbprint.podspec. If you get an error saying you are not authorized to publish this CocoaPod, ask one of the maintainers of the library to add you as a contributor.

Common release issues

[!] Authentication token is invalid or unverified. Either verify it with the email that was sent or register a new session.

  • Run pod trunk register <email> '<name>' (e.g., pod trunk register kevinb@thumbtack.com 'Kevin Beaulieu') and click the link in the verification email you receive. Then try running pod trunk push Thumbprint.podspec again.

[!] You (<your-email>) are not allowed to push new versions for this pod. The owners of this pod are <owner-emails>.


As always, reach out to #design-systems (internal to Thumbtack employees) or create an issue if you have questions or feedback.