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

[BIOMAGE-2014] - Fix staging SHA #390

Merged
merged 6 commits into from
Jul 7, 2022
Merged
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
46 changes: 29 additions & 17 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ jobs:
name: Build Docker container
runs-on: ubuntu-20.04
needs: test
outputs:
ref-id: ${{ steps.ref.outputs.ref-id }}
commit-sha: ${{ steps.ref.outputs.commit-sha }}
steps:
- id: checkout
name: Check out source code
Expand All @@ -117,6 +120,7 @@ jobs:
# This will take a ref like `refs/heads/master`
# and turn it into `refs-heads-master`
REF_ID=$(echo $GITHUB_REF | sed 's/\//-/g')
echo "::set-output name=ref-id::$REF_ID"

# the final tag is something like:
# refs-heads-master-a4f8bc313dae
Expand All @@ -128,13 +132,23 @@ jobs:
# in PR synch the latest commit of the branch is found in github.event.pull_request.head.sha instead

if [ "${{ github.event_name }}" = "release" ] && [ "${{ github.event.action }}" = "released" ]; then
echo "::set-output name=tag::${REF_ID/refs-tags-/}"
COMMIT_SHA=""
IMAGE_TAG="${REF_ID/refs-tags-/}"
elif [ "${{ github.event_name }}" = "pull_request" ]; then
echo "::set-output name=tag::$REF_ID-${{ github.event.pull_request.head.sha }}"
COMMIT_SHA="${{ github.event.pull_request.head.sha }}"
IMAGE_TAG="$REF_ID-$COMMIT_SHA"
else
echo "::set-output name=tag::$REF_ID-$GITHUB_SHA"
COMMIT_SHA=$GITHUB_SHA
IMAGE_TAG="$REF_ID-$COMMIT_SHA"
fi

echo "::set-output name=commit-sha::$COMMIT_SHA"

# IMAGE_TAG is used in the Build Docker Image step.
# We can easily build the image-tag from REF_ID and COMMIT_SHA for non-production releases.
# But we can not easily create the image tag for production releases, so we're bulding it here
echo "::set-output name=image-tag::$IMAGE_TAG"

# This will take a GitHub repo name like `hms-dbmi-cellenics/iac`
# and turns it into `iac`. This will be the name of the
# ECR repository.
Expand Down Expand Up @@ -170,7 +184,7 @@ jobs:
context: .
file: ./Dockerfile
platforms: linux/amd64
tags: ${{ format('{0}/{1}:{2}', steps.login-ecr.outputs.registry, steps.ref.outputs.repo-name, steps.ref.outputs.tag) }}
tags: ${{ format('{0}/{1}:{2}', steps.login-ecr.outputs.registry, steps.ref.outputs.repo-name, steps.ref.outputs.image-tag) }}
push: false
build-args: "READONLY_API_TOKEN_GITHUB=${{ secrets.READONLY_API_TOKEN_GITHUB }}"

Expand All @@ -180,7 +194,7 @@ jobs:
echo Pushing image $IMAGE_NAME to ECR.
docker push $IMAGE_NAME
env:
IMAGE_NAME: ${{ format('{0}/{1}:{2}', steps.login-ecr.outputs.registry, steps.ref.outputs.repo-name, steps.ref.outputs.tag) }}
IMAGE_NAME: ${{ format('{0}/{1}:{2}', steps.login-ecr.outputs.registry, steps.ref.outputs.repo-name, steps.ref.outputs.image-tag) }}

- id: send-to-slack
name: Send failure notification to Slack
Expand Down Expand Up @@ -226,17 +240,15 @@ jobs:
- id: fill-metadata
name: Fill out a new HelmRelease resource
run: |-
REF_DASHED=$(echo $GITHUB_REF | sed 's/\//-/g')
DEPLOYMENT_NAME=$(echo $GITHUB_REPOSITORY | awk -F '/' '{print $2}')
echo "::set-output name=deployment-name::$DEPLOYMENT_NAME"
echo "::set-output name=ref-dashed::$REF_DASHED"

if [ "${{ matrix.environment }}" = "production" ]; then
SANDBOX_ID="default"
RDS_SANDBOX_ID="default"
CHART_REF="master"
KUBERNETES_ENV="production"
IMAGE_TAG="${REF_DASHED/refs-tags-/}"
IMAGE_TAG="${REF_ID/refs-tags-/}"
IMAGE_GLOB="semver:>=0.0.0"
REPLICA_COUNT="4"
fi
Expand All @@ -246,8 +258,8 @@ jobs:
RDS_SANDBOX_ID="default"
CHART_REF="master"
KUBERNETES_ENV="staging"
IMAGE_TAG="$REF_DASHED-$GITHUB_SHA"
IMAGE_GLOB="glob:$REF_DASHED-*"
IMAGE_TAG="$REF_ID-$COMMIT_SHA"
IMAGE_GLOB="glob:$REF_ID-*"
REPLICA_COUNT="2"
fi

Expand All @@ -256,8 +268,8 @@ jobs:
RDS_SANDBOX_ID="STAGING_RDS_SANDBOX_ID"
CHART_REF="STAGING_CHART_REF"
KUBERNETES_ENV="staging"
IMAGE_TAG="$REF_DASHED-$GITHUB_SHA"
IMAGE_GLOB="glob:$REF_DASHED-*"
IMAGE_TAG="$REF_ID-$COMMIT_SHA"
IMAGE_GLOB="glob:$REF_ID-*"
REPLICA_COUNT="1"
fi

Expand All @@ -284,8 +296,8 @@ jobs:

cat $DEPLOYMENT_NAME.yaml
env:
IMAGE_NAME: ${{ format('{0}/{1}:{2}', steps.login-ecr.outputs.registry, needs.build-docker.outputs.repo-name, needs.build-docker.outputs.tag) }}

REF_ID: ${{ needs.build-docker.outputs.ref-id }}
COMMIT_SHA: ${{ needs.build-docker.outputs.commit-sha }}

- id: disable-admin-enforcement
name: Temporarily disable admin enforcement
Expand Down Expand Up @@ -315,9 +327,9 @@ jobs:
(github.event_name == 'pull_request' || github.event_name == 'push') && matrix.environment == 'staging'
env:
DEPLOYMENT_NAME: ${{ steps.fill-metadata.outputs.deployment-name }}
REF_DASHED: ${{ steps.fill-metadata.outputs.ref-dashed }}
REF_ID: ${{ needs.build-docker.outputs.ref-id }}
run: |-
mv $DEPLOYMENT_NAME.yaml $REF_DASHED.yaml
mv $DEPLOYMENT_NAME.yaml $REF_ID.yaml

- name: Push staging deployment template to releases
if:
Expand All @@ -326,7 +338,7 @@ jobs:
env:
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
with:
source_file: '${{ steps.fill-metadata.outputs.ref-dashed }}.yaml'
source_file: ${{ needs.build-docker.outputs.ref-id }}.yaml
destination_repo: '${{ github.repository_owner }}/releases'
destination_folder: 'staging-candidates/${{ steps.fill-metadata.outputs.deployment-name }}'
user_email: '[email protected]'
Expand Down