Hi,
Not sure if I have misunderstood how things work here, but I want to pass variables from my local .env-files to my artifact whenever I do automatic deploy with bitbucket pipelines.
When running or deploying manually, I have an `.env`-file present locally, which I obviously don't want to commit.
The build pipeline succeeds and it deploys a new version to GCP, but this version does not work, since it is unable to retrieve database configuration secret from my environment file. So it is practically useless.
I have set up bitbucket-pipelines.yml with the atlassian gcp-deploy-pipe. Relevant parts of file looks like this:
branches:
develop:
- step:
name: Deploy
deployment: test
script:
- echo "Deploying to GCP"
- pipe: atlassian/google-app-engine-deploy:1.0.0
variables:
KEY_FILE: $GCP_SECRET
PROJECT: 'test-123'
DEPLOYABLES: 'test.yaml'
PROMOTE: 'false'
STOP_PREVIOUS_VERSION: 'false'
MONGODB_CONNECTION_URI: $MONGODB_CONNECTION_URI
<some more variables>
I have added both these variables, $GCP_SECRET and $MONGODB_CONNECTION_URI, to my deployment repository config inside bitbucket.
The GCP_SECRET works correctly, as I am allowed to push a new version to GCP. But clearly I have misunderstood how I should pass my actual environment variables when deploying like this.
---
I have also tried to add the variables inside the `test.yml`, listed in det DEPLOYABLES, and also added DB-url to GCP secret manager, but still no luck obtaining db connection.
runtime: nodejs
env: flex
instance_class: B1
manual_scaling:
instances: 1
env_variables:
NODE_ENV: "test"
MONGODB_CONNECTION_URI: $MONGODB_CONNECTION_URI
Any ideas on how to fix this will be greatly appreciated! Thank you!
EDIT: I try to access the variables in code like the following:
process.env.MONGODB_CONNECTION_URI
Bonus question on the side:
Is it possible to check health status of artifact pushed to GCP, and use result from healthcheck to determine if whole Bitbucket pipeline failed. This would be useful in this exact scenario, so I don't push gibberish to my test environment.
@Lars Nedberg Hi. Thanks for your question. Please, refer to this repo example: envsubst example repo
Its a good case to use envsubst : you need to have template to pass variables here and in your bitbucket-pipelines.yml you need to add code below before pipe executes:
script:
- envsubst < test.template.yaml > test.yaml
You can look at additional information here: additional info
Regards, Igor
Hi Igor,
Thank you so much for your reply. I didn't quite get the concept of the `test.template.yaml` file.
However, I found this guide, which ultimately made everything work for me.
Basically I define a shell script in my repository, then runs the script inside the bitbucket pipeline, and populating my secret values with my bitbucket repository variables.
Thank you for your time and help! :)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.