Skip to content

NO-ISSUE: Remove @kie-tools/backend (#2714) #58

NO-ISSUE: Remove @kie-tools/backend (#2714)

NO-ISSUE: Remove @kie-tools/backend (#2714) #58

Workflow file for this run

#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
name: "CI :: Build"
on:
push:
branches: [main]
pull_request:
branches: ["**"]
types: [opened, reopened, ready_for_review, synchronize]
concurrency:
group: ${{ github.event.pull_request && format('ci-build-full-pr-{0}', github.event.pull_request.number) || format('ci-build-full-push-main-{0}', github.sha) }}
cancel-in-progress: true
env:
TMPDIR: "/tmp"
BUILD_ENV__accessErrorsLogFileAbsolutePath: "/tmp/build-env-access-errors.log"
jobs:
run:
if: github.event.pull_request.draft == false
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, windows-latest]
partition: [0, 1, 2]
runs-on: ${{ matrix.os }}
steps:
- name: "Support longpaths"
if: runner.os == 'Windows'
run: git config --system core.longpaths true
- name: "Checkout @ GitHub default"
uses: actions/checkout@v3
- name: "Checkout @ Simulated squashed-merge if PR"
id: checkout_pr
uses: ./.github/actions/checkout-pr
with:
ref: ${{ github.base_ref }}
- name: "Setup pnpm"
uses: pnpm/action-setup@v3
with:
version: 9.3.0
- name: "Setup Node"
uses: actions/setup-node@v4
with:
node-version: 20.14.0
- name: "Setup CI patterns"
id: ci_patterns
uses: ./.github/actions/setup-ci-patterns
- name: "Setup build mode {none,full,partial}"
id: setup_build_mode
shell: bash
run: |
npm -g install [email protected] [email protected]
echo '{}' > turbo.json
turbo telemetry disable
bun ./.github/supporting-files/ci/build-partitioning/build_partitioning.ts \
--outputPath='/tmp/partitions.json' \
--forceFull='${{ !github.event.pull_request }}' \
--baseSha='${{ steps.checkout_pr.outputs.base_sha }}' \
--headSha='${{steps.checkout_pr.outputs.head_sha }}' \
--graphJsonPath='./repo/graph.json' \
--partition='./.github/supporting-files/ci/partitions/partition0.txt' \
--partition='./.github/supporting-files/ci/partitions/partition1.txt'
npm -g uninstall bun turbo
rm turbo.json
echo "mode=$(jq --raw-output '.[${{ matrix.partition }}].mode' /tmp/partitions.json)" >> $GITHUB_OUTPUT
echo "bootstrapPnpmFilterString=$(jq --raw-output '.[${{ matrix.partition }}].bootstrapPnpmFilterString' /tmp/partitions.json)" >> $GITHUB_OUTPUT
echo "fullBuildPnpmFilterString=$(jq --raw-output '.[${{ matrix.partition }}].fullBuildPnpmFilterString' /tmp/partitions.json)" >> $GITHUB_OUTPUT
echo "upstreamPnpmFilterString=$(jq --raw-output '.[${{ matrix.partition }}].upstreamPnpmFilterString' /tmp/partitions.json)" >> $GITHUB_OUTPUT
echo "affectedPnpmFilterString=$(jq --raw-output '.[${{ matrix.partition }}].affectedPnpmFilterString' /tmp/partitions.json)" >> $GITHUB_OUTPUT
echo "Done."
- name: "Setup environment"
if: steps.setup_build_mode.outputs.mode != 'none'
uses: ./.github/actions/setup-env
- name: "Bootstrap"
if: steps.setup_build_mode.outputs.mode != 'none'
env:
PLAYWRIGHT_BASE__installDeps: "true"
uses: ./.github/actions/bootstrap
with:
pnpm_filter_string: ${{ steps.setup_build_mode.outputs.bootstrapPnpmFilterString }}
- name: "FULL → Build"
if: steps.setup_build_mode.outputs.mode == 'full'
shell: bash
env:
WEBPACK__minimize: "false"
WEBPACK__tsLoaderTranspileOnly: "false"
KIE_TOOLS_BUILD__runLinters: "true"
KIE_TOOLS_BUILD__runTests: "true"
KIE_TOOLS_BUILD__runEndToEndTests: ${{ runner.os == 'Linux' }}
KIE_TOOLS_BUILD__buildContainerImages: ${{ runner.os == 'Linux' }}
KIE_TOOLS_BUILD__buildExamples: "true"
KIE_TOOLS_BUILD__ignoreTestFailures: ${{ !github.event.pull_request }}
KIE_TOOLS_BUILD__ignoreEndToEndTestFailures: ${{ !github.event.pull_request }}
DISPLAY: ":99.0"
START_SERVER_AND_TEST_INSECURE: "true"
NODE_OPTIONS: "--max_old_space_size=4096"
run: >-
eval "pnpm ${{ steps.setup_build_mode.outputs.fullBuildPnpmFilterString }} --workspace-concurrency=1 build:prod"
- name: "PARTIAL → Build upstream"
if: steps.setup_build_mode.outputs.mode == 'partial' && steps.setup_build_mode.outputs.upstreamPnpmFilterString != ''
shell: bash
env:
KIE_TOOLS_BUILD__buildContainerImages: ${{ runner.os == 'Linux' }}
KIE_TOOLS_BUILD__buildExamples: "true"
run: |
eval "pnpm ${{ steps.setup_build_mode.outputs.upstreamPnpmFilterString }} build:dev"
- name: "PARTIAL → Build changed and downstream"
shell: bash
if: steps.setup_build_mode.outputs.mode == 'partial'
env:
WEBPACK__minimize: "false"
KIE_TOOLS_BUILD__runLinters: "true"
KIE_TOOLS_BUILD__runTests: "true"
KIE_TOOLS_BUILD__runEndToEndTests: ${{ runner.os == 'Linux' }}
KIE_TOOLS_BUILD__buildContainerImages: ${{ runner.os == 'Linux' }}
KIE_TOOLS_BUILD__buildExamples: "true"
DISPLAY: ":99.0"
START_SERVER_AND_TEST_INSECURE: "true"
NODE_OPTIONS: "--max_old_space_size=4096"
run: |
eval "pnpm ${{ steps.setup_build_mode.outputs.affectedPnpmFilterString }} --workspace-concurrency=1 build:prod"
- name: "Check tests result (`main` only)"
if: always() && !cancelled() && steps.setup_build_mode.outputs.mode != 'none'
uses: actions/github-script@v6
env:
KIE_TOOLS_CI__JUNIT_REPORT_RESULTS_PATTERNS: |-
${{ steps.ci_patterns.outputs.tests_reports_patterns }}
${{ steps.ci_patterns.outputs.end_to_end_tests_reports_patterns }}
with:
result-encoding: string
script: |
const patterns = process.env["KIE_TOOLS_CI__JUNIT_REPORT_RESULTS_PATTERNS"]
.split("\n")
.map(p => p.trim())
.filter(p => p);
const script = require("./scripts/check-junit-report-results/src/index.js");
await script({ core, glob, patterns });
- name: "Check build-env access errors log"
if: always() && !cancelled() && steps.setup_build_mode.outputs.mode != 'none'
shell: bash
run: |
touch "$BUILD_ENV__accessErrorsLogFileAbsolutePath"
cat "$BUILD_ENV__accessErrorsLogFileAbsolutePath"
[ "0" == "$(cat "$BUILD_ENV__accessErrorsLogFileAbsolutePath" | wc -l | tr -d ' ')" ]
- name: "Check hanging uncommitted files (you should commit those!)"
if: always() && !cancelled() && steps.setup_build_mode.outputs.mode != 'none'
shell: bash
run: |
git diff
[ "0" == "$(git diff | wc -l | tr -d ' ')" ]
- name: "Upload reports and artifacts"
if: always() && !cancelled() && steps.setup_build_mode.outputs.mode != 'none'
uses: ./.github/actions/upload-ci-reports-and-artifacts
with:
partition_index: ${{ matrix.partition }}
- name: "Upload end-to-end tests results to Buildkite (`main` only)"
if: always() && !cancelled() && steps.setup_build_mode.outputs.mode != 'none' && !github.event.pull_request
shell: bash
env:
BUILDKITE_ANALYTICS_TOKEN: ${{ secrets.BUILDKITE_TOKEN }}
BUILDKITE_BRANCH: ${{ github.ref_name }}
BUILDKITE_MESSAGE: ${{ github.event.commits[0].message }}
run: |
eval "find -P * -type f ${{ steps.ci_patterns.outputs.end_to_end_tests_reports_patterns_for_find }}"
echo "---------------------------- starting upload -----------------------"
eval "find -P * -type f ${{ steps.ci_patterns.outputs.end_to_end_tests_reports_patterns_for_find }}" | xargs -I{} curl -X POST \
-H "Authorization: Token token=\"$BUILDKITE_ANALYTICS_TOKEN\"" \
-F "format=junit" \
-F "data=@{}" \
-F "run_env[CI]=github_actions" \
-F "run_env[key]=$GITHUB_ACTION-$GITHUB_RUN_NUMBER-$GITHUB_RUN_ATTEMPT" \
-F "run_env[number]=$GITHUB_RUN_NUMBER" \
-F "run_env[branch]=$BUILDKITE_BRANCH" \
-F "run_env[commit_sha]=$GITHUB_SHA" \
-F "run_env[message]=$BUILDKITE_MESSAGE" \
-F "run_env[url]=https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" \
https://analytics-api.buildkite.com/v1/uploads
- name: "Print storage usage (after build)"
if: always() && !cancelled()
shell: bash
run: |
df -h .