Static constants fetched from git
for your Node processes.
const { GIT_BRANCH, GIT_COMMIT } = require('git-variables');
Executes synchronously on startup to reduce impact & be ready to go immediately. Use in internal build tools or user-facing applications.
$ npm install git-variables
- Requires
git
to be installed. - Must be run within a repository - suitable for monorepos too.
Variable | Command | Example |
---|---|---|
GIT_DESCRIBE |
git describe --always |
1089e4f |
GIT_DESCRIBE_LIGHT |
git describe --always --tags |
1089e4f |
GIT_COMMIT |
git rev-parse --short HEAD |
1089e4f |
GIT_SHA1 |
git rev-parse HEAD |
1089e4fc62e43d7fc4a7323aaa3d09cd6cccc468 |
GIT_BRANCH |
git rev-parse --abbrev-ref HEAD |
master |
GIT_MESSAGE |
git log -1 --pretty=%B |
Initial commit!\nThis project will change the world! |
GIT_MESSAGE_SUBJECT |
git log -1 --pretty=%s |
Initial commit! |
GIT_MESSAGE_BODY |
git log -1 --pretty=%b |
This project will change the world! |
GIT_USER |
git config user.name |
jdrydn |
GIT_EMAIL |
git config user.email |
[email protected] |
GIT_IS_DIRTY |
git diff --stat |
false |
GIT_REPOSITORY |
git rev-parse --show-toplevel |
git-variables |
Reference git variables in your CDK stack definition:
const lambdaNode = require('@aws-cdk/aws-lambda-nodejs');
const { GIT_SHA1 } = require('git-variables');
new lambdaNode.NodejsFunction(this, 'LambdaFunction', {
entry: './script.js',
handler: 'handler',
runtime: lambdaNode.Runtime.NODEJS_12_X,
memorySize: 1024,
timeout: cdk.Duration.seconds(300),
environment: {
COMMIT_SHA1: GIT_SHA1,
NODE_ENV: process.env.NODE_ENV || 'development',
},
});
Reference git variables in your serverless.yml
file:
service: example-service
provider: aws
functions:
example-function:
handler: script.handler
environment:
COMMIT_SHA1: ${file(./node_modules/git-variables):GIT_SHA1}
Typically, variables from git
would be part of a build process & passed to your application as build arguments or environment variables. But there's nothing stopping you directly using this in your application:
// server.js
const express = require('express');
const { GIT_COMMIT } = require('git-variables');
const app = express();
app.get('/status', (req, res) => {
res.status(200).send(GIT_COMMIT);
});
app.listen(3000);
When deploying, you must remember to keep your .git/
folder:
$ cd /var/app
$ git clone github.com/jdrydn/example
$ cd example/ && npm ci
$ node ./server.js
Any questions or suggestions please open an issue.