@atomist/sdm-pack-s3
An extension pack for an Atomist software delivery machine (SDM). See the Atomist documentation for more information on the concept of a software delivery machine and how to create and develop an SDM.
Send your project's build output to S3 using the publishToS3
goal.
Using
In your software delivery machine project:
npm install @atomist/sdm-pack-s3
then in your machine.ts
:
import { publishToS3Goal } from "@atomist/sdm-pack-s3";
const publish = publishToS3Goal({
bucketName: "your-bucket-name",
region: "us-west-2", // use your region
filesToPublish: ["site/**/*.html", "more/files/to/publish"],
pathTranslation: (filepath, inv) => filepath, // rearrange files if necessary
pathToIndex: "site/index.html", // index file in your project
});
If you need a build to happen before the publish, call withProjectListener()
on that goal
and pass a GoalProjectListenerRegistration.
Add this publish goal to one of your goal sets.
const publishGoals = goals("publish static site to S3")
.plan(publish);
sdm.withPushRules(
whenPushSatisfies(requestsUploadToS3).setGoals(publishGoals),
);
Using S3 Goal Caching Support
This pack contains a goal cache implementation that uses S3. This is useful to allow your goal caching solution to scale as you scale SDM instances.
To enable use a configuration preProcessor:
preProcessors: [
async cfg => {
return _.merge(cfg, {
sdm: {
cache: {
enabled: true,
bucket: "mytest-bucket",
store: new CompressingGoalCache(new S3GoalCacheArchiveStore()),
},
},
});
},
],
Required configuration for S3GoalCacheArchiveStore
:
- Bucket: (shown above) Used to set the S3 bucket to upload data to
- AWS Credentials. These should be available either in the environment or through the metadata service (in the case of using IAM roles).
Getting started
See the Developer Quick Start to jump straight to creating an SDM.
Support
General support questions should be discussed in the #support
channel in the Atomist community Slack workspace.
If you find a problem, please create an issue.
Development
See the Atomist developer documentation for information on how to write your own SDM features and automations.
Release
Releases are handled via the Atomist SDM. Just press the 'Approve' button in the Atomist dashboard or Slack.
Created by Atomist. Need Help? Join our Slack workspace.