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

feat(internal-dashboard): adding job for building dashboard #278

Merged
merged 24 commits into from
Apr 4, 2024
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
37 changes: 37 additions & 0 deletions .github/workflows/check-modified-files-as-step/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Check if a path was modified
description: Reusable action for checking if a file path is modified as a step. It outputs a `changed` variable which can be referenced later.

inputs:
path:
description: 'Path to check'
required: true

runs:
using: composite
steps:
########################################
# Check to see if files changed
########################################
- name: "🔍 Check if $PATH_TO_CHECK is modified in last commit "
env:
PATH_TO_CHECK: ${{ inputs.path }}
shell: bash
run: |
set -eExou pipefail

echo "=============== list modified files ==============="
git diff --name-only HEAD^ HEAD

echo "========== check paths of modified files =========="
git diff --name-only HEAD^ HEAD > files.txt
while IFS= read -r file
do
echo $file
if [[ $file != $PATH_TO_CHECK ]]; then
echo "changed=false" >> $GITHUB_ENV
else
echo "File $file matches $PATH_TO_CHECK"
echo "changed=true" >> $GITHUB_ENV
break
fi
done < files.txt
34 changes: 34 additions & 0 deletions .github/workflows/dashboard.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Build and push dashboard image
on:
push:
paths:
- dashboard
branches:
- "main"
pull_request:
merge_group:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: "🚀 Building"
run: |
docker build -t ghcr.io/dfinity/dre/ic-management-frontend:$GITHUB_SHA -f dashboard/Dockerfile dashboard

- name: "🔧 Login to GitHub Container Registry"
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: "📦 Push images to GitHub Container Registry"
if: ${{ startsWith(github.head_ref, 'container') || startsWith(github.ref, 'refs/heads/container') || (github.ref == 'refs/heads/main') }}
run: |
docker push ghcr.io/dfinity/dre/ic-management-frontend:$GITHUB_SHA
34 changes: 34 additions & 0 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: "☁️ Setup runner"
uses: ./.github/workflows/manage-runner-pre

Expand Down Expand Up @@ -65,6 +67,35 @@ jobs:
if: ${{ startsWith(github.ref, 'refs/tags/v') || startsWith(github.head_ref, 'container') || startsWith(github.ref, 'refs/heads/container') || (github.ref == 'refs/heads/main') }}
run: bazel query --noshow_progress 'kind("oci_push", ...)' | xargs -I_target bazel run _target -- --tag ${GITHUB_SHA}

########################################
# Check if dashboard/* changed to see if
# it also needs to be updated in k8s
########################################
- name: "❓ Check if dashboard/* changed in last commit"
id: check
uses: ./.github/workflows/check-modified-files-as-step
with:
path: dashboard/*

- name: "💲 Setting correct paths to update"
id: paths
shell: bash
run: |
files=(
bases/apps/mainnet-dashboard/statefulset-slack.yaml
bases/apps/mainnet-dashboard/backend/base/deployment.yaml
)
if [[ $changed == "true" ]]; then
echo "Adding frontend to list of files"
files+=( bases/apps/mainnet-dashboard/frontend/deployment.yaml )
else
echo "Skipping adding of frontend to list of files"
fi

echo "Output of this step:"
echo ${files[@]}
echo "files=${files[@]}" >> $GITHUB_ENV

########################################
# Update k8s deployments
########################################
Expand All @@ -74,6 +105,9 @@ jobs:
with:
gitlab_api_token: ${{ secrets.GITLAB_K8S_API_TOKEN }}

########################################
# Deploy to github pages
########################################
- name: "🚢 Deploy to GitHub Pages"
if: ${{ github.ref == 'refs/heads/main' }}
run: |
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/update-k8s-deployments/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ runs:
run: |
set -eExou pipefail

echo "Should change following files:"
echo $files

cd .git

# checkout branch
Expand All @@ -30,7 +33,7 @@ runs:
# this regex matches the first group (ie the image name) and uses \1
# called a back-reference to insert the first group matched, the second
# part is to match the 40 characters hash that we replace with the $GITHUB_SHA
sed -i "s~\(\([[:alpha:]]\|-\)\+\):[[:alnum:]]\{40\}~\1:${GITHUB_SHA}~g" bases/apps/mainnet-dashboard/statefulset-slack.yaml bases/apps/mainnet-dashboard/backend/base/deployment.yaml bases/apps/mainnet-dashboard/frontend/deployment.yaml
sed -i "s~\(\([[:alpha:]]\|-\)\+\):[[:alnum:]]\{40\}~\1:${GITHUB_SHA}~g" $files

# commit changes if there are any
git add .
Expand Down
4 changes: 2 additions & 2 deletions dashboard/docker-compose.dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ services:
dashboard-backend-mainnet:
build:
context: ..
dockerfile: ic-management-backend/Dockerfile
dockerfile: rs/ic-management-backend/Dockerfile
args:
BUILDKIT_INLINE_CACHE: 1
slack:
build:
context: ..
dockerfile: slack-notifications/Dockerfile
dockerfile: rs/slack-notifications/Dockerfile
args:
BUILDKIT_INLINE_CACHE: 1
Loading