mirror of
https://github.com/Blockstream/satellite-api.git
synced 2025-02-22 13:42:33 +01:00
118 lines
3.9 KiB
YAML
118 lines
3.9 KiB
YAML
variables:
|
|
GIT_SUBMODULE_STRATEGY: none
|
|
CI_DISPOSABLE_ENVIRONMENT: "true"
|
|
|
|
image: blockstream/gcloud-docker@sha256:31c1a01d143558f0ba5677d121891a958fa600195679fe325980ec72e5264f2a
|
|
stages:
|
|
- build
|
|
- plan
|
|
- deploy
|
|
|
|
before_script:
|
|
- TMPF=$(mktemp) || exit 1
|
|
- echo $GCLOUD_KEY > $TMPF
|
|
- export GOOGLE_APPLICATION_CREDENTIALS=$TMPF
|
|
- gcloud auth activate-service-account --key-file=$TMPF
|
|
- gcloud auth list
|
|
- gcloud --version
|
|
|
|
build:
|
|
stage: build
|
|
only:
|
|
- master@satellite/ionosphere
|
|
script:
|
|
- docker build -f Dockerfile -t us.gcr.io/blockstream-store/ionosphere:latest -t us.gcr.io/blockstream-store/ionosphere:$CI_COMMIT_SHA .
|
|
- docker push us.gcr.io/blockstream-store/ionosphere:$CI_COMMIT_SHA
|
|
- docker push us.gcr.io/blockstream-store/ionosphere:latest
|
|
- echo "Building Ionosphere SSE image"
|
|
- docker build -f Dockerfile.sse -t us.gcr.io/blockstream-store/ionosphere-sse:latest -t us.gcr.io/blockstream-store/ionosphere-sse:$CI_COMMIT_SHA sse/
|
|
- docker push us.gcr.io/blockstream-store/ionosphere-sse:$CI_COMMIT_SHA
|
|
- docker push us.gcr.io/blockstream-store/ionosphere-sse:latest
|
|
|
|
plan:
|
|
stage: plan
|
|
only:
|
|
- branches@satellite/ionosphere
|
|
except:
|
|
- master@satellite/ionosphere
|
|
- production@satellite/ionosphere
|
|
- cleanup_staging@satellite/ionosphere
|
|
script:
|
|
- (cd terraform
|
|
&& terraform init -input=false
|
|
&& terraform workspace select staging
|
|
&& terraform plan
|
|
-var "ionosphere_docker=us.gcr.io/blockstream-store/ionosphere:$CI_COMMIT_SHA"
|
|
-var "ionosphere_sse_docker=us.gcr.io/blockstream-store/ionosphere-sse:$CI_COMMIT_SHA"
|
|
-var "region=$REGION"
|
|
-var "zone=$ZONE"
|
|
-var "instance_type=$INSTANCE_TYPE"
|
|
-var "host=$HOST_STAGING"
|
|
-var "ssl_cert=$SSL_CERT_STAGING"
|
|
-var "timeout=$TIMEOUT"
|
|
-var "prom_service_acct=$PROM_SA"
|
|
-var "opsgenie_key=$OPSGENIE_KEY"
|
|
-var "rpcuser=$RPCUSER"
|
|
-var "rpcpass=$RPCPASS"
|
|
-input=false)
|
|
|
|
deploy_staging:
|
|
stage: deploy
|
|
only:
|
|
- master@satellite/ionosphere
|
|
script:
|
|
- (cd terraform
|
|
&& terraform init -input=false
|
|
&& terraform workspace select staging
|
|
&& terraform apply
|
|
-var "ionosphere_docker=us.gcr.io/blockstream-store/ionosphere:$CI_COMMIT_SHA"
|
|
-var "ionosphere_sse_docker=us.gcr.io/blockstream-store/ionosphere-sse:$CI_COMMIT_SHA"
|
|
-var "region=$REGION"
|
|
-var "zone=$ZONE"
|
|
-var "instance_type=$INSTANCE_TYPE"
|
|
-var "host=$HOST_STAGING"
|
|
-var "ssl_cert=$SSL_CERT_STAGING"
|
|
-var "timeout=$TIMEOUT"
|
|
-var "prom_service_acct=$PROM_SA"
|
|
-var "opsgenie_key=$OPSGENIE_KEY"
|
|
-var "rpcuser=$RPCUSER"
|
|
-var "rpcpass=$RPCPASS"
|
|
-input=false -auto-approve)
|
|
|
|
deploy_production:
|
|
stage: deploy
|
|
only:
|
|
- production@satellite/ionosphere
|
|
script:
|
|
- (cd terraform
|
|
&& terraform init -input=false
|
|
&& terraform workspace select prod
|
|
&& terraform apply
|
|
-var "ionosphere_docker=us.gcr.io/blockstream-store/ionosphere:$CI_COMMIT_SHA"
|
|
-var "ionosphere_sse_docker=us.gcr.io/blockstream-store/ionosphere-sse:$CI_COMMIT_SHA"
|
|
-var "region=$REGION"
|
|
-var "zone=$ZONE"
|
|
-var "instance_type=$INSTANCE_TYPE"
|
|
-var "host=$HOST"
|
|
-var "ssl_cert=$SSL_CERT"
|
|
-var "timeout=$TIMEOUT"
|
|
-var "prom_service_acct=$PROM_SA"
|
|
-var "opsgenie_key=$OPSGENIE_KEY"
|
|
-var "rpcuser=$RPCUSER"
|
|
-var "rpcpass=$RPCPASS"
|
|
-input=false -auto-approve)
|
|
|
|
cleanup_staging:
|
|
stage: deploy
|
|
image:
|
|
name: hashicorp/terraform:light
|
|
entrypoint: [""]
|
|
only:
|
|
- cleanup_staging@satellite/ionosphere
|
|
script:
|
|
- (cd terraform && terraform init -input=false &&
|
|
terraform workspace select staging &&
|
|
terraform destroy
|
|
-target module.blc.google_compute_instance_group_manager.blc
|
|
-auto-approve)
|
|
|