Skip to content

Commit

Permalink
parent 633d0cb
Browse files Browse the repository at this point in the history
author George MacLean <[email protected]> 1675203466 -0700
committer Shane Smith <[email protected]> 1706293936 -0600

parent 633d0cb
author George MacLean <[email protected]> 1675203466 -0700
committer Shane Smith <[email protected]> 1706293885 -0600

PRODENG-1577: Push containers to ECR

Amending the correct build/deploy file

might not need this guy

updating root URLs for testing kube deployment

updating dockerfile, and fixing typo in application.rb

might be easier

nope

adding tag release image job

Updating root URLs for new DNS zone

nope

Rebased, added development specific release-deploy job

Adding Production URLS to application.rb

Renaming development job, and removing prod/development tags from primary release GH action

One more push to all environments please
  • Loading branch information
Mac-Lean authored and voodooGQ committed Jan 26, 2024
1 parent 633d0cb commit 1c2ed24
Show file tree
Hide file tree
Showing 5 changed files with 255 additions and 4 deletions.
123 changes: 123 additions & 0 deletions .github/workflows/deploy-development.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: Deploy-Development
on:
# !!Emergency override!! uncomment below and access the actions tab in GitHub to run a release/deploy
# workflow_dispatch:
push:
branches:
- develop
jobs:
release_deploy:
name: Release and Deploy
runs-on: ubuntu-latest
# container:
# image: ruby:2.5.9-alpine3.13

steps:

# # Setup Auth token to push to github packages
- name: Set NPM Config
run: npm config set '//npm.pkg.github.com/:_authToken' '${{ secrets.ACCESS_TOKEN }}'

# - name: Unsafe Perm set
# run: npm config set unsafe-perm true

- name: Add safe directory
run: git config --global --add safe.directory /__w/sage-lib/sage-lib

- name: Clone Sage-Lib Repo
uses: actions/checkout@v2
with:
# pulls all commits (needed for lerna / semantic release to correctly version)
fetch-depth: "0"

# Setup Git Credentials to come from the Bot
- name: Set Bot Email
run: git config user.email "[email protected]"

- name: Set Bot Name
run: git config user.name "Kajabi Automation Bot"

- name: Determine git sha to checkout
uses: haya14busa/action-cond@v1
id: gitsha
with:
cond: ${{ github.event_name == 'pull_request' }}
if_true: ${{ github.event.pull_request.head.sha }}
if_false: ${{ github.sha }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
with:
version: v0.9.1

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.SAGE_ECR_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.SAGE_ECR_AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
role-duration-seconds: 1200
role-session-name: SageECRPushSession

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1

- name: Set branch name if not PR
if: github.event_name != 'pull_request'
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV

- name: Set branch name if PR
if: github.event_name == 'pull_request'
run: echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF})" >> $GITHUB_ENV

- name: Set valid docker tag branch name
run: echo "DOCKER_BRANCH_NAME=$(echo $BRANCH_NAME | sed "s/[^[:alnum:]\-\.\_]/-/g")-$GITHUB_RUN_NUMBER" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v2

- name: Build and push docs site
uses: docker/build-push-action@v2
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_SAGE_DOCS }}
IMAGE_SHA_TAG: ${{ steps.gitsha.outputs.value }}
with:
file: ./docs/Dockerfile
build-args: |
GITHUB_TOKEN=${{ secrets.ACCESS_TOKEN }}
context: ./docs
push: true
tags: |
${{ steps.login-ecr.outputs.registry }}/${{ secrets.ECR_REPOSITORY_SAGE_DOCS }}:${{ steps.gitsha.outputs.value }}-release-development
- name: Build and push storybook
uses: docker/build-push-action@v2
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_SAGE_STORYBOOK }}
IMAGE_SHA_TAG: ${{ steps.gitsha.outputs.value }}
with:
file: ./packages/sage-react/Dockerfile
build-args: |
GITHUB_TOKEN=${{ secrets.ACCESS_TOKEN }}
context: ./packages/sage-react/
push: true
tags: |
${{ steps.login-ecr.outputs.registry }}/${{ secrets.ECR_REPOSITORY_SAGE_STORYBOOK }}:${{ steps.gitsha.outputs.value }}-release-development
- name: Build and push sassdocs
uses: docker/build-push-action@v2
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_SAGE_SASSDOCS }}
IMAGE_SHA_TAG: ${{ steps.gitsha.outputs.value }}
with:
file: ./packages/sage-assets/Dockerfile
build-args: |
GITHUB_TOKEN=${{ secrets.ACCESS_TOKEN }}
context: ./packages/sage-assets/
push: true
tags: |
${{ steps.login-ecr.outputs.registry }}/${{ secrets.ECR_REPOSITORY_SAGE_SASSDOCS }}:${{ steps.gitsha.outputs.value }}-release-development
126 changes: 126 additions & 0 deletions .github/workflows/tag-release-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
name: Tag Release Image
on:
workflow_dispatch:
inputs:
image_tag:
description: SHA of commit to deploy
required: true
environment:
description: Optional environment to specify release for
required: false
default: development
jobs:
tag_release_image:
name: Tag and push Sage images for release
runs-on: ubuntu-latest
steps:
- name: Determine release tag suffix
uses: haya14busa/action-cond@v1
id: release_tag_suffix
with:
cond: ${{ github.event.inputs.environment == 'production' }}
if_true: 'release'
if_false: 'release-${{ github.event.inputs.environment }}'

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.SAGE_ECR_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.SAGE_ECR_AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
role-duration-seconds: 1200
role-session-name: SageECRPushSession

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
with:
version: v0.9.1

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1

