README.md
February 18, 2026 ยท View on GitHub
NOTICE OF RETIREMENT
Artsy's Peril instance was retired on February 18th, 2026.
Artsy Peril Settings
- State: production
- Point people: @dblandin
- CI:
- Peril Dashboard: peril-staging.artsy.net
What is this project?
This is the configuration repo for Peril on the Artsy org. There is a settings file and org-wide dangerfiles which are inside the org folder.
Here's some links to the key concepts:
An overview of what Peril does for Artsy is available in the README repo at /culture/peril.md.
TL:DR on this Repo?
Peril is Danger running on a web-server, this repo is the configuration for that, currently the dangerfiles in org run on every issue and pull request for all our repos.
To Develop
git clone https://github.com/artsy/peril-settings.git
cd peril-settings
yarn install
yarn jest
code .
You will need node and yarn installed beforehand. You can get them both by running brew install yarn. This will give
you auto-completion and types for Danger/Peril mainly.
RFCs
It's likely that any time you want to make a change here you should consult the Artsy RFC process and apply it on artsy/README.
Implementing an RFC
Adding a rule
A rule should include a link to its rfc:
// Keep our Markdown documents awesome
// https://github.com/artsy/peril-settings/issues/2
//
export default async (webhook: any) => {
// [...]
})
This self-documents where a rule has come from, making it easy for others to understand how we came to specific rules.
The closure passed to rfc can be async as well.
Testing a rule
We use Jest to test our Dangerfiles. It uses the same techniques as testing a danger plugin where the global imports from danger are fake.
-
Create a file for your RFC:
tests/rfc_[x].test.ts. -
Add a
beforeandaftersetting up and resetting mocks:jest.mock("danger", () => jest.fn()) import * as danger from "danger" const dm = danger as any beforeEach(() => { dm.danger = {} dm.fail = jest.fn() // as necessary }) afterEach(() => { dm.fail = undefined }) -
Set up your danger object and run the function exported in
all-prs.ts:import rfcN from "../org/all-prs" it("warns when there's there's no assignee and no WIP in the title", async () => { dm.danger.github = { pr: { title: "Changes to the setup script", assignee: null } } await rfcN() expect(something).toHappen() // [...] }) }) -
Validate that the
fail/warn/message/markdownis called.