This article will cover all things related to managing code in Github as part of the Data/Risk/Fraud team’s deployment and CI/CD pipelines to dev, stage and production environments.
The above diagram describes how the CI/CD pipeline will flow from development to Staging/Production:
Triggering a
pull request
, and merging to the main branch will trigger aGithub action
to upload the .zip artifact to Google Cloud Storage (GCS)In future, we will enforce checks on top of this pull request - e.g. syntax check, code linting, etc.
The GCS is in the SaFi Repos project, which contains all the relevant builds and artifact for development
This will also cause the Dev Project to automatically pull the .zip artifact and deploy it to Cloud Functions
In order to push from to stage project, we will use
git checkout
with thegit tag
stage. The checkout enforces agit SHA
of the commit, ensuring that it will only be deployed if the code name and the commit ID are correctSimilar process for production
Implementation
How to set up your new Cloud Function:
Create a gfunction-XXXXX.yml file under
.github/workflows
in Data RepoFile name should follow this naming convention:
gfunction-<environment>-<cloud function name>.yml
E.g.
gfunction-brave-decision-fraudlist-check.yml
Specify the following important parameters inside the .yml file
name
paths
under on”name
andpath
under jobs:name
refers to the name of the folder in the github repo containing the Cloud Function codes - namelymain.py
andrequirements.txt
path
points to the parent folder of the abovename
folder
name
and under parameters under Deploy:name
refers to the cloud function nameOther cloud functions parameters can be specified with the appropriate values as well
Secrets parameters and values should never be specified in Cloud Functions. Instead they should be defined as part of GitHub Secrets as such. This is defined in the same .yml
as above
Attachments:
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~drawio~61cbdc0ff63ac80070187682~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio.png (image/png)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio.png (image/png)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
~Untitled Diagram.drawio.tmp (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio (application/vnd.jgraph.mxfile)
Untitled Diagram.drawio.png (image/png)
Screenshot 2023-01-10 at 3.57.13 PM.png (image/png)
Screenshot 2023-01-10 at 3.58.03 PM.png (image/png)
Screenshot 2023-01-10 at 4.00.18 PM.png (image/png)
Screenshot 2023-01-10 at 4.20.51 PM.png (image/png)