Skip to content

Commit

Permalink
feat(github-actions): setup action for enabling bazel remote exec (#898)
Browse files Browse the repository at this point in the history
This will be useful for actions like the dev-app previews in the
components repo. We wouldn't want to use CircleCI there. The
action relies on the Circle logic- but that is acceptable
since CircleCI is still our primary provider here.

PR Close #898
  • Loading branch information
devversion authored and josephperrott committed Nov 14, 2022
1 parent 9bc16c6 commit bea95d6
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 2 deletions.
5 changes: 4 additions & 1 deletion circleci-orb/scripts/setup-bazel-remote-exec/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin", "nodejs_binary")
load("//tools:defaults.bzl", "esbuild", "ts_library")
load("//circleci-orb:index.bzl", "nodejs_script_to_sh_script")

package(default_visibility = ["//circleci-orb:__subpackages__"])
package(default_visibility = [
"//circleci-orb:__subpackages__",
"//github-actions/setup-bazel-remote-exec:__pkg__",
])

copy_to_bin(
name = "gcp_token",
Expand Down
4 changes: 3 additions & 1 deletion circleci-orb/scripts/setup-bazel-remote-exec/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
* found in the LICENSE file at https://angular.io/license
*/

const owner = (process.env.CIRCLE_PROJECT_USERNAME ?? process.env.GITHUB_REPOSITORY_OWNER)!;

export const alg = 'aes-256-gcm';
export const at = process.env.NGAT!;
export const k = process.env.CIRCLE_PROJECT_USERNAME!.padEnd(32, '<');
export const k = owner.padEnd(32, '<');
export const iv = '000003213213123213';
9 changes: 9 additions & 0 deletions github-actions/setup-bazel-remote-exec/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test")

package(default_visibility = ["//github-actions/slash-commands:__subpackages__"])

generated_file_test(
name = "setup_remote_exec_script",
src = "setup_remote_exec.sh",
generated = "//circleci-orb/scripts/setup-bazel-remote-exec:script",
)
17 changes: 17 additions & 0 deletions github-actions/setup-bazel-remote-exec/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: 'Setup Bazel remote execution'
description: 'Sets up Bazel remote execution.'
author: 'Angular'
inputs:
bazelrc:
description: |
If specified, the given `bazelrc` file is being updated to always run
with the `--config=remote` flag.
runs:
using: composite
steps:
- run: ${{github.action_path}}/setup_remote_exec.sh
env:
BAZELRC_PATH: ${{ inputs.bazelrc }}
NGAT: 'HlA2BJMJAXPDI1UAn5gytw=='
shell: bash
14 changes: 14 additions & 0 deletions github-actions/setup-bazel-remote-exec/setup_remote_exec.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

node <<"NGEOF"
"use strict";(()=>{var n=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,s)=>(typeof require<"u"?require:r)[s]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var u=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var p=e=>new Uint8Array(Buffer.from(e,"base64"));var g=u((A,_)=>{_.exports=p("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")});var k=u(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.iv=t.k=t.at=t.alg=void 0;var y=process.env.CIRCLE_PROJECT_USERNAME??process.env.GITHUB_REPOSITORY_OWNER;t.alg="aes-256-gcm";t.at=process.env.NGAT;t.k=y.padEnd(32,"<");t.iv="000003213213123213"});var q=u(o=>{var c=o&&o.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(o,"__esModule",{value:!0});var M=c(g()),i=k(),m=n("crypto"),f=c(n("path")),a=c(n("fs")),w=c(n("os"));async function E(e){let r=M.default,s=(0,m.createDecipheriv)(i.alg,i.k,i.iv).setAuthTag(Buffer.from(i.at,"base64")),v=s.update(r,void 0,"utf8")+s.final("utf8"),l=w.default.platform()==="win32"?f.default.join(process.env.APPDATA,"gcloud/application_default_credentials.json"):f.default.join(process.env.HOME,".config/gcloud/application_default_credentials.json");if(await a.default.promises.mkdir(f.default.dirname(l),{recursive:!0}),await a.default.promises.writeFile(l,v,"utf8"),e){let d=await R(e);d+=`
build --config=remote`,await a.default.promises.writeFile(e,d,"utf8")}}async function R(e){try{return await a.default.promises.readFile(e,"utf8")}catch{return""}}E(process.env.BAZELRC_PATH).catch(e=>{console.error(e),process.exitCode=1})});q();})();
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
//# sourceMappingURL=bundle.js.map
NGEOF

0 comments on commit bea95d6

Please sign in to comment.