feat(ci): fe sourcemaps to gha and concurrency (#4914)

This commit is contained in:
Daniel Gak Anagrov
2025-06-10 14:17:45 +02:00
committed by GitHub
parent 5db8d41d13
commit bbfc86b213
3 changed files with 128 additions and 8 deletions
+77 -8
View File
@@ -6,16 +6,32 @@ on:
IMAGE_VERSION_TAG:
required: true
type: string
DOCKERHUB_USERNAME:
required: true
type: string
PUSH_IMAGES:
required: true
type: boolean
secrets:
DATADOG_API_KEY:
required: true
DOCKERHUB_TOKEN:
required: true
jobs:
docker-build-server:
runs-on: blacksmith
name: Server
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ inputs.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: useblacksmith/build-push-action@v1
with:
push: false
push: ${{ inputs.PUSH_IMAGES }}
tags: speckle/speckle-server:${{ inputs.IMAGE_VERSION_TAG }}
file: ./packages/server/Dockerfile
@@ -23,10 +39,15 @@ jobs:
runs-on: blacksmith
name: Frontend2
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ inputs.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: useblacksmith/build-push-action@v1
with:
push: false
push: ${{ inputs.PUSH_IMAGES }}
tags: speckle/speckle-frontend-2:${{ inputs.IMAGE_VERSION_TAG }}
file: ./packages/frontend-2/Dockerfile
@@ -34,10 +55,15 @@ jobs:
runs-on: blacksmith
name: Preview service
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ inputs.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: useblacksmith/build-push-action@v1
with:
push: false
push: ${{ inputs.PUSH_IMAGES }}
tags: speckle/speckle-preview-service:${{ inputs.IMAGE_VERSION_TAG }}
file: ./packages/preview-service/Dockerfile
@@ -45,10 +71,15 @@ jobs:
runs-on: blacksmith
name: Webhook service
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ inputs.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: useblacksmith/build-push-action@v1
with:
push: false
push: ${{ inputs.PUSH_IMAGES }}
tags: speckle/speckle-webhook-service:${{ inputs.IMAGE_VERSION_TAG }}
file: ./packages/webhook-service/Dockerfile
@@ -56,10 +87,15 @@ jobs:
runs-on: blacksmith
name: File import service
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ inputs.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: useblacksmith/build-push-action@v1
with:
push: false
push: ${{ inputs.PUSH_IMAGES }}
tags: speckle/speckle-fileimport-service:${{ inputs.IMAGE_VERSION_TAG }}
file: ./packages/fileimport-service/Dockerfile
@@ -67,10 +103,15 @@ jobs:
runs-on: blacksmith
name: Test deploy util
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ inputs.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: useblacksmith/build-push-action@v1
with:
push: false
push: ${{ inputs.PUSH_IMAGES }}
tags: speckle/speckle-test-deployment:${{ inputs.IMAGE_VERSION_TAG }}
file: ./utils/test-deployment/Dockerfile
@@ -78,10 +119,15 @@ jobs:
runs-on: blacksmith
name: monitor container
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ inputs.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: useblacksmith/build-push-action@v1
with:
push: false
push: ${{ inputs.PUSH_IMAGES }}
tags: speckle/speckle-monitor-deployment:${{ inputs.IMAGE_VERSION_TAG }}
file: ./packages/monitor-deployment/Dockerfile
@@ -89,9 +135,32 @@ jobs:
runs-on: blacksmith
name: Docker compose ingress
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ inputs.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: useblacksmith/build-push-action@v1
with:
push: false
push: ${{ inputs.PUSH_IMAGES }}
tags: speckle/speckle-docker-compose-ingress:${{ inputs.IMAGE_VERSION_TAG }}
file: ./utils/docker-compose-ingress/Dockerfile
docker-frontend-2-sourcemaps:
runs-on: blacksmith
name: Frontend2 sourcemaps
if: ${{ inputs.PUSH_IMAGES }}
env:
IMAGE_VERSION_TAG: ${{ inputs.IMAGE_VERSION_TAG }}
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
SPECKLE_SERVER_PACKAGE: frontend-2
steps:
- uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
- uses: useblacksmith/build-push-action@v1
with:
setup-only: true
- name: Build and Publish sourcemaps
run: ./.github/workflows/scripts/publish_fe2_sourcemaps.sh
+6
View File
@@ -2,6 +2,10 @@ name: CI Pipeline
on: pull_request
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true # other running workflows get cancelled on the same branch
jobs:
get-version:
outputs:
@@ -34,4 +38,6 @@ jobs:
uses: ./.github/workflows/builds.yml
with:
IMAGE_VERSION_TAG: ${{ needs.get-version.outputs.IMAGE_VERSION_TAG }}
DOCKERHUB_USERNAME: 'speckledevops'
PUSH_IMAGES: false
secrets: inherit
@@ -0,0 +1,45 @@
#!/usr/bin/env bash
set -eo pipefail
echo "🏷️ Preparing envs"
GIT_ROOT="$(git rev-parse --show-toplevel)"
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# shellcheck disable=SC1090,SC1091
source "${SCRIPT_DIR}/common.sh"
FE2_DIR_PATH="${FE2_DIR_PATH:-"packages/frontend-2"}"
FE2_DATADOG_SERVICE="${FE2_DATADOG_SERVICE:-"web-app-2"}"
DATADOG_SITE="${DATADOG_SITE:-"datadoghq.eu"}"
if [[ -z "${DATADOG_API_KEY}" ]]; then
echo "DATADOG_API_KEY is not set"
exit 1
fi
echo "🏗️ Building prod docker image with sourcemaps enabled"
export DOCKER_BUILDKIT=1
docker build --build-arg BUILD_SOURCEMAPS=true --build-arg SPECKLE_SERVER_VERSION="${IMAGE_VERSION_TAG}" --tag "${DOCKER_IMAGE_TAG}:${IMAGE_VERSION_TAG}-sourcemaps" --file "${FE2_DIR_PATH}/Dockerfile" .
container_id=$(docker create "${DOCKER_IMAGE_TAG}:${IMAGE_VERSION_TAG}-sourcemaps")
echo "🧹 Cleaning target location and copy sourcemaps into it"
rm -rf "${GIT_ROOT}/${FE2_DIR_PATH}/.output"
docker cp "$container_id":/speckle-server "${GIT_ROOT}/${FE2_DIR_PATH}/.output"
docker rm "$container_id"
echo "🆕 Publishing sourcemaps"
pushd "${GIT_ROOT}/${FE2_DIR_PATH}"
DATADOG_SITE="${DATADOG_SITE}" npx --yes @datadog/datadog-ci sourcemaps upload ./.output/public/_nuxt \
--service="${FE2_DATADOG_SERVICE}" \
--release-version="${IMAGE_VERSION_TAG}" \
--minified-path-prefix=/_nuxt
popd
echo "✅ Sourcemaps completed."
# Clean up
rm -rf "${GIT_ROOT}/${FE2_DIR_PATH}/.output"