| parent | CLI |
|---|---|
| nav_order | 1 |
skuba can guide you through an interactive prompt to initialise a new directory and Git repository for your project. It includes a set of starter templates that reflect the typical components of a core SEEK service.
If you are looking to bootstrap an existing project,
see skuba configure.
Creates a new local project from a starter template.
skuba init does not provision any resources in AWS, Buildkite or GitHub on its own,
and only requires a connection to the public npm registry.
Most of its built-in templates start you off with a Buildkite pipeline that should be ready to go once you push your repository to GitHub and configure Buildkite.
| Option | Description |
|---|---|
--debug |
Enable debug console output |
Let's start by running the command:
skuba initand answering a few starter questions:
? For starters, some project details:
⊙ Owner : SEEK-Jobs/my-team
⊙ Repo : my-repo
⊙ Platform : arm64
⊙ Default Branch : main
# ...skuba init will initialise your CODEOWNERS file and a few others based on the specified owner.
GitHub teams can be found at the following URL:
github.com/orgs/SEEK-Jobs/teams/my-team/repositories
You're now presented with a selection of templates:
? Select a template:
express-rest-api
❯ greeter
koa-rest-api
lambda-sqs-worker-cdk
oss-npm-package
private-npm-package
github →Use the ↑ ↓ arrow keys, then ⏎ enter your selection.
The selected template will prompt you to fill out some additional fields. You can skip these for now to get your bearing:
This template uses the following information:
- Prod Buildkite queue
? Fill this in now? …
yes
❯ no
Resume this later with pnpm exec skuba configure.skuba init will take a while to install some initial dependencies,
after which you'll have a new directory to work with:
Initialized empty Git repository in /my-repo/.git/
Installing dependencies...
✔ All done! Try running:
cd my-repo
git push --set-upstream origin mainYou can now proceed to the next steps.
skuba init is interactive by default.
For unattended execution, pipe in JSON:
skuba init << EOF
{
"destinationDir": "tmp-greeter",
"templateComplete": true,
"templateData": {
"ownerName": "my-org/my-team",
"prodBuildkiteQueueName": "123456789012:cicd",
"platformName": "arm64",
"repoName": "tmp-greeter"
},
"templateName": "greeter"
}
EOF--
Now that you've run skuba init, where does that leave you?
Let's review the Git repository that has been initialised to see what's in there:
git log
# Clone greeter
# Initial commit
git remote get-url origin
# git@github.com:<org>/<repo>.gitskuba has committed its initial template files and configured a remote origin for you.
You should create the corresponding repository on GitHub and push to it.
Replace main with your default branch name as appropriate:
git push --set-upstream origin mainFamiliarise yourself with the directory structure that skuba has created:
├── .buildkite
├── .github
├── .vscode
└── src
├── app.test.ts
├── app.ts
├── .dockerignore
├── .gitignore
├── .nvmrc
├── .prettierignore
├── .prettierrc.js
├── Dockerfile
├── eslint.config.js
├── README.md
├── docker-compose.yml
├── jest.config.js
├── jest.setup.ts
├── package.json
├── pnpm-lock.yaml
├── skuba.template.js
├── tsconfig.build.json
├── tsconfig.jsonA few points to call out:
- There are configuration files aplenty for the various tools we use in skuba and more broadly at SEEK.
- The
.buildkitedirectory houses a CI/CD pipeline that should be ready to go once you push your repository to GitHub and configure Buildkite. - The
srcdirectory contains our source code, which is later compiled tolib. package.jsonlists your project dependencies and scripts.
Try out some of the commands documented throughout this CLI section.
skuba lint may be a good starting point:
skuba lintIf you skipped templating earlier,
skuba lint will complain that you haven't finished it.
Once you're ready, run skuba configure:
skuba configureYou can grep your directory for the values you enter to figure out where they are used, and you can always change them later.
Each built-in template has a README.md that contains a checklist of next steps to take your project to production.