- name: Retag Documentation image on ECR
uses: akhilerm/[email protected]
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_SAGE_DOCS }}
IMAGE_TAG: ${{ github.event.inputs.image_tag }}
RELEASE_TAG: ${{ github.event.inputs.image_tag }}-${{ steps.release_tag_suffix.outputs.value }}
with:
src: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY_SAGE_DOCS }}:${{ env.IMAGE_TAG }}
dst: |
${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY_SAGE_DOCS }}:${{ env.RELEASE_TAG }}
${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY_SAGE_DOCS }}:${{ steps.release_tag_suffix.outputs.value }}
- name: Retag Sassdocs image on ECR
uses: akhilerm/[email protected]
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_SAGE_SASSDOCS }}
IMAGE_TAG: ${{ github.event.inputs.image_tag }}
RELEASE_TAG: ${{ github.event.inputs.image_tag }}-${{ steps.release_tag_suffix.outputs.value }}
with:
src: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY_SAGE_SASSDOCS }}:${{ env.IMAGE_TAG }}
dst: |
${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY_SAGE_SASSDOCS }}:${{ env.RELEASE_TAG }}
${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY_SAGE_SASSDOCS }}:${{ steps.release_tag_suffix.outputs.value }}
- name: Retag Storybook image on ECR
uses: akhilerm/[email protected]
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_SAGE_STORYBOOK }}
IMAGE_TAG: ${{ github.event.inputs.image_tag }}
RELEASE_TAG: ${{ github.event.inputs.image_tag }}-${{ steps.release_tag_suffix.outputs.value }}
with:
src: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY_SAGE_STORYBOOK }}:${{ env.IMAGE_TAG }}
dst: |
${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY_SAGE_STORYBOOK }}:${{ env.RELEASE_TAG }}
${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY_SAGE_STORYBOOK }}:${{ steps.release_tag_suffix.outputs.value }}
# - name: Success Datadog event
# if: success()
# uses: masci/datadog@v1
# env:
# ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
# ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }}
# RELEASE_TAG: ${{ github.event.inputs.image_tag }}-${{ steps.release_tag_suffix.outputs.value }}
# RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
# with:
# api-key: ${{ secrets.DATADOG_API_KEY }}
# events: |
# - title: "deployment.github_action.tag-release-image"
# text: "%%%\n[GitHub Action Run](${{ env.RUN_URL }})\n%%%"
# alert_type: "success"
# host: "${{ github.runner.name }}"
# tags:
# - "env:${{ github.event.inputs.environment }}"
# - "repository:${{ github.repository }}"
# - "git.commit.sha:${{ github.event.inputs.image_tag }}"
# - "image_name:${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}"
# - "image_tag:${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.RELEASE_TAG }}"
# - "short_image:${{ env.ECR_REPOSITORY }}"
# - name: Failure Datadog event
# if: failure()
# uses: masci/datadog@v1
# env:
# ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
# ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }}
# RELEASE_TAG: ${{ github.event.inputs.image_tag }}-${{ steps.release_tag_suffix.outputs.value }}
# RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
# with:
# api-key: ${{ secrets.DATADOG_API_KEY }}
# events: |
# - title: "deployment.github_action.tag-release-image"
# text: "%%%\n[GitHub Action Run](${{ env.RUN_URL }})\n%%%"
# alert_type: "error"
# host: "${{ github.runner.name }}"
# tags:
# - "env:${{ github.event.inputs.environment }}"
# - "repository:${{ github.repository }}"
# - "git.commit.sha:${{ github.event.inputs.image_tag }}"
# - "image_name:${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}"
# - "image_tag:${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.RELEASE_TAG }}"
# - "short_image:${{ env.ECR_REPOSITORY }}"
2 changes: 1 addition & 1 deletion docs/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ ENV BUNDLE_PATH="/app/vendor/gems"
ENV BUNDLE_APP_CONFIG="/app/.bundle"


RUN gem update --system
#RUN gem update --system
RUN gem install bundler:$BUNDLER_VERSION

COPY Gemfile Gemfile.lock ./
Expand Down
5 changes: 3 additions & 2 deletions docs/config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,10 @@ class Application < Rails::Application
# config.active_record.raise_in_transactional_callbacks = true

# Storybook deploy url to differentiate in different environments
config.storybook_root_url = "https://sage-lib-storybook.herokuapp.com/?path=/docs/"
config.storybook_root_url = "https://sage-lib-storybook.production.kajabi.farm/?path=/docs/"

# Sassdocs deploy url to differentiate in different environments
config.sassdocs_root_url = "https://sage-lib-sassdocs.herokuapp.com/"
config.sassdocs_root_url = "https://sage-lib-sassdocs.production.kajabi.farm/"
end
end

3 changes: 2 additions & 1 deletion packages/sage-react/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,12 @@ RUN npm config set @kajabi:registry https://npm.pkg.github.com
RUN npm config set '//npm.pkg.github.com/:_authToken' '${GITHUB_TOKEN}'

COPY --chown={$NONROOT_UID}:${NONROOT_GID} package.json /app/package.json
RUN yarn
RUN yarn install --check-files

COPY --chown={$NONROOT_UID}:${NONROOT_GID} .babelrc /app/.babelrc
COPY --chown={$NONROOT_UID}:${NONROOT_GID} lib /app/lib
COPY --chown={$NONROOT_UID}:${NONROOT_GID} .storybook /app/.storybook
COPY --chown={$NONROOT_UID}:${NONROOT_GID} public /app/public

EXPOSE $PORT

Expand Down

0 comments on commit 1c2ed24

Please sign in to comment.