QAWolf CI SDK
:warning: This is an experimental package. Please report any
issues you encounter to your support channel. It should still
provide a better experience than using our internal GraphQL
API directly.
This package provides a TypeScript (CSM and ESM compatible) SDK
to interact with the QAWolf Customer-facing API.
It exposes two functions associated with the two central endpoints, showcased in
the examples below.
Note that these functions do not throw. They yield a result object that
contains the outcome of the operation. This outcome should be scrutinized
to determine the status of your CI/CD step/job/action.
Example: Trigger Run on Deployment
ℹ️ See the API documentation page for this endpoint.
import { type DeployConfig, makeQaWolfSdk } from "@qawolf/ci-sdk";
const deployConfig: DeployConfig = {
branch: undefined,
commitUrl: undefined,
deduplicationKey: undefined,
deploymentType: undefined,
deploymentUrl: undefined,
hostingService: undefined,
sha: undefined,
variables: undefined,
};
const { attemptNotifyDeploy } = makeQaWolfSdk({
apiKey: "qawolf_xxxxx",
});
(async () => {
const result = await attemptNotifyDeploy(deployConfig);
if (result.outcome !== "success") {
process.exit(1);
}
const runId = result.runId;
})();
Example: Poll for CI Greenlight Status
ℹ️ See the API documentation page for this endpoint.
import { makeQaWolfSdk } from "@qawolf/ci-sdk";
const { pollCiGreenlightStatus } = makeQaWolfSdk({
apiKey: "qawolf_xxxxx",
});
(async () => {
const { outcome } = await pollCiGreenlightStatus({
runId,
onRunStageChanged: (current, previous) => {
console.log(current, previous);
},
});
if (outcome !== "success") {
process.exit(1);
}
})();
Versioning
This package follows the SemVer versioning scheme. Additional notes:
- Versions below 1.0.0 still follow this scheme.
- We recommend depending on the
^
range operator for this package, as it will not introduce breaking changes and guarantee
an up-to-date API usage version.
- We will provide a changelog for each release, which will be available in the Changelog section below.
- This package major version will be bumped when an API breaking change is introduced. This won't
happen too often, and we will reach out to you and give advance notice when it does.
- Only top-level exports are considered part of the public API and covered by SemVer.
- Addition of new fields in the API response types are not considered breaking changes.
- Logs and debug messages are not considered part of the public API and can change at any time.
Changelog
v0.12.1
- Export dependencies types from root module.
- Refine
DeployConfig.hostingService
type to match API requirements. - Fix inaccessible changelog file from NPM.
v0.12.0
- Define a more restrictive
LogDriver
interface for easy integration with GHA
core
interface.
v0.11.0
- Support
reproducedBugs
field from CI-greenlight API.
:warning: These are the last breaking changes brought to the 0.x major version.
These are being introduced while the SDK hasn't been advertised to the public yet.
Future changes will follow the SemVer versioning scheme.
BREAKING CHANGES:
pollCiGreenlightStatus
and attemptNotifyDeploy
now return a "result" object
with an outcome
field that can be either "success"
, "failed"
or "aborted"
,
instead of exiting the process with a non-zero code. This will provide more
flexibility to the user to decide how to handle the outcome.
v0.10.3
BREAKING CHANGES:
- Renamed
attemptDeploy
to attemptNotifyDeploy
.
v0.10.2
- Avoid logging dots after URL names in the logs. Dots can confuse terminal
URL detection.
v0.10.1
- Fix TypeScript types visibility.
v0.10.0
Initial release.
Supported Endpoints
/api/deploy_success
/api/v0/ci-greenlight/[root-run-id]