1- import * as shell from 'shelljs' ;
21import { exec } from '../../util/shell' ;
32import { Werft } from "../../util/werft" ;
43import { GCLOUD_SERVICE_ACCOUNT_PATH } from "./const" ;
54
5+ const phaseName = "prepare" ;
6+
67export async function prepare ( werft : Werft ) {
7- werft . phase ( "prepare" ) ;
8+ werft . phase ( phaseName ) ;
9+ try {
10+ compareWerftAndGitpodImage ( )
11+ activateCoreDevServiceAccount ( )
12+ configureDocker ( )
13+ configureCoreDevAccess ( )
14+ } catch ( err ) {
15+ werft . fail ( phaseName , err ) ;
16+ }
17+ werft . done ( phaseName ) ;
18+ }
819
9- const werftImg = shell . exec ( "cat .werft/build.yaml | grep dev-environment" ) . trim ( ) . split ( ": " ) [ 1 ] ;
10- const devImg = shell . exec ( "yq r .gitpod.yml image" ) . trim ( ) ;
20+ // TODO: The reasoning behind this step should be clarified
21+ function compareWerftAndGitpodImage ( ) {
22+ const werftImg = exec ( "cat .werft/build.yaml | grep dev-environment" , { silent : true } ) . trim ( ) . split ( ": " ) [ 1 ] ;
23+ const devImg = exec ( "yq r .gitpod.yml image" , { silent : true } ) . trim ( ) ;
1124 if ( werftImg !== devImg ) {
12- werft . fail ( 'prep' , `Werft job image (${ werftImg } ) and Gitpod dev image (${ devImg } ) do not match` ) ;
25+ throw new Error ( `Werft job image (${ werftImg } ) and Gitpod dev image (${ devImg } ) do not match` ) ;
1326 }
27+ }
1428
15- try {
16- exec ( `gcloud auth activate-service-account --key-file "${ GCLOUD_SERVICE_ACCOUNT_PATH } "` ) ;
17- exec ( "gcloud auth configure-docker --quiet" ) ;
18- exec ( "gcloud auth configure-docker europe-docker.pkg.dev --quiet" ) ;
19- exec ( 'gcloud container clusters get-credentials core-dev --zone europe-west1-b --project gitpod-core-dev' ) ;
20- werft . done ( 'prep' ) ;
21- } catch ( err ) {
22- werft . fail ( 'prep' , err ) ;
29+ function activateCoreDevServiceAccount ( ) {
30+ const rc = exec ( `gcloud auth activate-service-account --key-file "${ GCLOUD_SERVICE_ACCOUNT_PATH } "` , { slice : phaseName } ) . code ;
31+
32+ if ( rc != 0 ) {
33+ throw new Error ( "Failed to activate core-dev service account." )
34+ }
35+ }
36+
37+ function configureDocker ( ) {
38+ const rcDocker = exec ( "gcloud auth configure-docker --quiet" , { slice : phaseName } ) . code ;
39+ const rcDockerRegistry = exec ( "gcloud auth configure-docker europe-docker.pkg.dev --quiet" , { slice : phaseName } ) . code ;
40+
41+ if ( rcDocker != 0 || rcDockerRegistry != 0 ) {
42+ throw new Error ( "Failed to configure docker with gcloud." )
2343 }
2444}
45+
46+ function configureCoreDevAccess ( ) {
47+ const rc = exec ( 'gcloud container clusters get-credentials core-dev --zone europe-west1-b --project gitpod-core-dev' , { slice : phaseName } ) . code ;
48+
49+ if ( rc != 0 ) {
50+ throw new Error ( "Failed to get core-dev kubeconfig credentials." )
51+ }
52+ }
0 commit comments