mirror of https://github.com/grpc/grpc-node.git
Merge branch 'master' into grpc-js_client_interceptors
This commit is contained in:
commit
f0fbe44134
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@grpc/grpc-js",
|
"name": "@grpc/grpc-js",
|
||||||
"version": "0.6.15",
|
"version": "0.6.16",
|
||||||
"description": "gRPC Library for Node - pure JS implementation",
|
"description": "gRPC Library for Node - pure JS implementation",
|
||||||
"homepage": "https://grpc.io/",
|
"homepage": "https://grpc.io/",
|
||||||
"repository": "https://github.com/grpc/grpc-node/tree/master/packages/grpc-js",
|
"repository": "https://github.com/grpc/grpc-node/tree/master/packages/grpc-js",
|
||||||
|
|
|
@ -246,6 +246,7 @@ export class Http2CallStream implements Call {
|
||||||
* @param status The status of the call.
|
* @param status The status of the call.
|
||||||
*/
|
*/
|
||||||
private endCall(status: StatusObject): void {
|
private endCall(status: StatusObject): void {
|
||||||
|
this.destroyHttp2Stream();
|
||||||
/* If the status is OK and a new status comes in (e.g. from a
|
/* If the status is OK and a new status comes in (e.g. from a
|
||||||
* deserialization failure), that new status takes priority */
|
* deserialization failure), that new status takes priority */
|
||||||
if (this.finalStatus === null || this.finalStatus.code === Status.OK) {
|
if (this.finalStatus === null || this.finalStatus.code === Status.OK) {
|
||||||
|
@ -339,9 +340,7 @@ export class Http2CallStream implements Call {
|
||||||
private tryPush(messageBytes: Buffer): void {
|
private tryPush(messageBytes: Buffer): void {
|
||||||
if (this.isReadFilterPending) {
|
if (this.isReadFilterPending) {
|
||||||
this.trace(
|
this.trace(
|
||||||
'[' +
|
'unfilteredReadMessages.push message of length ' +
|
||||||
this.callNumber +
|
|
||||||
'] unfilteredReadMessages.push message of length ' +
|
|
||||||
(messageBytes && messageBytes.length)
|
(messageBytes && messageBytes.length)
|
||||||
);
|
);
|
||||||
this.unfilteredReadMessages.push(messageBytes);
|
this.unfilteredReadMessages.push(messageBytes);
|
||||||
|
@ -512,6 +511,11 @@ export class Http2CallStream implements Call {
|
||||||
if (!this.pendingWriteCallback) {
|
if (!this.pendingWriteCallback) {
|
||||||
throw new Error('Invalid state in write handling code');
|
throw new Error('Invalid state in write handling code');
|
||||||
}
|
}
|
||||||
|
this.trace(
|
||||||
|
'sending data chunk of length ' +
|
||||||
|
this.pendingWrite.length +
|
||||||
|
' (deferred)'
|
||||||
|
);
|
||||||
stream.write(this.pendingWrite, this.pendingWriteCallback);
|
stream.write(this.pendingWrite, this.pendingWriteCallback);
|
||||||
}
|
}
|
||||||
this.maybeCloseWrites();
|
this.maybeCloseWrites();
|
||||||
|
@ -612,9 +616,13 @@ export class Http2CallStream implements Call {
|
||||||
this.filterStack.sendMessage(Promise.resolve(writeObj)).then(message => {
|
this.filterStack.sendMessage(Promise.resolve(writeObj)).then(message => {
|
||||||
this.isWriteFilterPending = false;
|
this.isWriteFilterPending = false;
|
||||||
if (this.http2Stream === null) {
|
if (this.http2Stream === null) {
|
||||||
|
this.trace(
|
||||||
|
'deferring writing data chunk of length ' + message.message.length
|
||||||
|
);
|
||||||
this.pendingWrite = message.message;
|
this.pendingWrite = message.message;
|
||||||
this.pendingWriteCallback = cb;
|
this.pendingWriteCallback = cb;
|
||||||
} else {
|
} else {
|
||||||
|
this.trace('sending data chunk of length ' + message.message.length);
|
||||||
this.http2Stream.write(message.message, cb);
|
this.http2Stream.write(message.message, cb);
|
||||||
this.maybeCloseWrites();
|
this.maybeCloseWrites();
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
import { ConnectionOptions, createSecureContext, PeerCertificate } from 'tls';
|
import { ConnectionOptions, createSecureContext, PeerCertificate } from 'tls';
|
||||||
|
|
||||||
import { CallCredentials } from './call-credentials';
|
import { CallCredentials } from './call-credentials';
|
||||||
import {CIPHER_SUITES, getDefaultRootsData} from './tls-helpers';
|
import { CIPHER_SUITES, getDefaultRootsData } from './tls-helpers';
|
||||||
|
|
||||||
// tslint:disable-next-line:no-any
|
// tslint:disable-next-line:no-any
|
||||||
function verifyIsBufferOrNull(obj: any, friendlyName: string): void {
|
function verifyIsBufferOrNull(obj: any, friendlyName: string): void {
|
||||||
|
@ -190,7 +190,7 @@ class SecureChannelCredentialsImpl extends ChannelCredentials {
|
||||||
ca: rootCerts || undefined,
|
ca: rootCerts || undefined,
|
||||||
key: privateKey || undefined,
|
key: privateKey || undefined,
|
||||||
cert: certChain || undefined,
|
cert: certChain || undefined,
|
||||||
ciphers: CIPHER_SUITES
|
ciphers: CIPHER_SUITES,
|
||||||
});
|
});
|
||||||
this.connectionOptions = { secureContext };
|
this.connectionOptions = { secureContext };
|
||||||
if (verifyOptions && verifyOptions.checkServerIdentity) {
|
if (verifyOptions && verifyOptions.checkServerIdentity) {
|
||||||
|
|
|
@ -38,6 +38,7 @@ import { getDefaultAuthority } from './resolver';
|
||||||
import { LoadBalancingConfig } from './load-balancing-config';
|
import { LoadBalancingConfig } from './load-balancing-config';
|
||||||
import { ServiceConfig, validateServiceConfig } from './service-config';
|
import { ServiceConfig, validateServiceConfig } from './service-config';
|
||||||
import { trace } from './logging';
|
import { trace } from './logging';
|
||||||
|
import { SubchannelAddress } from './subchannel';
|
||||||
|
|
||||||
export enum ConnectivityState {
|
export enum ConnectivityState {
|
||||||
CONNECTING,
|
CONNECTING,
|
||||||
|
@ -142,10 +143,12 @@ export class ChannelImplementation implements Channel {
|
||||||
) {
|
) {
|
||||||
/* The global boolean parameter to getSubchannelPool has the inverse meaning to what
|
/* The global boolean parameter to getSubchannelPool has the inverse meaning to what
|
||||||
* the grpc.use_local_subchannel_pool channel option means. */
|
* the grpc.use_local_subchannel_pool channel option means. */
|
||||||
this.subchannelPool = getSubchannelPool((options['grpc.use_local_subchannel_pool'] ?? 0) === 0);
|
this.subchannelPool = getSubchannelPool(
|
||||||
|
(options['grpc.use_local_subchannel_pool'] ?? 0) === 0
|
||||||
|
);
|
||||||
const channelControlHelper: ChannelControlHelper = {
|
const channelControlHelper: ChannelControlHelper = {
|
||||||
createSubchannel: (
|
createSubchannel: (
|
||||||
subchannelAddress: string,
|
subchannelAddress: SubchannelAddress,
|
||||||
subchannelArgs: ChannelOptions
|
subchannelArgs: ChannelOptions
|
||||||
) => {
|
) => {
|
||||||
return this.subchannelPool.getOrCreateSubchannel(
|
return this.subchannelPool.getOrCreateSubchannel(
|
||||||
|
@ -234,16 +237,25 @@ export class ChannelImplementation implements Channel {
|
||||||
callStream
|
callStream
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
callStream.cancelWithStatus(
|
/* An error here indicates that something went wrong with
|
||||||
Status.UNAVAILABLE,
|
* the picked subchannel's http2 stream right before we
|
||||||
'Failed to start call on picked subchannel'
|
* tried to start the stream. We are handling a promise
|
||||||
);
|
* result here, so this is asynchronous with respect to the
|
||||||
|
* original tryPick call, so calling it again is not
|
||||||
|
* recursive. We call tryPick immediately instead of
|
||||||
|
* queueing this pick again because handling the queue is
|
||||||
|
* triggered by state changes, and we want to immediately
|
||||||
|
* check if the state has already changed since the
|
||||||
|
* previous tryPick call. We do this instead of cancelling
|
||||||
|
* the stream because the correct behavior may be
|
||||||
|
* re-queueing instead, based on the logic in the rest of
|
||||||
|
* tryPick */
|
||||||
|
this.tryPick(callStream, callMetadata);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
callStream.cancelWithStatus(
|
/* The logic for doing this here is the same as in the catch
|
||||||
Status.UNAVAILABLE,
|
* block above */
|
||||||
'Connection dropped while starting call'
|
this.tryPick(callStream, callMetadata);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
(error: Error & { code: number }) => {
|
(error: Error & { code: number }) => {
|
||||||
|
|
|
@ -30,7 +30,11 @@ import {
|
||||||
UnavailablePicker,
|
UnavailablePicker,
|
||||||
} from './picker';
|
} from './picker';
|
||||||
import { LoadBalancingConfig } from './load-balancing-config';
|
import { LoadBalancingConfig } from './load-balancing-config';
|
||||||
import { Subchannel, ConnectivityStateListener } from './subchannel';
|
import {
|
||||||
|
Subchannel,
|
||||||
|
ConnectivityStateListener,
|
||||||
|
SubchannelAddress,
|
||||||
|
} from './subchannel';
|
||||||
import * as logging from './logging';
|
import * as logging from './logging';
|
||||||
import { LogVerbosity } from './constants';
|
import { LogVerbosity } from './constants';
|
||||||
|
|
||||||
|
@ -76,7 +80,7 @@ export class PickFirstLoadBalancer implements LoadBalancer {
|
||||||
/**
|
/**
|
||||||
* The list of backend addresses most recently passed to `updateAddressList`.
|
* The list of backend addresses most recently passed to `updateAddressList`.
|
||||||
*/
|
*/
|
||||||
private latestAddressList: string[] = [];
|
private latestAddressList: SubchannelAddress[] = [];
|
||||||
/**
|
/**
|
||||||
* The list of subchannels this load balancer is currently attempting to
|
* The list of subchannels this load balancer is currently attempting to
|
||||||
* connect to.
|
* connect to.
|
||||||
|
@ -369,7 +373,7 @@ export class PickFirstLoadBalancer implements LoadBalancer {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateAddressList(
|
updateAddressList(
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
lbConfig: LoadBalancingConfig | null
|
lbConfig: LoadBalancingConfig | null
|
||||||
): void {
|
): void {
|
||||||
// lbConfig has no useful information for pick first load balancing
|
// lbConfig has no useful information for pick first load balancing
|
||||||
|
|
|
@ -30,7 +30,11 @@ import {
|
||||||
UnavailablePicker,
|
UnavailablePicker,
|
||||||
} from './picker';
|
} from './picker';
|
||||||
import { LoadBalancingConfig } from './load-balancing-config';
|
import { LoadBalancingConfig } from './load-balancing-config';
|
||||||
import { Subchannel, ConnectivityStateListener } from './subchannel';
|
import {
|
||||||
|
Subchannel,
|
||||||
|
ConnectivityStateListener,
|
||||||
|
SubchannelAddress,
|
||||||
|
} from './subchannel';
|
||||||
|
|
||||||
const TYPE_NAME = 'round_robin';
|
const TYPE_NAME = 'round_robin';
|
||||||
|
|
||||||
|
@ -168,7 +172,7 @@ export class RoundRobinLoadBalancer implements LoadBalancer {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateAddressList(
|
updateAddressList(
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
lbConfig: LoadBalancingConfig | null
|
lbConfig: LoadBalancingConfig | null
|
||||||
): void {
|
): void {
|
||||||
this.resetSubchannelList();
|
this.resetSubchannelList();
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ChannelOptions } from './channel-options';
|
import { ChannelOptions } from './channel-options';
|
||||||
import { Subchannel } from './subchannel';
|
import { Subchannel, SubchannelAddress } from './subchannel';
|
||||||
import { ConnectivityState } from './channel';
|
import { ConnectivityState } from './channel';
|
||||||
import { Picker } from './picker';
|
import { Picker } from './picker';
|
||||||
import { LoadBalancingConfig } from './load-balancing-config';
|
import { LoadBalancingConfig } from './load-balancing-config';
|
||||||
|
@ -34,7 +34,7 @@ export interface ChannelControlHelper {
|
||||||
* @param subchannelArgs Extra channel arguments specified by the load balancer
|
* @param subchannelArgs Extra channel arguments specified by the load balancer
|
||||||
*/
|
*/
|
||||||
createSubchannel(
|
createSubchannel(
|
||||||
subchannelAddress: string,
|
subchannelAddress: SubchannelAddress,
|
||||||
subchannelArgs: ChannelOptions
|
subchannelArgs: ChannelOptions
|
||||||
): Subchannel;
|
): Subchannel;
|
||||||
/**
|
/**
|
||||||
|
@ -66,7 +66,7 @@ export interface LoadBalancer {
|
||||||
* if one was provided
|
* if one was provided
|
||||||
*/
|
*/
|
||||||
updateAddressList(
|
updateAddressList(
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
lbConfig: LoadBalancingConfig | null
|
lbConfig: LoadBalancingConfig | null
|
||||||
): void;
|
): void;
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -174,7 +174,7 @@ export class Metadata {
|
||||||
* @return The newly cloned object.
|
* @return The newly cloned object.
|
||||||
*/
|
*/
|
||||||
clone(): Metadata {
|
clone(): Metadata {
|
||||||
const newMetadata = new Metadata();
|
const newMetadata = new Metadata(this.options);
|
||||||
const newInternalRepr = newMetadata.internalRepr;
|
const newInternalRepr = newMetadata.internalRepr;
|
||||||
|
|
||||||
this.internalRepr.forEach((value, key) => {
|
this.internalRepr.forEach((value, key) => {
|
||||||
|
|
|
@ -30,6 +30,7 @@ import { StatusObject } from './call-stream';
|
||||||
import { Metadata } from './metadata';
|
import { Metadata } from './metadata';
|
||||||
import * as logging from './logging';
|
import * as logging from './logging';
|
||||||
import { LogVerbosity } from './constants';
|
import { LogVerbosity } from './constants';
|
||||||
|
import { SubchannelAddress, TcpSubchannelAddress } from './subchannel';
|
||||||
|
|
||||||
const TRACER_NAME = 'dns_resolver';
|
const TRACER_NAME = 'dns_resolver';
|
||||||
|
|
||||||
|
@ -112,7 +113,7 @@ const dnsLookupPromise = util.promisify(dns.lookup);
|
||||||
* @param target
|
* @param target
|
||||||
* @return An "IP:port" string in an array if parsing was successful, `null` otherwise
|
* @return An "IP:port" string in an array if parsing was successful, `null` otherwise
|
||||||
*/
|
*/
|
||||||
function parseIP(target: string): string[] | null {
|
function parseIP(target: string): SubchannelAddress[] | null {
|
||||||
/* These three regular expressions are all mutually exclusive, so we just
|
/* These three regular expressions are all mutually exclusive, so we just
|
||||||
* want the first one that matches the target string, if any do. */
|
* want the first one that matches the target string, if any do. */
|
||||||
const ipv4Match = IPV4_REGEX.exec(target);
|
const ipv4Match = IPV4_REGEX.exec(target);
|
||||||
|
@ -123,14 +124,14 @@ function parseIP(target: string): string[] | null {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ipv6 addresses should be bracketed
|
// ipv6 addresses should be bracketed
|
||||||
const addr = ipv4Match ? match[1] : `[${match[1]}]`;
|
const addr = match[1];
|
||||||
let port: string;
|
let port: string;
|
||||||
if (match[2]) {
|
if (match[2]) {
|
||||||
port = match[2];
|
port = match[2];
|
||||||
} else {
|
} else {
|
||||||
port = DEFAULT_PORT;
|
port = DEFAULT_PORT;
|
||||||
}
|
}
|
||||||
return [`${addr}:${port}`];
|
return [{ host: addr, port: +port }];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -161,7 +162,7 @@ function mergeArrays<T>(...arrays: T[][]): T[] {
|
||||||
* Resolver implementation that handles DNS names and IP addresses.
|
* Resolver implementation that handles DNS names and IP addresses.
|
||||||
*/
|
*/
|
||||||
class DnsResolver implements Resolver {
|
class DnsResolver implements Resolver {
|
||||||
private readonly ipResult: string[] | null;
|
private readonly ipResult: SubchannelAddress[] | null;
|
||||||
private readonly dnsHostname: string | null;
|
private readonly dnsHostname: string | null;
|
||||||
private readonly port: string | null;
|
private readonly port: string | null;
|
||||||
/* The promise results here contain, in order, the A record, the AAAA record,
|
/* The promise results here contain, in order, the A record, the AAAA record,
|
||||||
|
@ -222,23 +223,28 @@ class DnsResolver implements Resolver {
|
||||||
this.pendingResultPromise.then(
|
this.pendingResultPromise.then(
|
||||||
([addressList, txtRecord]) => {
|
([addressList, txtRecord]) => {
|
||||||
this.pendingResultPromise = null;
|
this.pendingResultPromise = null;
|
||||||
const ip4Addresses: string[] = addressList
|
const ip4Addresses: dns.LookupAddress[] = addressList.filter(
|
||||||
.filter(addr => addr.family === 4)
|
addr => addr.family === 4
|
||||||
.map(addr => `${addr.address}:${this.port}`);
|
);
|
||||||
let ip6Addresses: string[];
|
let ip6Addresses: dns.LookupAddress[];
|
||||||
if (semver.satisfies(process.version, IPV6_SUPPORT_RANGE)) {
|
if (semver.satisfies(process.version, IPV6_SUPPORT_RANGE)) {
|
||||||
ip6Addresses = addressList
|
ip6Addresses = addressList.filter(addr => addr.family === 6);
|
||||||
.filter(addr => addr.family === 6)
|
|
||||||
.map(addr => `[${addr.address}]:${this.port}`);
|
|
||||||
} else {
|
} else {
|
||||||
ip6Addresses = [];
|
ip6Addresses = [];
|
||||||
}
|
}
|
||||||
const allAddresses: string[] = mergeArrays(
|
const allAddresses: TcpSubchannelAddress[] = mergeArrays(
|
||||||
ip4Addresses,
|
ip4Addresses,
|
||||||
ip6Addresses
|
ip6Addresses
|
||||||
);
|
).map(addr => ({ host: addr.address, port: +this.port! }));
|
||||||
|
const allAddressesString: string =
|
||||||
|
'[' +
|
||||||
|
allAddresses.map(addr => addr.host + ':' + addr.port).join(',') +
|
||||||
|
']';
|
||||||
trace(
|
trace(
|
||||||
'Resolved addresses for target ' + this.target + ': ' + allAddresses
|
'Resolved addresses for target ' +
|
||||||
|
this.target +
|
||||||
|
': ' +
|
||||||
|
allAddressesString
|
||||||
);
|
);
|
||||||
if (allAddresses.length === 0) {
|
if (allAddresses.length === 0) {
|
||||||
this.listener.onError(this.defaultResolutionError);
|
this.listener.onError(this.defaultResolutionError);
|
||||||
|
|
|
@ -20,6 +20,7 @@ import {
|
||||||
registerResolver,
|
registerResolver,
|
||||||
registerDefaultResolver,
|
registerDefaultResolver,
|
||||||
} from './resolver';
|
} from './resolver';
|
||||||
|
import { SubchannelAddress } from './subchannel';
|
||||||
|
|
||||||
function getUdsName(target: string): string {
|
function getUdsName(target: string): string {
|
||||||
/* Due to how this resolver is registered, it should only be constructed
|
/* Due to how this resolver is registered, it should only be constructed
|
||||||
|
@ -34,9 +35,9 @@ function getUdsName(target: string): string {
|
||||||
}
|
}
|
||||||
|
|
||||||
class UdsResolver implements Resolver {
|
class UdsResolver implements Resolver {
|
||||||
private addresses: string[] = [];
|
private addresses: SubchannelAddress[] = [];
|
||||||
constructor(target: string, private listener: ResolverListener) {
|
constructor(target: string, private listener: ResolverListener) {
|
||||||
this.addresses = [getUdsName(target)];
|
this.addresses = [{ path: getUdsName(target) }];
|
||||||
}
|
}
|
||||||
updateResolution(): void {
|
updateResolution(): void {
|
||||||
process.nextTick(
|
process.nextTick(
|
||||||
|
|
|
@ -20,6 +20,7 @@ import { ServiceConfig } from './service-config';
|
||||||
import * as resolver_dns from './resolver-dns';
|
import * as resolver_dns from './resolver-dns';
|
||||||
import * as resolver_uds from './resolver-uds';
|
import * as resolver_uds from './resolver-uds';
|
||||||
import { StatusObject } from './call-stream';
|
import { StatusObject } from './call-stream';
|
||||||
|
import { SubchannelAddress } from './subchannel';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A listener object passed to the resolver's constructor that provides name
|
* A listener object passed to the resolver's constructor that provides name
|
||||||
|
@ -36,7 +37,7 @@ export interface ResolverListener {
|
||||||
* service configuration was invalid
|
* service configuration was invalid
|
||||||
*/
|
*/
|
||||||
onSuccessfulResolution(
|
onSuccessfulResolution(
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
): void;
|
): void;
|
||||||
|
|
|
@ -34,6 +34,7 @@ import { StatusObject } from './call-stream';
|
||||||
import { Metadata } from './metadata';
|
import { Metadata } from './metadata';
|
||||||
import * as logging from './logging';
|
import * as logging from './logging';
|
||||||
import { LogVerbosity } from './constants';
|
import { LogVerbosity } from './constants';
|
||||||
|
import { SubchannelAddress } from './subchannel';
|
||||||
|
|
||||||
const TRACER_NAME = 'resolving_load_balancer';
|
const TRACER_NAME = 'resolving_load_balancer';
|
||||||
|
|
||||||
|
@ -132,7 +133,7 @@ export class ResolvingLoadBalancer implements LoadBalancer {
|
||||||
this.updateState(ConnectivityState.IDLE, new QueuePicker(this));
|
this.updateState(ConnectivityState.IDLE, new QueuePicker(this));
|
||||||
this.innerResolver = createResolver(target, {
|
this.innerResolver = createResolver(target, {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: ServiceError | null
|
serviceConfigError: ServiceError | null
|
||||||
) => {
|
) => {
|
||||||
|
@ -243,7 +244,7 @@ export class ResolvingLoadBalancer implements LoadBalancer {
|
||||||
|
|
||||||
this.innerChannelControlHelper = {
|
this.innerChannelControlHelper = {
|
||||||
createSubchannel: (
|
createSubchannel: (
|
||||||
subchannelAddress: string,
|
subchannelAddress: SubchannelAddress,
|
||||||
subchannelArgs: ChannelOptions
|
subchannelArgs: ChannelOptions
|
||||||
) => {
|
) => {
|
||||||
return this.channelControlHelper.createSubchannel(
|
return this.channelControlHelper.createSubchannel(
|
||||||
|
@ -289,7 +290,7 @@ export class ResolvingLoadBalancer implements LoadBalancer {
|
||||||
|
|
||||||
this.replacementChannelControlHelper = {
|
this.replacementChannelControlHelper = {
|
||||||
createSubchannel: (
|
createSubchannel: (
|
||||||
subchannelAddress: string,
|
subchannelAddress: SubchannelAddress,
|
||||||
subchannelArgs: ChannelOptions
|
subchannelArgs: ChannelOptions
|
||||||
) => {
|
) => {
|
||||||
return this.channelControlHelper.createSubchannel(
|
return this.channelControlHelper.createSubchannel(
|
||||||
|
@ -409,7 +410,7 @@ export class ResolvingLoadBalancer implements LoadBalancer {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateAddressList(
|
updateAddressList(
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
lbConfig: LoadBalancingConfig | null
|
lbConfig: LoadBalancingConfig | null
|
||||||
) {
|
) {
|
||||||
throw new Error('updateAddressList not supported on ResolvingLoadBalancer');
|
throw new Error('updateAddressList not supported on ResolvingLoadBalancer');
|
||||||
|
|
|
@ -476,7 +476,9 @@ export class Http2ServerCallStream<
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
err.metadata = metadata;
|
if (!err.hasOwnProperty('metadata')) {
|
||||||
|
err.metadata = metadata;
|
||||||
|
}
|
||||||
this.sendError(err);
|
this.sendError(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { SecureServerOptions } from 'http2';
|
import { SecureServerOptions } from 'http2';
|
||||||
import {CIPHER_SUITES, getDefaultRootsData} from './tls-helpers';
|
import { CIPHER_SUITES, getDefaultRootsData } from './tls-helpers';
|
||||||
|
|
||||||
export interface KeyCertPair {
|
export interface KeyCertPair {
|
||||||
private_key: Buffer;
|
private_key: Buffer;
|
||||||
|
@ -75,7 +75,7 @@ export abstract class ServerCredentials {
|
||||||
cert,
|
cert,
|
||||||
key,
|
key,
|
||||||
requestCert: checkClientCertificate,
|
requestCert: checkClientCertificate,
|
||||||
ciphers: CIPHER_SUITES
|
ciphers: CIPHER_SUITES,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -203,11 +203,16 @@ export class Server {
|
||||||
const options: ListenOptions = { host: url.hostname, port: +url.port };
|
const options: ListenOptions = { host: url.hostname, port: +url.port };
|
||||||
const serverOptions: http2.ServerOptions = {};
|
const serverOptions: http2.ServerOptions = {};
|
||||||
if ('grpc.max_concurrent_streams' in this.options) {
|
if ('grpc.max_concurrent_streams' in this.options) {
|
||||||
serverOptions.settings = {maxConcurrentStreams: this.options['grpc.max_concurrent_streams']};
|
serverOptions.settings = {
|
||||||
|
maxConcurrentStreams: this.options['grpc.max_concurrent_streams'],
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (creds._isSecure()) {
|
if (creds._isSecure()) {
|
||||||
const secureServerOptions = Object.assign(serverOptions, creds._getSettings()!);
|
const secureServerOptions = Object.assign(
|
||||||
|
serverOptions,
|
||||||
|
creds._getSettings()!
|
||||||
|
);
|
||||||
this.http2Server = http2.createSecureServer(secureServerOptions);
|
this.http2Server = http2.createSecureServer(secureServerOptions);
|
||||||
} else {
|
} else {
|
||||||
this.http2Server = http2.createServer(serverOptions);
|
this.http2Server = http2.createServer(serverOptions);
|
||||||
|
|
|
@ -16,7 +16,11 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ChannelOptions, channelOptionsEqual } from './channel-options';
|
import { ChannelOptions, channelOptionsEqual } from './channel-options';
|
||||||
import { Subchannel } from './subchannel';
|
import {
|
||||||
|
Subchannel,
|
||||||
|
SubchannelAddress,
|
||||||
|
subchannelAddressEqual,
|
||||||
|
} from './subchannel';
|
||||||
import { ChannelCredentials } from './channel-credentials';
|
import { ChannelCredentials } from './channel-credentials';
|
||||||
|
|
||||||
// 10 seconds in milliseconds. This value is arbitrary.
|
// 10 seconds in milliseconds. This value is arbitrary.
|
||||||
|
@ -28,13 +32,12 @@ const REF_CHECK_INTERVAL = 10_000;
|
||||||
|
|
||||||
export class SubchannelPool {
|
export class SubchannelPool {
|
||||||
private pool: {
|
private pool: {
|
||||||
[channelTarget: string]: {
|
[channelTarget: string]: Array<{
|
||||||
[subchannelTarget: string]: Array<{
|
subchannelAddress: SubchannelAddress;
|
||||||
channelArguments: ChannelOptions;
|
channelArguments: ChannelOptions;
|
||||||
channelCredentials: ChannelCredentials;
|
channelCredentials: ChannelCredentials;
|
||||||
subchannel: Subchannel;
|
subchannel: Subchannel;
|
||||||
}>;
|
}>;
|
||||||
};
|
|
||||||
} = Object.create(null);
|
} = Object.create(null);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,23 +65,20 @@ export class SubchannelPool {
|
||||||
* do not need to be filtered */
|
* do not need to be filtered */
|
||||||
// tslint:disable-next-line:forin
|
// tslint:disable-next-line:forin
|
||||||
for (const channelTarget in this.pool) {
|
for (const channelTarget in this.pool) {
|
||||||
// tslint:disable-next-line:forin
|
const subchannelObjArray = this.pool[channelTarget];
|
||||||
for (const subchannelTarget in this.pool[channelTarget]) {
|
|
||||||
const subchannelObjArray = this.pool[channelTarget][subchannelTarget];
|
|
||||||
|
|
||||||
const refedSubchannels = subchannelObjArray.filter(
|
const refedSubchannels = subchannelObjArray.filter(
|
||||||
value => !value.subchannel.unrefIfOneRef()
|
value => !value.subchannel.unrefIfOneRef()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (refedSubchannels.length > 0) {
|
if (refedSubchannels.length > 0) {
|
||||||
allSubchannelsUnrefed = false;
|
allSubchannelsUnrefed = false;
|
||||||
}
|
|
||||||
|
|
||||||
/* For each subchannel in the pool, try to unref it if it has
|
|
||||||
* exactly one ref (which is the ref from the pool itself). If that
|
|
||||||
* does happen, remove the subchannel from the pool */
|
|
||||||
this.pool[channelTarget][subchannelTarget] = refedSubchannels;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* For each subchannel in the pool, try to unref it if it has
|
||||||
|
* exactly one ref (which is the ref from the pool itself). If that
|
||||||
|
* does happen, remove the subchannel from the pool */
|
||||||
|
this.pool[channelTarget] = refedSubchannels;
|
||||||
}
|
}
|
||||||
/* Currently we do not delete keys with empty values. If that results
|
/* Currently we do not delete keys with empty values. If that results
|
||||||
* in significant memory usage we should change it. */
|
* in significant memory usage we should change it. */
|
||||||
|
@ -114,25 +114,27 @@ export class SubchannelPool {
|
||||||
*/
|
*/
|
||||||
getOrCreateSubchannel(
|
getOrCreateSubchannel(
|
||||||
channelTarget: string,
|
channelTarget: string,
|
||||||
subchannelTarget: string,
|
subchannelTarget: SubchannelAddress,
|
||||||
channelArguments: ChannelOptions,
|
channelArguments: ChannelOptions,
|
||||||
channelCredentials: ChannelCredentials
|
channelCredentials: ChannelCredentials
|
||||||
): Subchannel {
|
): Subchannel {
|
||||||
this.ensureCleanupTask();
|
this.ensureCleanupTask();
|
||||||
|
|
||||||
if (channelTarget in this.pool) {
|
if (channelTarget in this.pool) {
|
||||||
if (subchannelTarget in this.pool[channelTarget]) {
|
const subchannelObjArray = this.pool[channelTarget];
|
||||||
const subchannelObjArray = this.pool[channelTarget][subchannelTarget];
|
for (const subchannelObj of subchannelObjArray) {
|
||||||
for (const subchannelObj of subchannelObjArray) {
|
if (
|
||||||
if (
|
subchannelAddressEqual(
|
||||||
channelOptionsEqual(
|
subchannelTarget,
|
||||||
channelArguments,
|
subchannelObj.subchannelAddress
|
||||||
subchannelObj.channelArguments
|
) &&
|
||||||
) &&
|
channelOptionsEqual(
|
||||||
channelCredentials._equals(subchannelObj.channelCredentials)
|
channelArguments,
|
||||||
) {
|
subchannelObj.channelArguments
|
||||||
return subchannelObj.subchannel;
|
) &&
|
||||||
}
|
channelCredentials._equals(subchannelObj.channelCredentials)
|
||||||
|
) {
|
||||||
|
return subchannelObj.subchannel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,12 +146,10 @@ export class SubchannelPool {
|
||||||
channelCredentials
|
channelCredentials
|
||||||
);
|
);
|
||||||
if (!(channelTarget in this.pool)) {
|
if (!(channelTarget in this.pool)) {
|
||||||
this.pool[channelTarget] = Object.create(null);
|
this.pool[channelTarget] = [];
|
||||||
}
|
}
|
||||||
if (!(subchannelTarget in this.pool[channelTarget])) {
|
this.pool[channelTarget].push({
|
||||||
this.pool[channelTarget][subchannelTarget] = [];
|
subchannelAddress: subchannelTarget,
|
||||||
}
|
|
||||||
this.pool[channelTarget][subchannelTarget].push({
|
|
||||||
channelArguments,
|
channelArguments,
|
||||||
channelCredentials,
|
channelCredentials,
|
||||||
subchannel,
|
subchannel,
|
||||||
|
|
|
@ -20,12 +20,13 @@ import { ChannelCredentials } from './channel-credentials';
|
||||||
import { Metadata } from './metadata';
|
import { Metadata } from './metadata';
|
||||||
import { Http2CallStream } from './call-stream';
|
import { Http2CallStream } from './call-stream';
|
||||||
import { ChannelOptions } from './channel-options';
|
import { ChannelOptions } from './channel-options';
|
||||||
import { PeerCertificate, checkServerIdentity } from 'tls';
|
import { PeerCertificate, checkServerIdentity, TLSSocket } from 'tls';
|
||||||
import { ConnectivityState } from './channel';
|
import { ConnectivityState } from './channel';
|
||||||
import { BackoffTimeout, BackoffOptions } from './backoff-timeout';
|
import { BackoffTimeout, BackoffOptions } from './backoff-timeout';
|
||||||
import { getDefaultAuthority } from './resolver';
|
import { getDefaultAuthority } from './resolver';
|
||||||
import * as logging from './logging';
|
import * as logging from './logging';
|
||||||
import { LogVerbosity } from './constants';
|
import { LogVerbosity } from './constants';
|
||||||
|
import * as net from 'net';
|
||||||
|
|
||||||
const { version: clientVersion } = require('../../package.json');
|
const { version: clientVersion } = require('../../package.json');
|
||||||
|
|
||||||
|
@ -73,6 +74,44 @@ function uniformRandom(min: number, max: number) {
|
||||||
|
|
||||||
const tooManyPingsData: Buffer = Buffer.from('too_many_pings', 'ascii');
|
const tooManyPingsData: Buffer = Buffer.from('too_many_pings', 'ascii');
|
||||||
|
|
||||||
|
export interface TcpSubchannelAddress {
|
||||||
|
port: number;
|
||||||
|
host: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IpcSubchannelAddress {
|
||||||
|
path: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This represents a single backend address to connect to. This interface is a
|
||||||
|
* subset of net.SocketConnectOpts, i.e. the options described at
|
||||||
|
* https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener.
|
||||||
|
* Those are in turn a subset of the options that can be passed to http2.connect.
|
||||||
|
*/
|
||||||
|
export type SubchannelAddress = TcpSubchannelAddress | IpcSubchannelAddress;
|
||||||
|
|
||||||
|
export function isTcpSubchannelAddress(
|
||||||
|
address: SubchannelAddress
|
||||||
|
): address is TcpSubchannelAddress {
|
||||||
|
return 'port' in address;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function subchannelAddressEqual(
|
||||||
|
address1: SubchannelAddress,
|
||||||
|
address2: SubchannelAddress
|
||||||
|
): boolean {
|
||||||
|
if (isTcpSubchannelAddress(address1)) {
|
||||||
|
return (
|
||||||
|
isTcpSubchannelAddress(address2) &&
|
||||||
|
address1.host === address2.host &&
|
||||||
|
address1.port === address2.port
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return !isTcpSubchannelAddress(address2) && address1.path === address2.path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class Subchannel {
|
export class Subchannel {
|
||||||
/**
|
/**
|
||||||
* The subchannel's current connectivity state. Invariant: `session` === `null`
|
* The subchannel's current connectivity state. Invariant: `session` === `null`
|
||||||
|
@ -135,6 +174,11 @@ export class Subchannel {
|
||||||
*/
|
*/
|
||||||
private refcount = 0;
|
private refcount = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A string representation of the subchannel address, for logging/tracing
|
||||||
|
*/
|
||||||
|
private subchannelAddressString: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class representing a connection to a single backend.
|
* A class representing a connection to a single backend.
|
||||||
* @param channelTarget The target string for the channel as a whole
|
* @param channelTarget The target string for the channel as a whole
|
||||||
|
@ -147,7 +191,7 @@ export class Subchannel {
|
||||||
*/
|
*/
|
||||||
constructor(
|
constructor(
|
||||||
private channelTarget: string,
|
private channelTarget: string,
|
||||||
private subchannelAddress: string,
|
private subchannelAddress: SubchannelAddress,
|
||||||
private options: ChannelOptions,
|
private options: ChannelOptions,
|
||||||
private credentials: ChannelCredentials
|
private credentials: ChannelCredentials
|
||||||
) {
|
) {
|
||||||
|
@ -172,7 +216,7 @@ export class Subchannel {
|
||||||
clearTimeout(this.keepaliveTimeoutId);
|
clearTimeout(this.keepaliveTimeoutId);
|
||||||
const backoffOptions: BackoffOptions = {
|
const backoffOptions: BackoffOptions = {
|
||||||
initialDelay: options['grpc.initial_reconnect_backoff_ms'],
|
initialDelay: options['grpc.initial_reconnect_backoff_ms'],
|
||||||
maxDelay: options['grpc.max_reconnect_backoff_ms']
|
maxDelay: options['grpc.max_reconnect_backoff_ms'],
|
||||||
};
|
};
|
||||||
this.backoffTimeout = new BackoffTimeout(() => {
|
this.backoffTimeout = new BackoffTimeout(() => {
|
||||||
if (this.continueConnecting) {
|
if (this.continueConnecting) {
|
||||||
|
@ -187,6 +231,11 @@ export class Subchannel {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, backoffOptions);
|
}, backoffOptions);
|
||||||
|
if (isTcpSubchannelAddress(subchannelAddress)) {
|
||||||
|
this.subchannelAddressString = `${subchannelAddress.host}:${subchannelAddress.port}`;
|
||||||
|
} else {
|
||||||
|
this.subchannelAddressString = `${subchannelAddress.path}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -225,7 +274,7 @@ export class Subchannel {
|
||||||
}
|
}
|
||||||
|
|
||||||
private startConnectingInternal() {
|
private startConnectingInternal() {
|
||||||
const connectionOptions: http2.SecureClientSessionOptions =
|
let connectionOptions: http2.SecureClientSessionOptions =
|
||||||
this.credentials._getConnectionOptions() || {};
|
this.credentials._getConnectionOptions() || {};
|
||||||
let addressScheme = 'http://';
|
let addressScheme = 'http://';
|
||||||
if ('secureContext' in connectionOptions) {
|
if ('secureContext' in connectionOptions) {
|
||||||
|
@ -247,9 +296,40 @@ export class Subchannel {
|
||||||
} else {
|
} else {
|
||||||
connectionOptions.servername = getDefaultAuthority(this.channelTarget);
|
connectionOptions.servername = getDefaultAuthority(this.channelTarget);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
/* In all but the most recent versions of Node, http2.connect does not use
|
||||||
|
* the options when establishing plaintext connections, so we need to
|
||||||
|
* establish that connection explicitly. */
|
||||||
|
connectionOptions.createConnection = (authority, option) => {
|
||||||
|
/* net.NetConnectOpts is declared in a way that is more restrictive
|
||||||
|
* than what net.connect will actually accept, so we use the type
|
||||||
|
* assertion to work around that. */
|
||||||
|
return net.connect(this.subchannelAddress as net.NetConnectOpts);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
connectionOptions = Object.assign(
|
||||||
|
connectionOptions,
|
||||||
|
this.subchannelAddress
|
||||||
|
);
|
||||||
|
/* http2.connect uses the options here:
|
||||||
|
* https://github.com/nodejs/node/blob/70c32a6d190e2b5d7b9ff9d5b6a459d14e8b7d59/lib/internal/http2/core.js#L3028-L3036
|
||||||
|
* The spread operator overides earlier values with later ones, so any port
|
||||||
|
* or host values in the options will be used rather than any values extracted
|
||||||
|
* from the first argument. In addition, the path overrides the host and port,
|
||||||
|
* as documented for plaintext connections here:
|
||||||
|
* https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener
|
||||||
|
* and for TLS connections here:
|
||||||
|
* https://nodejs.org/api/tls.html#tls_tls_connect_options_callback. In
|
||||||
|
* earlier versions of Node, http2.connect passes these options to
|
||||||
|
* tls.connect but not net.connect, so in the insecure case we still need
|
||||||
|
* to set the createConnection option above to create the connection
|
||||||
|
* explicitly. We cannot do that in the TLS case because http2.connect
|
||||||
|
* passes necessary additional options to tls.connect.
|
||||||
|
* The first argument just needs to be parseable as a URL and the scheme
|
||||||
|
* determines whether the connection will be established over TLS or not.
|
||||||
|
*/
|
||||||
const session = http2.connect(
|
const session = http2.connect(
|
||||||
addressScheme + this.subchannelAddress,
|
addressScheme + getDefaultAuthority(this.channelTarget),
|
||||||
connectionOptions
|
connectionOptions
|
||||||
);
|
);
|
||||||
this.session = session;
|
this.session = session;
|
||||||
|
@ -328,7 +408,7 @@ export class Subchannel {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
trace(
|
trace(
|
||||||
this.subchannelAddress +
|
this.subchannelAddressString +
|
||||||
' ' +
|
' ' +
|
||||||
ConnectivityState[this.connectivityState] +
|
ConnectivityState[this.connectivityState] +
|
||||||
' -> ' +
|
' -> ' +
|
||||||
|
@ -400,7 +480,7 @@ export class Subchannel {
|
||||||
|
|
||||||
callRef() {
|
callRef() {
|
||||||
trace(
|
trace(
|
||||||
this.subchannelAddress +
|
this.subchannelAddressString +
|
||||||
' callRefcount ' +
|
' callRefcount ' +
|
||||||
this.callRefcount +
|
this.callRefcount +
|
||||||
' -> ' +
|
' -> ' +
|
||||||
|
@ -417,7 +497,7 @@ export class Subchannel {
|
||||||
|
|
||||||
callUnref() {
|
callUnref() {
|
||||||
trace(
|
trace(
|
||||||
this.subchannelAddress +
|
this.subchannelAddressString +
|
||||||
' callRefcount ' +
|
' callRefcount ' +
|
||||||
this.callRefcount +
|
this.callRefcount +
|
||||||
' -> ' +
|
' -> ' +
|
||||||
|
@ -435,7 +515,7 @@ export class Subchannel {
|
||||||
|
|
||||||
ref() {
|
ref() {
|
||||||
trace(
|
trace(
|
||||||
this.subchannelAddress +
|
this.subchannelAddressString +
|
||||||
' callRefcount ' +
|
' callRefcount ' +
|
||||||
this.refcount +
|
this.refcount +
|
||||||
' -> ' +
|
' -> ' +
|
||||||
|
@ -446,7 +526,7 @@ export class Subchannel {
|
||||||
|
|
||||||
unref() {
|
unref() {
|
||||||
trace(
|
trace(
|
||||||
this.subchannelAddress +
|
this.subchannelAddressString +
|
||||||
' callRefcount ' +
|
' callRefcount ' +
|
||||||
this.refcount +
|
this.refcount +
|
||||||
' -> ' +
|
' -> ' +
|
||||||
|
@ -557,6 +637,6 @@ export class Subchannel {
|
||||||
}
|
}
|
||||||
|
|
||||||
getAddress(): string {
|
getAddress(): string {
|
||||||
return this.subchannelAddress;
|
return this.subchannelAddressString;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,8 @@
|
||||||
|
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
|
|
||||||
export const CIPHER_SUITES: string | undefined = process.env.GRPC_SSL_CIPHER_SUITES;
|
export const CIPHER_SUITES: string | undefined =
|
||||||
|
process.env.GRPC_SSL_CIPHER_SUITES;
|
||||||
|
|
||||||
const DEFAULT_ROOTS_FILE_PATH = process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH;
|
const DEFAULT_ROOTS_FILE_PATH = process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH;
|
||||||
|
|
||||||
|
@ -31,4 +32,4 @@ export function getDefaultRootsData(): Buffer | null {
|
||||||
return defaultRootsData;
|
return defaultRootsData;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ import * as assert from 'assert';
|
||||||
import * as resolverManager from '../src/resolver';
|
import * as resolverManager from '../src/resolver';
|
||||||
import { ServiceConfig } from '../src/service-config';
|
import { ServiceConfig } from '../src/service-config';
|
||||||
import { StatusObject } from '../src/call-stream';
|
import { StatusObject } from '../src/call-stream';
|
||||||
|
import { SubchannelAddress, isTcpSubchannelAddress } from '../src/subchannel';
|
||||||
|
|
||||||
describe('Name Resolver', () => {
|
describe('Name Resolver', () => {
|
||||||
describe('DNS Names', function() {
|
describe('DNS Names', function() {
|
||||||
|
@ -33,11 +34,18 @@ describe('Name Resolver', () => {
|
||||||
const target = 'localhost:50051';
|
const target = 'localhost:50051';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
assert(addressList.includes('127.0.0.1:50051'));
|
assert(
|
||||||
|
addressList.some(
|
||||||
|
addr =>
|
||||||
|
isTcpSubchannelAddress(addr) &&
|
||||||
|
addr.host === '127.0.0.1' &&
|
||||||
|
addr.port === 50051
|
||||||
|
)
|
||||||
|
);
|
||||||
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
||||||
done();
|
done();
|
||||||
},
|
},
|
||||||
|
@ -52,11 +60,18 @@ describe('Name Resolver', () => {
|
||||||
const target = 'localhost';
|
const target = 'localhost';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
assert(addressList.includes('127.0.0.1:443'));
|
assert(
|
||||||
|
addressList.some(
|
||||||
|
addr =>
|
||||||
|
isTcpSubchannelAddress(addr) &&
|
||||||
|
addr.host === '127.0.0.1' &&
|
||||||
|
addr.port === 443
|
||||||
|
)
|
||||||
|
);
|
||||||
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
||||||
done();
|
done();
|
||||||
},
|
},
|
||||||
|
@ -71,11 +86,18 @@ describe('Name Resolver', () => {
|
||||||
const target = '1.2.3.4';
|
const target = '1.2.3.4';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
assert(addressList.includes('1.2.3.4:443'));
|
assert(
|
||||||
|
addressList.some(
|
||||||
|
addr =>
|
||||||
|
isTcpSubchannelAddress(addr) &&
|
||||||
|
addr.host === '1.2.3.4' &&
|
||||||
|
addr.port === 443
|
||||||
|
)
|
||||||
|
);
|
||||||
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
||||||
done();
|
done();
|
||||||
},
|
},
|
||||||
|
@ -90,11 +112,18 @@ describe('Name Resolver', () => {
|
||||||
const target = '::1';
|
const target = '::1';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
assert(addressList.includes('[::1]:443'));
|
assert(
|
||||||
|
addressList.some(
|
||||||
|
addr =>
|
||||||
|
isTcpSubchannelAddress(addr) &&
|
||||||
|
addr.host === '::1' &&
|
||||||
|
addr.port === 443
|
||||||
|
)
|
||||||
|
);
|
||||||
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
||||||
done();
|
done();
|
||||||
},
|
},
|
||||||
|
@ -109,11 +138,18 @@ describe('Name Resolver', () => {
|
||||||
const target = '[::1]:50051';
|
const target = '[::1]:50051';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
assert(addressList.includes('[::1]:50051'));
|
assert(
|
||||||
|
addressList.some(
|
||||||
|
addr =>
|
||||||
|
isTcpSubchannelAddress(addr) &&
|
||||||
|
addr.host === '::1' &&
|
||||||
|
addr.port === 50051
|
||||||
|
)
|
||||||
|
);
|
||||||
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
// We would check for the IPv6 address but it needs to be omitted on some Node versions
|
||||||
done();
|
done();
|
||||||
},
|
},
|
||||||
|
@ -128,7 +164,7 @@ describe('Name Resolver', () => {
|
||||||
const target = 'example.com';
|
const target = 'example.com';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
|
@ -146,7 +182,7 @@ describe('Name Resolver', () => {
|
||||||
const target = 'loopback4.unittest.grpc.io';
|
const target = 'loopback4.unittest.grpc.io';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
|
@ -166,7 +202,7 @@ describe('Name Resolver', () => {
|
||||||
const target = 'network-tools.com';
|
const target = 'network-tools.com';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
|
@ -196,7 +232,7 @@ describe('Name Resolver', () => {
|
||||||
const target2 = 'grpc-test4.sandbox.googleapis.com';
|
const target2 = 'grpc-test4.sandbox.googleapis.com';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
|
@ -218,11 +254,15 @@ describe('Name Resolver', () => {
|
||||||
const target = 'unix:socket';
|
const target = 'unix:socket';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
assert(addressList.includes('socket'));
|
assert(
|
||||||
|
addressList.some(
|
||||||
|
addr => !isTcpSubchannelAddress(addr) && addr.path === 'socket'
|
||||||
|
)
|
||||||
|
);
|
||||||
done();
|
done();
|
||||||
},
|
},
|
||||||
onError: (error: StatusObject) => {
|
onError: (error: StatusObject) => {
|
||||||
|
@ -236,11 +276,16 @@ describe('Name Resolver', () => {
|
||||||
const target = 'unix:///tmp/socket';
|
const target = 'unix:///tmp/socket';
|
||||||
const listener: resolverManager.ResolverListener = {
|
const listener: resolverManager.ResolverListener = {
|
||||||
onSuccessfulResolution: (
|
onSuccessfulResolution: (
|
||||||
addressList: string[],
|
addressList: SubchannelAddress[],
|
||||||
serviceConfig: ServiceConfig | null,
|
serviceConfig: ServiceConfig | null,
|
||||||
serviceConfigError: StatusObject | null
|
serviceConfigError: StatusObject | null
|
||||||
) => {
|
) => {
|
||||||
assert(addressList.includes('/tmp/socket'));
|
assert(
|
||||||
|
addressList.some(
|
||||||
|
addr =>
|
||||||
|
!isTcpSubchannelAddress(addr) && addr.path === '/tmp/socket'
|
||||||
|
)
|
||||||
|
);
|
||||||
done();
|
done();
|
||||||
},
|
},
|
||||||
onError: (error: StatusObject) => {
|
onError: (error: StatusObject) => {
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
"deps/grpc/include/grpc/**/*.h",
|
"deps/grpc/include/grpc/**/*.h",
|
||||||
"deps/grpc/src/core/**/*.{c,cc,h}",
|
"deps/grpc/src/core/**/*.{c,cc,h}",
|
||||||
"deps/grpc/src/boringssl/err_data.c",
|
"deps/grpc/src/boringssl/err_data.c",
|
||||||
"deps/grpc/third_party/abseil-cpp/absl/**/*.{h,hh,inc}",
|
"deps/grpc/third_party/abseil-cpp/absl/**/*.{cc,h,inc}",
|
||||||
"deps/grpc/third_party/boringssl/crypto/**/*.{c,cc,h}",
|
"deps/grpc/third_party/boringssl/crypto/**/*.{c,cc,h}",
|
||||||
"deps/grpc/third_party/boringssl/include/**/*.{c,cc,h}",
|
"deps/grpc/third_party/boringssl/include/**/*.{c,cc,h}",
|
||||||
"deps/grpc/third_party/boringssl/ssl/**/*.{c,cc,h}",
|
"deps/grpc/third_party/boringssl/ssl/**/*.{c,cc,h}",
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
#!/usr/bin/env python2.7
|
||||||
|
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
node_versions = ["4", "5", "6", "7", "8", "9", "10", "11", "12", "13"]
|
||||||
|
electron_versions = ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "2.0", "3.0", "3.1", "4.1", "4.2", "5.0", "6.0", "6.1", "7.0", "7.1", "8.0"]
|
||||||
|
|
||||||
|
def gen_linux_configs():
|
||||||
|
configs = []
|
||||||
|
|
||||||
|
node_arches = ["ia32", "x64", "arm", "arm64", "s390x"]
|
||||||
|
electron_arches = ["ia32", "x64"]
|
||||||
|
alpine_arches = ["x64"]
|
||||||
|
|
||||||
|
for version in node_versions:
|
||||||
|
for arch in node_arches:
|
||||||
|
configs.append({
|
||||||
|
"name": "node_{version}_{arch}_glibc".format(version=version, arch=arch),
|
||||||
|
"runtime": "node",
|
||||||
|
"version": version,
|
||||||
|
"arch": arch,
|
||||||
|
"libc": "glibc"
|
||||||
|
})
|
||||||
|
for arch in alpine_arches:
|
||||||
|
configs.append({
|
||||||
|
"name": "node_{version}_{arch}_musl".format(version=version, arch=arch),
|
||||||
|
"runtime": "node",
|
||||||
|
"version": version,
|
||||||
|
"arch": arch,
|
||||||
|
"libc": "glibc"
|
||||||
|
})
|
||||||
|
for version in electron_versions:
|
||||||
|
for arch in electron_arches:
|
||||||
|
configs.append({
|
||||||
|
"name": "electron_{version}_{arch}_glibc".format(version=version, arch=arch),
|
||||||
|
"runtime": "electron",
|
||||||
|
"version": version,
|
||||||
|
"arch": arch,
|
||||||
|
"libc": "glibc"
|
||||||
|
})
|
||||||
|
return configs
|
||||||
|
|
||||||
|
def gen_mac_configs():
|
||||||
|
configs = []
|
||||||
|
|
||||||
|
node_arches = ["ia32", "x64"]
|
||||||
|
electron_arches = ["ia32", "x64"]
|
||||||
|
|
||||||
|
for version in node_versions:
|
||||||
|
for arch in node_arches:
|
||||||
|
configs.append({
|
||||||
|
"name": "node_{version}_{arch}".format(version=version, arch=arch),
|
||||||
|
"runtime": "node",
|
||||||
|
"version": version,
|
||||||
|
"arch": arch
|
||||||
|
})
|
||||||
|
for version in electron_versions:
|
||||||
|
for arch in electron_arches:
|
||||||
|
configs.append({
|
||||||
|
"name": "electron_{version}_{arch}".format(version=version, arch=arch),
|
||||||
|
"runtime": "electron",
|
||||||
|
"version": version,
|
||||||
|
"arch": arch
|
||||||
|
})
|
||||||
|
return configs
|
||||||
|
|
||||||
|
def gen_windows_configs():
|
||||||
|
configs = []
|
||||||
|
|
||||||
|
node_arches = ["ia32", "x64"]
|
||||||
|
electron_arches = ["ia32", "x64"]
|
||||||
|
|
||||||
|
for version in node_versions:
|
||||||
|
for arch in node_arches:
|
||||||
|
configs.append({
|
||||||
|
"name": "node_{version}_{arch}".format(version=version, arch=arch),
|
||||||
|
"runtime": "node",
|
||||||
|
"version": version,
|
||||||
|
"arch": arch
|
||||||
|
})
|
||||||
|
for version in electron_versions:
|
||||||
|
for arch in electron_arches:
|
||||||
|
configs.append({
|
||||||
|
"name": "electron_{version}_{arch}".format(version=version, arch=arch),
|
||||||
|
"runtime": "electron",
|
||||||
|
"version": version,
|
||||||
|
"arch": arch
|
||||||
|
})
|
||||||
|
return configs
|
||||||
|
|
||||||
|
out = {
|
||||||
|
"linux_configs": gen_linux_configs(),
|
||||||
|
"mac_configs": gen_mac_configs(),
|
||||||
|
"windows_configs": gen_windows_configs()
|
||||||
|
}
|
||||||
|
|
||||||
|
print(yaml.dump(out))
|
|
@ -16,6 +16,11 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
cd `dirname $0`/../..
|
cd $(dirname $0)/../../../..
|
||||||
root=`pwd`
|
root=$(pwd)
|
||||||
./deps/grpc/tools/buildgen/generate_projects.sh $root/build.yaml --base=$root --templates `find templates -type f`
|
native_root=$root/packages/grpc-native-core
|
||||||
|
|
||||||
|
output_file=$(mktemp /tmp/genXXXXXX)
|
||||||
|
python $native_root/tools/buildgen/gen_build_yaml.py > $output_file
|
||||||
|
|
||||||
|
$native_root/deps/grpc/tools/buildgen/generate_projects.sh $native_root/build.yaml $output_file --base=$root --templates $(find templates -type f)
|
||||||
|
|
|
@ -51,6 +51,9 @@ cd $(dirname $0)
|
||||||
tool_dir=$(pwd)
|
tool_dir=$(pwd)
|
||||||
cd $tool_dir/../../..
|
cd $tool_dir/../../..
|
||||||
base_dir=$(pwd)
|
base_dir=$(pwd)
|
||||||
|
cd $base_dir/../..
|
||||||
|
root_dir=$(pwd)
|
||||||
|
cd $base_dir
|
||||||
|
|
||||||
export ARTIFACTS_OUT=$base_dir/artifacts
|
export ARTIFACTS_OUT=$base_dir/artifacts
|
||||||
export JOBS=8
|
export JOBS=8
|
||||||
|
@ -70,7 +73,8 @@ fi
|
||||||
|
|
||||||
if [ "$DO_CROSS" = "true" ] ; then
|
if [ "$DO_CROSS" = "true" ] ; then
|
||||||
$tool_dir/build_artifact_node_arm.sh
|
$tool_dir/build_artifact_node_arm.sh
|
||||||
|
$tool_dir/build_artifact_node_s390x.sh
|
||||||
|
|
||||||
docker build -t alpine_node_artifact $base_dir/tools/docker/alpine_artifact
|
docker build -t alpine_node_artifact $root_dir/tools/release/alpine
|
||||||
docker run -e JOBS=8 -e ARTIFACTS_OUT=/var/grpc/artifacts -v $base_dir:/var/grpc alpine_node_artifact /var/grpc/tools/run_tests/artifacts/build_artifact_node.sh --with-alpine
|
docker run -e JOBS=8 -e ARTIFACTS_OUT=/var/grpc/artifacts -v $base_dir:/var/grpc alpine_node_artifact /var/grpc/tools/run_tests/artifacts/build_artifact_node.sh --with-alpine
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
# https://github.com/mapbox/node-pre-gyp/issues/362
|
||||||
|
npm install -g node-gyp
|
||||||
|
|
||||||
|
cd $(dirname $0)/../../..
|
||||||
|
|
||||||
|
rm -rf build || true
|
||||||
|
|
||||||
|
mkdir -p "${ARTIFACTS_OUT}"
|
||||||
|
|
||||||
|
npm update
|
||||||
|
|
||||||
|
node_versions=( 4.0.0 5.0.0 6.0.0 7.0.0 8.0.0 9.0.0 10.0.0 11.0.0 12.0.0 13.0.0 )
|
||||||
|
|
||||||
|
for version in ${node_versions[@]}
|
||||||
|
do
|
||||||
|
# Cross compile for s390x on x64
|
||||||
|
# Requires debian or ubuntu packages "g++-s390x-linux-gnu".
|
||||||
|
CC=s390x-linux-gnu-gcc CXX=s390x-linux-gnu-g++ LD=s390x-linux-gnu-g++ ./node_modules/.bin/node-pre-gyp configure rebuild package testpackage --target=$version --target_arch=s390x
|
||||||
|
cp -r build/stage/* "${ARTIFACTS_OUT}"/
|
||||||
|
done
|
|
@ -0,0 +1,63 @@
|
||||||
|
@rem Copyright 2016 gRPC authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
|
||||||
|
@echo "Starting Windows build"
|
||||||
|
|
||||||
|
powershell -c "& { iwr https://raw.githubusercontent.com/grumpycoders/nvm-ps/master/nvm.ps1 | iex }"
|
||||||
|
|
||||||
|
call nvm install 10
|
||||||
|
call nvm use 10
|
||||||
|
|
||||||
|
call npm install -g npm@6.10.x
|
||||||
|
@rem https://github.com/mapbox/node-pre-gyp/issues/362
|
||||||
|
call npm install -g node-gyp@3
|
||||||
|
|
||||||
|
cd /d %~dp0
|
||||||
|
cd ..\..\..\..\..
|
||||||
|
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
|
set ARTIFACTS_OUT=%cd%\artifacts
|
||||||
|
|
||||||
|
cd packages\grpc-native-core
|
||||||
|
|
||||||
|
set PATH=%PATH%;C:\Program Files\nodejs\;%APPDATA%\npm
|
||||||
|
|
||||||
|
set JOBS=8
|
||||||
|
|
||||||
|
del /f /q BUILD || rmdir build /s /q
|
||||||
|
|
||||||
|
call npm update || goto :error
|
||||||
|
|
||||||
|
if "%RUNTIME%"=="electron" (
|
||||||
|
set "HOME=%USERPROFILE%\electron-gyp"
|
||||||
|
set "npm_config_disturl=https://atom.io/download/electron"
|
||||||
|
)
|
||||||
|
|
||||||
|
call .\node_modules\.bin\node-pre-gyp.cmd configure build --target=%%v --target_arch=%%a && goto :EOF
|
||||||
|
@rem Try again after removing openssl headers
|
||||||
|
rmdir "%USERPROFILE%\.node-gyp\%%v\include\node\openssl" /S /Q
|
||||||
|
rmdir "%USERPROFILE%\.node-gyp\iojs-%%v\include\node\openssl" /S /Q
|
||||||
|
rmdir "%USERPROFILE%\AppData\Local\node-gyp\cache\%%v\include\node\openssl" /S /Q
|
||||||
|
rmdir "%USERPROFILE%\AppData\Local\node-gyp\cache\iojs-%%v\include\node\openssl" /S /Q
|
||||||
|
call .\node_modules\.bin\node-pre-gyp.cmd build package --target=%%v --target_arch=%%a || goto :error
|
||||||
|
|
||||||
|
xcopy /Y /I /S build\stage\* %ARTIFACTS_OUT%\ || goto :error
|
||||||
|
|
||||||
|
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||||
|
|
||||||
|
goto :EOF
|
||||||
|
|
||||||
|
:error
|
||||||
|
exit /b 1
|
|
@ -0,0 +1,54 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
|
||||||
|
export NVM_DIR="$HOME/.nvm"
|
||||||
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||||
|
|
||||||
|
nvm install 10
|
||||||
|
nvm use 10
|
||||||
|
npm install -g npm
|
||||||
|
# https://github.com/mapbox/node-pre-gyp/issues/362
|
||||||
|
npm install -g node-gyp
|
||||||
|
|
||||||
|
# $ARCH should only have one of these values if the script is being called in
|
||||||
|
# an environment with these cross compiler packages installed
|
||||||
|
case $ARCH in
|
||||||
|
arm)
|
||||||
|
export CC=arm-linux-gnueabihf-gcc
|
||||||
|
export CXX=arm-linux-gnueabihf-g++
|
||||||
|
export CXX=arm-linux-gnueabihf-g++
|
||||||
|
;;
|
||||||
|
arm64)
|
||||||
|
export CC=aarch64-linux-gnu-gcc
|
||||||
|
export CXX=aarch64-linux-gnu-g++
|
||||||
|
export LD=aarch64-linux-gnu-g++
|
||||||
|
;;
|
||||||
|
s390x)
|
||||||
|
export CC=s390x-linux-gnu-gcc
|
||||||
|
export CXX=s390x-linux-gnu-g++
|
||||||
|
export LD=s390x-linux-gnu-g++
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $RUNTIME in
|
||||||
|
electron)
|
||||||
|
export HOME=~/.electron-gyp
|
||||||
|
export npm_config_disturl=https://atom.io/download/electron
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
./node_modules/.bin/node-pre-gyp configure rebuild package --target=$VERSION --target_arch=$ARCH --runtime=$RUNTIME --target_libc=$LIBC
|
||||||
|
cp -r build/stage/* "${ARTIFACTS_OUT}"/
|
|
@ -0,0 +1,51 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Expected environment variables:
|
||||||
|
# VERSION: the node version to build for
|
||||||
|
# ARCH: the processor architecture to build for
|
||||||
|
# RUNTIME: node or electron
|
||||||
|
# LIBC: the libc to build for, glibc or musl
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
cd $(dirname $0)/../../../../..
|
||||||
|
base_dir=$(pwd)
|
||||||
|
|
||||||
|
export ARTIFACTS_OUT=$base_dir/artifacts
|
||||||
|
|
||||||
|
mkdir -p $ARTIFACTS_OUT
|
||||||
|
|
||||||
|
cd $base_dir/packages/grpc-native-core
|
||||||
|
|
||||||
|
# Install gRPC and its submodules.
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
|
case $ARCH in
|
||||||
|
arm|arm64|s390x)
|
||||||
|
docker build -t artifact-image $base_dir/tools/release/cross
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case $LIBC in
|
||||||
|
musl)
|
||||||
|
docker build -t artifact-image $base_dir/tools/release/alpine_artifact
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
docker build -t artifact-image $base_dir/tools/release/native
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $base_dir:$base_dir -e ARCH -e VERSION -e RUNTIME -e LIBC -e ARTIFACTS_OUT artifact-image $base_dir/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_in_docker.sh
|
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
|
||||||
|
export NVM_DIR="$HOME/.nvm"
|
||||||
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||||
|
|
||||||
|
nvm install 10
|
||||||
|
nvm use 10
|
||||||
|
npm install -g npm
|
||||||
|
# https://github.com/mapbox/node-pre-gyp/issues/362
|
||||||
|
npm install -g node-gyp
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
cd $(dirname $0)/../../../../..
|
||||||
|
base_dir=$(pwd)
|
||||||
|
|
||||||
|
cd $base_dir/packages/grpc-native-core
|
||||||
|
|
||||||
|
# Install gRPC and its submodules.
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
|
export JOBS=8
|
||||||
|
export ARTIFACTS_OUT=$base_dir/artifacts
|
||||||
|
|
||||||
|
mkdir -p ${ARTIFACTS_OUT}
|
||||||
|
|
||||||
|
rm -rf build || true
|
||||||
|
|
||||||
|
npm update
|
||||||
|
|
||||||
|
case $RUNTIME in
|
||||||
|
electron)
|
||||||
|
export HOME=~/.electron-gyp
|
||||||
|
export npm_config_disturl=https://atom.io/download/electron
|
||||||
|
;;
|
||||||
|
node)
|
||||||
|
esac
|
||||||
|
|
||||||
|
./node_modules/.bin/node-pre-gyp configure rebuild package --target=$VERSION --target_arch=$ARCH --runtime=$RUNTIME
|
||||||
|
cp -r build/stage/* "${ARTIFACTS_OUT}"/
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
|
@ -20,7 +20,13 @@
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
<%
|
||||||
|
def gyp_target_name(lib_name):
|
||||||
|
if lib_name.startswith("absl/"):
|
||||||
|
return lib_name.replace("/", "__").replace(":", "__")
|
||||||
|
else:
|
||||||
|
return lib_name
|
||||||
|
%>
|
||||||
# Some of this file is built with the help of
|
# Some of this file is built with the help of
|
||||||
# https://n8.io/converting-a-c-library-to-gyp/
|
# https://n8.io/converting-a-c-library-to-gyp/
|
||||||
{
|
{
|
||||||
|
@ -332,12 +338,12 @@
|
||||||
% for lib in libs:
|
% for lib in libs:
|
||||||
% if lib.name == core.name or (lib.name in core.transitive_deps and lib.name not in ('boringssl', 'z')):
|
% if lib.name == core.name or (lib.name in core.transitive_deps and lib.name not in ('boringssl', 'z')):
|
||||||
{
|
{
|
||||||
'target_name': '${lib.name}',
|
'target_name': '${gyp_target_name(lib.name)}',
|
||||||
'product_prefix': 'lib',
|
'product_prefix': 'lib',
|
||||||
'type': 'static_library',
|
'type': 'static_library',
|
||||||
'dependencies': [
|
'dependencies': [
|
||||||
% for dep in getattr(lib, 'deps', []):
|
% for dep in getattr(lib, 'deps', []):
|
||||||
'${dep}',
|
'${gyp_target_name(dep)}',
|
||||||
% endfor
|
% endfor
|
||||||
],
|
],
|
||||||
'sources': [
|
'sources': [
|
|
@ -70,7 +70,7 @@
|
||||||
"deps/grpc/include/grpc/**/*.h",
|
"deps/grpc/include/grpc/**/*.h",
|
||||||
"deps/grpc/src/core/**/*.{c,cc,h}",
|
"deps/grpc/src/core/**/*.{c,cc,h}",
|
||||||
"deps/grpc/src/boringssl/err_data.c",
|
"deps/grpc/src/boringssl/err_data.c",
|
||||||
"deps/grpc/third_party/abseil-cpp/absl/**/*.{h,hh,inc}",
|
"deps/grpc/third_party/abseil-cpp/absl/**/*.{cc,h,inc}",
|
||||||
"deps/grpc/third_party/boringssl/crypto/**/*.{c,cc,h}",
|
"deps/grpc/third_party/boringssl/crypto/**/*.{c,cc,h}",
|
||||||
"deps/grpc/third_party/boringssl/include/**/*.{c,cc,h}",
|
"deps/grpc/third_party/boringssl/include/**/*.{c,cc,h}",
|
||||||
"deps/grpc/third_party/boringssl/ssl/**/*.{c,cc,h}",
|
"deps/grpc/third_party/boringssl/ssl/**/*.{c,cc,h}",
|
|
@ -0,0 +1,48 @@
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
foreach: linux_configs
|
||||||
|
output_name: ${selected.name}.cfg
|
||||||
|
template: |
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "${selected.runtime}"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "${selected.arch}"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
%if selected.runtime == "node":
|
||||||
|
value: "${selected.version}.0.0"
|
||||||
|
%else:
|
||||||
|
value: "${selected.version}.0"
|
||||||
|
%endif
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "${selected.libc}"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
foreach: mac_configs
|
||||||
|
output_name: ${selected.name}.cfg
|
||||||
|
template: |
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_macos.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "${selected.runtime}"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "${selected.arch}"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
%if selected.runtime == "node":
|
||||||
|
value: "${selected.version}.0.0"
|
||||||
|
%else:
|
||||||
|
value: "${selected.version}.0"
|
||||||
|
%endif
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
foreach: mac_configs
|
||||||
|
output_name: ${selected.name}.cfg
|
||||||
|
template: |
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact.bat"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "${selected.runtime}"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "${selected.arch}"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
%if selected.runtime == "node":
|
||||||
|
value: "${selected.version}.0.0"
|
||||||
|
%else:
|
||||||
|
value: "${selected.version}.0"
|
||||||
|
%endif
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -59,6 +59,29 @@ const serviceImpl = {
|
||||||
};
|
};
|
||||||
|
|
||||||
describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, function() {
|
describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, function() {
|
||||||
|
it('client should not wait for ready by default', function(done) {
|
||||||
|
this.timeout(15000);
|
||||||
|
const disconnectedClient = new TestServiceClient('foo.test.google.com:50051', clientGrpc.credentials.createInsecure());
|
||||||
|
const deadline = new Date();
|
||||||
|
deadline.setSeconds(deadline.getSeconds() + 10);
|
||||||
|
disconnectedClient.unary({}, {deadline: deadline}, (error, value) =>{
|
||||||
|
assert(error);
|
||||||
|
assert.strictEqual(error.code, clientGrpc.status.UNAVAILABLE);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('client should wait for a connection with waitForReady on', function(done) {
|
||||||
|
this.timeout(15000);
|
||||||
|
const disconnectedClient = new TestServiceClient('foo.test.google.com:50051', clientGrpc.credentials.createInsecure());
|
||||||
|
const metadata = new clientGrpc.Metadata({waitForReady: true});
|
||||||
|
const deadline = new Date();
|
||||||
|
deadline.setSeconds(deadline.getSeconds() + 10);
|
||||||
|
disconnectedClient.unary({}, metadata, {deadline: deadline}, (error, value) =>{
|
||||||
|
assert(error);
|
||||||
|
assert.strictEqual(error.code, clientGrpc.status.DEADLINE_EXCEEDED);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
describe('Reconnection', function() {
|
describe('Reconnection', function() {
|
||||||
let server1;
|
let server1;
|
||||||
let server2;
|
let server2;
|
||||||
|
|
|
@ -562,5 +562,131 @@ describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, functio
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
describe('Other conditions', function() {
|
||||||
|
var client;
|
||||||
|
var server;
|
||||||
|
var port;
|
||||||
|
before(function(done) {
|
||||||
|
server = new serverGrpc.Server();
|
||||||
|
var existing_metadata = new serverGrpc.Metadata();
|
||||||
|
existing_metadata.add('existing-metadata', 'yes');
|
||||||
|
server.addService(TestServiceClient.service, {
|
||||||
|
unary: function(call, cb) {
|
||||||
|
var req = call.request;
|
||||||
|
if (req.error) {
|
||||||
|
var message = 'Requested error';
|
||||||
|
if (req.message) {
|
||||||
|
message = req.message;
|
||||||
|
}
|
||||||
|
cb({code: serverGrpc.status.UNKNOWN,
|
||||||
|
message: message,
|
||||||
|
metadata: existing_metadata}, null, null);
|
||||||
|
} else {
|
||||||
|
cb(null, {count: 1});
|
||||||
|
}
|
||||||
|
}/*,
|
||||||
|
clientStream: function(stream, cb){
|
||||||
|
var count = 0;
|
||||||
|
var errored;
|
||||||
|
stream.on('data', function(data) {
|
||||||
|
if (data.error) {
|
||||||
|
var message = 'Requested error';
|
||||||
|
if (data.message) {
|
||||||
|
message = data.message;
|
||||||
|
}
|
||||||
|
errored = true;
|
||||||
|
cb(new Error(message), null, trailer_metadata);
|
||||||
|
} else {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
stream.on('end', function() {
|
||||||
|
if (!errored) {
|
||||||
|
cb(null, {count: count}, trailer_metadata);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
serverStream: function(stream) {
|
||||||
|
var req = stream.request;
|
||||||
|
if (req.error) {
|
||||||
|
var message = 'Requested error';
|
||||||
|
if (req.message) {
|
||||||
|
message = req.message;
|
||||||
|
}
|
||||||
|
var err = {code: serverGrpc.status.UNKNOWN,
|
||||||
|
details: message};
|
||||||
|
err.metadata = trailer_metadata;
|
||||||
|
stream.emit('error', err);
|
||||||
|
} else {
|
||||||
|
for (var i = 0; i < 5; i++) {
|
||||||
|
stream.write({count: i});
|
||||||
|
}
|
||||||
|
stream.end(trailer_metadata);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
bidiStream: function(stream) {
|
||||||
|
var count = 0;
|
||||||
|
stream.on('data', function(data) {
|
||||||
|
if (data.error) {
|
||||||
|
var message = 'Requested error';
|
||||||
|
if (data.message) {
|
||||||
|
message = data.message;
|
||||||
|
}
|
||||||
|
var err = new Error(message);
|
||||||
|
err.metadata = trailer_metadata.clone();
|
||||||
|
err.metadata.add('count', '' + count);
|
||||||
|
stream.emit('error', err);
|
||||||
|
} else {
|
||||||
|
stream.write({count: count});
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
stream.on('end', function() {
|
||||||
|
stream.end(trailer_metadata);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
*/});
|
||||||
|
server.bindAsync('localhost:0', serverInsecureCreds, (err, _port) => {
|
||||||
|
assert.ifError(err);
|
||||||
|
port = _port;
|
||||||
|
client = new TestServiceClient('localhost:' + port, clientInsecureCreds);
|
||||||
|
server.start();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
after(function() {
|
||||||
|
server.forceShutdown();
|
||||||
|
});
|
||||||
|
describe('Existing metadata', function() {
|
||||||
|
it('should not be present when a unary call succeeds', function(done) {
|
||||||
|
var call = client.unary({error: false}, function(err, data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
});
|
||||||
|
call.on('status', function(status) {
|
||||||
|
assert.deepStrictEqual(status.metadata.get('existing-metadata'), []);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('should be present when a unary call fails', function(done) {
|
||||||
|
var call = client.unary({error: true}, function(err, data) {
|
||||||
|
assert(err);
|
||||||
|
});
|
||||||
|
call.on('status', function(status) {
|
||||||
|
assert.deepStrictEqual(status.metadata.get('existing-metadata'), ['yes']);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('Error object should contain the status', function() {
|
||||||
|
it('for a unary call', function(done) {
|
||||||
|
client.unary({error: true}, function(err, data) {
|
||||||
|
assert(err);
|
||||||
|
assert.strictEqual(err.code, clientGrpc.status.UNKNOWN);
|
||||||
|
assert.strictEqual(err.details, 'Requested error');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
@ -2,7 +2,7 @@ FROM debian:stretch
|
||||||
|
|
||||||
RUN dpkg --add-architecture i386
|
RUN dpkg --add-architecture i386
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get install -y curl build-essential g++-aarch64-linux-gnu g++-arm-linux-gnueabihf python libc6-dev:i386 lib32stdc++-6-dev
|
RUN apt-get install -y curl build-essential g++-aarch64-linux-gnu g++-arm-linux-gnueabihf g++-s390x-linux-gnu python libc6-dev:i386 lib32stdc++-6-dev
|
||||||
RUN curl -fsSL get.docker.com | bash
|
RUN curl -fsSL get.docker.com | bash
|
||||||
|
|
||||||
RUN mkdir /usr/local/nvm
|
RUN mkdir /usr/local/nvm
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.2.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.2.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.3.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.3.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.4.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.4.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.5.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.5.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.6.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.6.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.7.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.7.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.8.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "1.8.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "2.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "2.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "3.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "3.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "3.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "3.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "4.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "4.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "4.2.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "4.2.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "5.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "5.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "6.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "6.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "6.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "6.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "7.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "7.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "7.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "7.1.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "8.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "electron"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "8.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "arm64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "10.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "arm"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "10.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "10.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "s390x"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "10.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "10.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "10.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "arm64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "11.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "arm"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "11.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "11.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "s390x"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "11.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "11.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "11.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "arm64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "12.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "arm"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "12.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "12.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "s390x"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "12.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "12.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "x64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "12.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "arm64"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "13.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "arm"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "13.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "ia32"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "13.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Copyright 2020 gRPC authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Config file for Kokoro (in protobuf text format)
|
||||||
|
|
||||||
|
build_file: "grpc-node/packages/grpc-native-core/tools/run_tests/artifacts/build_one_artifact_linux.sh"
|
||||||
|
env_vars {
|
||||||
|
key: "RUNTIME"
|
||||||
|
value: "node"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "ARCH"
|
||||||
|
value: "s390x"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "VERSION"
|
||||||
|
value: "13.0.0"
|
||||||
|
}
|
||||||
|
env_vars {
|
||||||
|
key: "LIBC"
|
||||||
|
value: "glibc"
|
||||||
|
}
|
||||||
|
action {
|
||||||
|
define_artifacts {
|
||||||
|
regex: "github/grpc-node/artifacts/**",
|
||||||
|
strip_prefix: "github/grpc-node/artifacts"
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue