Merge branch 'master' into grpc-js_proxy_support

This commit is contained in:
murgatroid99 2020-02-05 11:32:18 -08:00
commit cadb9ac071
84 changed files with 2465 additions and 128 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@grpc/grpc-js",
"version": "0.6.15",
"version": "0.6.16",
"description": "gRPC Library for Node - pure JS implementation",
"homepage": "https://grpc.io/",
"repository": "https://github.com/grpc/grpc-node/tree/master/packages/grpc-js",

View File

@ -163,6 +163,9 @@ export class Http2CallStream extends Duplex implements Call {
* @param status The status of the call.
*/
private endCall(status: StatusObject): void {
/* Once endCall is called, we are definitely not using the http2 stream
* anymore, so we can always safely destroy it here */
this.destroyHttp2Stream();
if (this.finalStatus === null) {
this.trace(
'ended with status: code=' +
@ -246,9 +249,7 @@ export class Http2CallStream extends Duplex implements Call {
private tryPush(messageBytes: Buffer | null): void {
if (this.isReadFilterPending) {
this.trace(
'[' +
this.callNumber +
'] unfilteredReadMessages.push message of length ' +
'unfilteredReadMessages.push message of length ' +
(messageBytes && messageBytes.length)
);
this.unfilteredReadMessages.push(messageBytes);
@ -422,10 +423,15 @@ export class Http2CallStream extends Duplex implements Call {
if (!this.pendingWriteCallback) {
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);
}
if (this.pendingFinalCallback) {
this.trace('calling end() on HTTP/2 stream');
this.trace('calling end() on HTTP/2 stream (deferred)');
stream.end(this.pendingFinalCallback);
}
}
@ -514,9 +520,13 @@ export class Http2CallStream extends Duplex implements Call {
this.trace('write() called with message of length ' + chunk.message.length);
this.filterStack.sendMessage(Promise.resolve(chunk)).then(message => {
if (this.http2Stream === null) {
this.trace(
'deferring writing data chunk of length ' + message.message.length
);
this.pendingWrite = message.message;
this.pendingWriteCallback = cb;
} else {
this.trace('sending data chunk of length ' + message.message.length);
this.http2Stream.write(message.message, cb);
}
}, this.handleFilterError.bind(this));
@ -525,6 +535,7 @@ export class Http2CallStream extends Duplex implements Call {
_final(cb: Function) {
this.trace('end() called');
if (this.http2Stream === null) {
this.trace('deferring calling end() on HTTP/2 stream');
this.pendingFinalCallback = cb;
} else {
this.trace('calling end() on HTTP/2 stream');

View File

@ -18,7 +18,7 @@
import { ConnectionOptions, createSecureContext, PeerCertificate } from 'tls';
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
function verifyIsBufferOrNull(obj: any, friendlyName: string): void {
@ -190,7 +190,7 @@ class SecureChannelCredentialsImpl extends ChannelCredentials {
ca: rootCerts || undefined,
key: privateKey || undefined,
cert: certChain || undefined,
ciphers: CIPHER_SUITES
ciphers: CIPHER_SUITES,
});
this.connectionOptions = { secureContext };
if (verifyOptions && verifyOptions.checkServerIdentity) {

View File

@ -38,6 +38,7 @@ import { getDefaultAuthority } from './resolver';
import { LoadBalancingConfig } from './load-balancing-config';
import { ServiceConfig, validateServiceConfig } from './service-config';
import { trace } from './logging';
import { SubchannelAddress } from './subchannel';
export enum ConnectivityState {
CONNECTING,
@ -142,10 +143,12 @@ export class ChannelImplementation implements Channel {
) {
/* The global boolean parameter to getSubchannelPool has the inverse meaning to what
* 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 = {
createSubchannel: (
subchannelAddress: string,
subchannelAddress: SubchannelAddress,
subchannelArgs: ChannelOptions
) => {
return this.subchannelPool.getOrCreateSubchannel(
@ -234,16 +237,25 @@ export class ChannelImplementation implements Channel {
callStream
);
} catch (error) {
callStream.cancelWithStatus(
Status.UNAVAILABLE,
'Failed to start call on picked subchannel'
);
/* An error here indicates that something went wrong with
* the picked subchannel's http2 stream right before we
* 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 {
callStream.cancelWithStatus(
Status.UNAVAILABLE,
'Connection dropped while starting call'
);
/* The logic for doing this here is the same as in the catch
* block above */
this.tryPick(callStream, callMetadata);
}
},
(error: Error & { code: number }) => {

View File

@ -22,6 +22,7 @@ import { parseTarget } from "./resolver-dns";
import { Socket } from "net";
import * as http from 'http';
import * as logging from './logging';
import { SubchannelAddress, TcpSubchannelAddress, isTcpSubchannelAddress } from "./subchannel";
const TRACER_NAME = 'proxy';
@ -123,15 +124,16 @@ export function shouldUseProxy(target: string): boolean {
return true;
}
export function getProxiedConnection(target: string, subchannelAddress: string): Promise<Socket> {
if (!(PROXY_INFO.address && shouldUseProxy(target))) {
export function getProxiedConnection(target: string, subchannelAddress: SubchannelAddress): Promise<Socket> {
if (!(PROXY_INFO.address && shouldUseProxy(target) && isTcpSubchannelAddress(subchannelAddress))) {
return Promise.reject<Socket>();
}
const subchannelAddressPathString = `${subchannelAddress.host}:${subchannelAddress.port}`;
trace('Using proxy ' + PROXY_INFO.address + ' to connect to ' + target + ' at ' + subchannelAddress);
const options: http.RequestOptions = {
method: 'CONNECT',
host: PROXY_INFO.address,
path: subchannelAddress
path: subchannelAddressPathString
};
if (PROXY_INFO.creds) {
options.headers = {

View File

@ -30,7 +30,11 @@ import {
UnavailablePicker,
} from './picker';
import { LoadBalancingConfig } from './load-balancing-config';
import { Subchannel, ConnectivityStateListener } from './subchannel';
import {
Subchannel,
ConnectivityStateListener,
SubchannelAddress,
} from './subchannel';
import * as logging from './logging';
import { LogVerbosity } from './constants';
@ -76,7 +80,7 @@ export class PickFirstLoadBalancer implements LoadBalancer {
/**
* 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
* connect to.
@ -369,7 +373,7 @@ export class PickFirstLoadBalancer implements LoadBalancer {
}
updateAddressList(
addressList: string[],
addressList: SubchannelAddress[],
lbConfig: LoadBalancingConfig | null
): void {
// lbConfig has no useful information for pick first load balancing

View File

@ -30,7 +30,11 @@ import {
UnavailablePicker,
} from './picker';
import { LoadBalancingConfig } from './load-balancing-config';
import { Subchannel, ConnectivityStateListener } from './subchannel';
import {
Subchannel,
ConnectivityStateListener,
SubchannelAddress,
} from './subchannel';
const TYPE_NAME = 'round_robin';
@ -168,7 +172,7 @@ export class RoundRobinLoadBalancer implements LoadBalancer {
}
updateAddressList(
addressList: string[],
addressList: SubchannelAddress[],
lbConfig: LoadBalancingConfig | null
): void {
this.resetSubchannelList();

View File

@ -16,7 +16,7 @@
*/
import { ChannelOptions } from './channel-options';
import { Subchannel } from './subchannel';
import { Subchannel, SubchannelAddress } from './subchannel';
import { ConnectivityState } from './channel';
import { Picker } from './picker';
import { LoadBalancingConfig } from './load-balancing-config';
@ -34,7 +34,7 @@ export interface ChannelControlHelper {
* @param subchannelArgs Extra channel arguments specified by the load balancer
*/
createSubchannel(
subchannelAddress: string,
subchannelAddress: SubchannelAddress,
subchannelArgs: ChannelOptions
): Subchannel;
/**
@ -66,7 +66,7 @@ export interface LoadBalancer {
* if one was provided
*/
updateAddressList(
addressList: string[],
addressList: SubchannelAddress[],
lbConfig: LoadBalancingConfig | null
): void;
/**

View File

@ -174,7 +174,7 @@ export class Metadata {
* @return The newly cloned object.
*/
clone(): Metadata {
const newMetadata = new Metadata();
const newMetadata = new Metadata(this.options);
const newInternalRepr = newMetadata.internalRepr;
this.internalRepr.forEach((value, key) => {

View File

@ -30,6 +30,7 @@ import { StatusObject } from './call-stream';
import { Metadata } from './metadata';
import * as logging from './logging';
import { LogVerbosity } from './constants';
import { SubchannelAddress, TcpSubchannelAddress } from './subchannel';
const TRACER_NAME = 'dns_resolver';
@ -112,7 +113,7 @@ const dnsLookupPromise = util.promisify(dns.lookup);
* @param target
* @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
* want the first one that matches the target string, if any do. */
const ipv4Match = IPV4_REGEX.exec(target);
@ -123,14 +124,14 @@ function parseIP(target: string): string[] | null {
}
// ipv6 addresses should be bracketed
const addr = ipv4Match ? match[1] : `[${match[1]}]`;
const addr = match[1];
let port: string;
if (match[2]) {
port = match[2];
} else {
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.
*/
class DnsResolver implements Resolver {
private readonly ipResult: string[] | null;
private readonly ipResult: SubchannelAddress[] | null;
private readonly dnsHostname: string | null;
private readonly port: string | null;
/* The promise results here contain, in order, the A record, the AAAA record,
@ -222,23 +223,28 @@ class DnsResolver implements Resolver {
this.pendingResultPromise.then(
([addressList, txtRecord]) => {
this.pendingResultPromise = null;
const ip4Addresses: string[] = addressList
.filter(addr => addr.family === 4)
.map(addr => `${addr.address}:${this.port}`);
let ip6Addresses: string[];
const ip4Addresses: dns.LookupAddress[] = addressList.filter(
addr => addr.family === 4
);
let ip6Addresses: dns.LookupAddress[];
if (semver.satisfies(process.version, IPV6_SUPPORT_RANGE)) {
ip6Addresses = addressList
.filter(addr => addr.family === 6)
.map(addr => `[${addr.address}]:${this.port}`);
ip6Addresses = addressList.filter(addr => addr.family === 6);
} else {
ip6Addresses = [];
}
const allAddresses: string[] = mergeArrays(
const allAddresses: TcpSubchannelAddress[] = mergeArrays(
ip4Addresses,
ip6Addresses
);
).map(addr => ({ host: addr.address, port: +this.port! }));
const allAddressesString: string =
'[' +
allAddresses.map(addr => addr.host + ':' + addr.port).join(',') +
']';
trace(
'Resolved addresses for target ' + this.target + ': ' + allAddresses
'Resolved addresses for target ' +
this.target +
': ' +
allAddressesString
);
if (allAddresses.length === 0) {
this.listener.onError(this.defaultResolutionError);

View File

@ -20,6 +20,7 @@ import {
registerResolver,
registerDefaultResolver,
} from './resolver';
import { SubchannelAddress } from './subchannel';
function getUdsName(target: string): string {
/* 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 {
private addresses: string[] = [];
private addresses: SubchannelAddress[] = [];
constructor(target: string, private listener: ResolverListener) {
this.addresses = [getUdsName(target)];
this.addresses = [{ path: getUdsName(target) }];
}
updateResolution(): void {
process.nextTick(

View File

@ -20,6 +20,7 @@ import { ServiceConfig } from './service-config';
import * as resolver_dns from './resolver-dns';
import * as resolver_uds from './resolver-uds';
import { StatusObject } from './call-stream';
import { SubchannelAddress } from './subchannel';
/**
* A listener object passed to the resolver's constructor that provides name
@ -36,7 +37,7 @@ export interface ResolverListener {
* service configuration was invalid
*/
onSuccessfulResolution(
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | null,
serviceConfigError: StatusObject | null
): void;

View File

@ -34,6 +34,7 @@ import { StatusObject } from './call-stream';
import { Metadata } from './metadata';
import * as logging from './logging';
import { LogVerbosity } from './constants';
import { SubchannelAddress } from './subchannel';
const TRACER_NAME = 'resolving_load_balancer';
@ -132,7 +133,7 @@ export class ResolvingLoadBalancer implements LoadBalancer {
this.updateState(ConnectivityState.IDLE, new QueuePicker(this));
this.innerResolver = createResolver(target, {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | null,
serviceConfigError: ServiceError | null
) => {
@ -243,7 +244,7 @@ export class ResolvingLoadBalancer implements LoadBalancer {
this.innerChannelControlHelper = {
createSubchannel: (
subchannelAddress: string,
subchannelAddress: SubchannelAddress,
subchannelArgs: ChannelOptions
) => {
return this.channelControlHelper.createSubchannel(
@ -289,7 +290,7 @@ export class ResolvingLoadBalancer implements LoadBalancer {
this.replacementChannelControlHelper = {
createSubchannel: (
subchannelAddress: string,
subchannelAddress: SubchannelAddress,
subchannelArgs: ChannelOptions
) => {
return this.channelControlHelper.createSubchannel(
@ -409,7 +410,7 @@ export class ResolvingLoadBalancer implements LoadBalancer {
}
updateAddressList(
addressList: string[],
addressList: SubchannelAddress[],
lbConfig: LoadBalancingConfig | null
) {
throw new Error('updateAddressList not supported on ResolvingLoadBalancer');

View File

@ -16,7 +16,7 @@
*/
import { SecureServerOptions } from 'http2';
import {CIPHER_SUITES, getDefaultRootsData} from './tls-helpers';
import { CIPHER_SUITES, getDefaultRootsData } from './tls-helpers';
export interface KeyCertPair {
private_key: Buffer;
@ -75,7 +75,7 @@ export abstract class ServerCredentials {
cert,
key,
requestCert: checkClientCertificate,
ciphers: CIPHER_SUITES
ciphers: CIPHER_SUITES,
});
}
}

View File

@ -203,11 +203,16 @@ export class Server {
const options: ListenOptions = { host: url.hostname, port: +url.port };
const serverOptions: http2.ServerOptions = {};
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()) {
const secureServerOptions = Object.assign(serverOptions, creds._getSettings()!);
const secureServerOptions = Object.assign(
serverOptions,
creds._getSettings()!
);
this.http2Server = http2.createSecureServer(secureServerOptions);
} else {
this.http2Server = http2.createServer(serverOptions);

View File

@ -16,7 +16,11 @@
*/
import { ChannelOptions, channelOptionsEqual } from './channel-options';
import { Subchannel } from './subchannel';
import {
Subchannel,
SubchannelAddress,
subchannelAddressEqual,
} from './subchannel';
import { ChannelCredentials } from './channel-credentials';
// 10 seconds in milliseconds. This value is arbitrary.
@ -28,13 +32,12 @@ const REF_CHECK_INTERVAL = 10_000;
export class SubchannelPool {
private pool: {
[channelTarget: string]: {
[subchannelTarget: string]: Array<{
channelArguments: ChannelOptions;
channelCredentials: ChannelCredentials;
subchannel: Subchannel;
}>;
};
[channelTarget: string]: Array<{
subchannelAddress: SubchannelAddress;
channelArguments: ChannelOptions;
channelCredentials: ChannelCredentials;
subchannel: Subchannel;
}>;
} = Object.create(null);
/**
@ -62,23 +65,20 @@ export class SubchannelPool {
* do not need to be filtered */
// tslint:disable-next-line:forin
for (const channelTarget in this.pool) {
// tslint:disable-next-line:forin
for (const subchannelTarget in this.pool[channelTarget]) {
const subchannelObjArray = this.pool[channelTarget][subchannelTarget];
const subchannelObjArray = this.pool[channelTarget];
const refedSubchannels = subchannelObjArray.filter(
value => !value.subchannel.unrefIfOneRef()
);
const refedSubchannels = subchannelObjArray.filter(
value => !value.subchannel.unrefIfOneRef()
);
if (refedSubchannels.length > 0) {
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;
if (refedSubchannels.length > 0) {
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] = refedSubchannels;
}
/* Currently we do not delete keys with empty values. If that results
* in significant memory usage we should change it. */
@ -114,25 +114,27 @@ export class SubchannelPool {
*/
getOrCreateSubchannel(
channelTarget: string,
subchannelTarget: string,
subchannelTarget: SubchannelAddress,
channelArguments: ChannelOptions,
channelCredentials: ChannelCredentials
): Subchannel {
this.ensureCleanupTask();
if (channelTarget in this.pool) {
if (subchannelTarget in this.pool[channelTarget]) {
const subchannelObjArray = this.pool[channelTarget][subchannelTarget];
for (const subchannelObj of subchannelObjArray) {
if (
channelOptionsEqual(
channelArguments,
subchannelObj.channelArguments
) &&
channelCredentials._equals(subchannelObj.channelCredentials)
) {
return subchannelObj.subchannel;
}
const subchannelObjArray = this.pool[channelTarget];
for (const subchannelObj of subchannelObjArray) {
if (
subchannelAddressEqual(
subchannelTarget,
subchannelObj.subchannelAddress
) &&
channelOptionsEqual(
channelArguments,
subchannelObj.channelArguments
) &&
channelCredentials._equals(subchannelObj.channelCredentials)
) {
return subchannelObj.subchannel;
}
}
}
@ -144,12 +146,10 @@ export class SubchannelPool {
channelCredentials
);
if (!(channelTarget in this.pool)) {
this.pool[channelTarget] = Object.create(null);
this.pool[channelTarget] = [];
}
if (!(subchannelTarget in this.pool[channelTarget])) {
this.pool[channelTarget][subchannelTarget] = [];
}
this.pool[channelTarget][subchannelTarget].push({
this.pool[channelTarget].push({
subchannelAddress: subchannelTarget,
channelArguments,
channelCredentials,
subchannel,

View File

@ -20,14 +20,14 @@ import { ChannelCredentials } from './channel-credentials';
import { Metadata } from './metadata';
import { Http2CallStream } from './call-stream';
import { ChannelOptions } from './channel-options';
import { PeerCertificate, checkServerIdentity } from 'tls';
import { PeerCertificate, checkServerIdentity, TLSSocket } from 'tls';
import { ConnectivityState } from './channel';
import { BackoffTimeout, BackoffOptions } from './backoff-timeout';
import { getDefaultAuthority } from './resolver';
import * as logging from './logging';
import { LogVerbosity } from './constants';
import { Socket } from 'net';
import { shouldUseProxy, getProxiedConnection } from './http_proxy';
import * as net from 'net';
const { version: clientVersion } = require('../../package.json');
@ -75,6 +75,44 @@ function uniformRandom(min: number, max: number) {
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 {
/**
* The subchannel's current connectivity state. Invariant: `session` === `null`
@ -137,6 +175,11 @@ export class Subchannel {
*/
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.
* @param channelTarget The target string for the channel as a whole
@ -149,7 +192,7 @@ export class Subchannel {
*/
constructor(
private channelTarget: string,
private subchannelAddress: string,
private subchannelAddress: SubchannelAddress,
private options: ChannelOptions,
private credentials: ChannelCredentials
) {
@ -174,7 +217,7 @@ export class Subchannel {
clearTimeout(this.keepaliveTimeoutId);
const backoffOptions: BackoffOptions = {
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(() => {
if (this.continueConnecting) {
@ -189,6 +232,11 @@ export class Subchannel {
);
}
}, backoffOptions);
if (isTcpSubchannelAddress(subchannelAddress)) {
this.subchannelAddressString = `${subchannelAddress.host}:${subchannelAddress.port}`;
} else {
this.subchannelAddressString = `${subchannelAddress.path}`;
}
}
/**
@ -226,8 +274,8 @@ export class Subchannel {
clearTimeout(this.keepaliveTimeoutId);
}
private createSession(socket?: Socket) {
const connectionOptions: http2.SecureClientSessionOptions =
private createSession(socket?: net.Socket) {
let connectionOptions: http2.SecureClientSessionOptions =
this.credentials._getConnectionOptions() || {};
if (socket) {
connectionOptions.socket = socket;
@ -252,9 +300,40 @@ export class Subchannel {
} else {
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(
addressScheme + this.subchannelAddress,
addressScheme + getDefaultAuthority(this.channelTarget),
connectionOptions
);
this.session = session;
@ -345,7 +424,7 @@ export class Subchannel {
return false;
}
trace(
this.subchannelAddress +
this.subchannelAddressString +
' ' +
ConnectivityState[this.connectivityState] +
' -> ' +
@ -417,7 +496,7 @@ export class Subchannel {
callRef() {
trace(
this.subchannelAddress +
this.subchannelAddressString +
' callRefcount ' +
this.callRefcount +
' -> ' +
@ -434,7 +513,7 @@ export class Subchannel {
callUnref() {
trace(
this.subchannelAddress +
this.subchannelAddressString +
' callRefcount ' +
this.callRefcount +
' -> ' +
@ -452,7 +531,7 @@ export class Subchannel {
ref() {
trace(
this.subchannelAddress +
this.subchannelAddressString +
' callRefcount ' +
this.refcount +
' -> ' +
@ -463,7 +542,7 @@ export class Subchannel {
unref() {
trace(
this.subchannelAddress +
this.subchannelAddressString +
' callRefcount ' +
this.refcount +
' -> ' +
@ -574,6 +653,6 @@ export class Subchannel {
}
getAddress(): string {
return this.subchannelAddress;
return this.subchannelAddressString;
}
}

View File

@ -17,7 +17,8 @@
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;
@ -31,4 +32,4 @@ export function getDefaultRootsData(): Buffer | null {
return defaultRootsData;
}
return null;
}
}

View File

@ -21,6 +21,7 @@ import * as assert from 'assert';
import * as resolverManager from '../src/resolver';
import { ServiceConfig } from '../src/service-config';
import { StatusObject } from '../src/call-stream';
import { SubchannelAddress, isTcpSubchannelAddress } from '../src/subchannel';
describe('Name Resolver', () => {
describe('DNS Names', function() {
@ -33,11 +34,18 @@ describe('Name Resolver', () => {
const target = 'localhost:50051';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | 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
done();
},
@ -52,11 +60,18 @@ describe('Name Resolver', () => {
const target = 'localhost';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | 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
done();
},
@ -71,11 +86,18 @@ describe('Name Resolver', () => {
const target = '1.2.3.4';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | 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
done();
},
@ -90,11 +112,18 @@ describe('Name Resolver', () => {
const target = '::1';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | 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
done();
},
@ -109,11 +138,18 @@ describe('Name Resolver', () => {
const target = '[::1]:50051';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | 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
done();
},
@ -128,7 +164,7 @@ describe('Name Resolver', () => {
const target = 'example.com';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | null,
serviceConfigError: StatusObject | null
) => {
@ -146,7 +182,7 @@ describe('Name Resolver', () => {
const target = 'loopback4.unittest.grpc.io';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | null,
serviceConfigError: StatusObject | null
) => {
@ -166,7 +202,7 @@ describe('Name Resolver', () => {
const target = 'network-tools.com';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | null,
serviceConfigError: StatusObject | null
) => {
@ -196,7 +232,7 @@ describe('Name Resolver', () => {
const target2 = 'grpc-test4.sandbox.googleapis.com';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | null,
serviceConfigError: StatusObject | null
) => {
@ -218,11 +254,15 @@ describe('Name Resolver', () => {
const target = 'unix:socket';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | null,
serviceConfigError: StatusObject | null
) => {
assert(addressList.includes('socket'));
assert(
addressList.some(
addr => !isTcpSubchannelAddress(addr) && addr.path === 'socket'
)
);
done();
},
onError: (error: StatusObject) => {
@ -236,11 +276,16 @@ describe('Name Resolver', () => {
const target = 'unix:///tmp/socket';
const listener: resolverManager.ResolverListener = {
onSuccessfulResolution: (
addressList: string[],
addressList: SubchannelAddress[],
serviceConfig: ServiceConfig | null,
serviceConfigError: StatusObject | null
) => {
assert(addressList.includes('/tmp/socket'));
assert(
addressList.some(
addr =>
!isTcpSubchannelAddress(addr) && addr.path === '/tmp/socket'
)
);
done();
},
onError: (error: StatusObject) => {

View File

@ -70,6 +70,7 @@ fi
if [ "$DO_CROSS" = "true" ] ; then
$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 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

View File

@ -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

View File

@ -0,0 +1,56 @@
#!/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
pip install mako
./tools/buildgen/generate_projects.sh
export JOBS=8
export ARTIFACTS_OUT=$base_dir/artifacts
mkdir -p ${ARTIFACTS_OUT}
rm -rf build || true
npm update
case $RUNTIME in
electron)
HOME=~/.electron-gyp ./node_modules/.bin/node-pre-gyp configure rebuild package --runtime=electron --target=$VERSION --target_arch=$ARCH --disturl=https://atom.io/download/electron
cp -r build/stage/* "${ARTIFACTS_OUT}"/
;;
node)
./node_modules/.bin/node-pre-gyp configure rebuild package --target=$VERSION --target_arch=$ARCH
cp -r build/stage/* "${ARTIFACTS_OUT}"/
;;
esac

View File

@ -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.

View File

@ -59,6 +59,29 @@ const serviceImpl = {
};
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() {
let server1;
let server2;

View File

@ -2,7 +2,7 @@ FROM debian:stretch
RUN dpkg --add-architecture i386
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 mkdir /usr/local/nvm

View File

@ -0,0 +1,17 @@
# 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/workflow.sh"

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "1.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "1.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "1.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "1.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "1.2.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "1.2.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "1.3.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "1.3.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "1.4.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "1.4.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "1.5.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "1.5.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "1.6.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "1.6.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "1.7.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "1.7.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "1.8.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "1.8.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "2.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "2.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "3.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "3.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "3.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "3.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "4.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "4.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "4.2.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "4.2.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "5.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "5.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "6.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "6.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "6.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "6.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "7.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "7.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "7.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "electron"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "7.1.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "10.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "10.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "11.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "11.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "12.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "12.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "13.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "13.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "4.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "4.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "5.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "5.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "6.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "6.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "7.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "7.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "8.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "8.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "ia32"
}
env_vars {
key: "VERSION"
value: "9.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}

View File

@ -0,0 +1,35 @@
# 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: "node"
}
env_vars {
key: "ARCH"
value: "x64"
}
env_vars {
key: "VERSION"
value: "9.0.0"
}
action {
define_artifacts {
regex: "github/grpc-node/artifacts/**",
strip_prefix: "github/grpc-node/artifacts"
}
}