- Updating CI script to use latest shutdown logic - Removed unneeded tests - Split browser tests into ones that need a Gitlab instance those that down - Removing the need to run the full e2e test unless its a release branch - Moved the most tested release tests (the exports) into a integration test since it doesnt require a full Gitlab instance for testing
1.9 KiB
Custom Request Libraries
There is another constructor parameter that allows the user to specify their custom request library. To specify the library, simply set the requester property when instantiating a service:
An example can be seen in the Requester.ts file.
import { Gitlab } from '@gitbeaker/rest';
import YourCustomRequester from 'custom-requester';
const api = new Gitlab({
host: 'http://example.com',
token: 'personaltoken',
requester: YourCustomRequester,
});
Handling HTTPS certificates
If your Gitlab server is running via HTTPS, the proper way to pass in your certificates is via a NODE_EXTRA_CA_CERTS environment key, like this:
"scripts": {
"start": "NODE_EXTRA_CA_CERTS=./secrets/3ShapeCA.pem node bot.js"
},
Note
: Using
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'will not work with thegitlablibrary. TherejectUnauthorizedkey is the only way to allow insecure certificates to be bypassed.
Support for Node v16.18+
Since everything builds off fetch support, applying a poly fill will allow for Node v16.18 instead of 18+. ie:
- Install node-fetch
- Set the following in your entry point:
const semver = require('semver');
if (semver.lt(process.version, '20.0.0')) {
global.fetch = require('node-fetch');
}
Headers / Body Timeout Error
This is caused by the internal undici fetch implementation's dispatcher defaults for the headers and body timeout when performing a request. In the future we will support modifying these properties in a more defined way, but for now, once can override this by setting the global symbol at the beginning of your script:
import { Agent } from 'undici';
globalThis[Symbol.for('undici.globalDispatcher.1')] = new Agent({
headersTimeout: 0,
bodyTimeout: 0,
});