Skip to content

Latest commit

 

History

History
90 lines (66 loc) · 1.67 KB

README.md

File metadata and controls

90 lines (66 loc) · 1.67 KB

Secrets Plugin

Hapi secrets plugin for the Screwdriver API

Usage

Register plugin

const Hapi = require('@hapi/hapi');
const server = new Hapi.Server();
const secretsPlugin = require('./');

server.connection({ port: 3000 });

server.register({
    register: secretsPlugin,
    options: {}
}, () => {
    server.start((err) => {
        if (err) {
            throw err;
        }
        console.log('Server running at:', server.info.uri);
    });
});

Routes

Get requires write permission to the repository.

Create, Remove and Update require admin permission to the repository.

Get a secret

GET /secrets/{id}

Create a secret

POST /secrets

Arguments

  • pipelineId - Pipeline that this secret belongs to.
  • name - Name of the secret. The name should match the pattern /^[A-Z_][A-Z0-9_]*$/.
  • value - Value of the secret.
  • allowInPR - Flag to denote if this secret can be shown in PR builds.

Example payload:

{
  "pipelineId": "d398fb192747c9a0124e9e5b4e6e8e841cf8c71c",
  "name": "NPM_TOKEN",
  "value": "batman",
  "allowInPR": true
}

Remove a secret

DELETE /secrets/{id}

Update a secret

PUT /secrets/{id}

Arguments

Only value and allowInPR can be updated.

  • value - Value of the secret.
  • allowInPR - Flag to denote if this secret can be shown in PR builds.

Example payload:

{
  "value": "batman",
  "allowInPR": true
}

Access to Factory methods

The server supplies factories to plugins in the form of server settings:

// handler secretPlugin.js
handler: async (request, h) => {
    const factory = request.server.app.secretFactory;

    // ...
}