kie-issues#1034: Copy kogito-serverless-operator
to kie-tools
#9
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "CI :: Build (SWF Stack)" | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: ["**"] | |
types: [opened, reopened, ready_for_review, synchronize] | |
concurrency: | |
group: ${{ github.event.pull_request && format('ci-build-swf-stack-full-pr-{0}', github.event.pull_request.number) || format('ci-build-swf-stack-full-push-main-{0}', github.sha) }} | |
cancel-in-progress: true | |
env: | |
TMPDIR: "/tmp" | |
jobs: | |
run: | |
if: github.event.pull_request.draft == false | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- 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 CI patterns" | |
id: ci_patterns | |
uses: ./.github/actions/setup-ci-patterns | |
- name: "Setup build mode {none,full}" | |
id: setup_build_mode | |
shell: bash | |
run: | | |
export CHANGED_SOURCE_PATHS=($(eval "git diff --name-only ${{ steps.checkout_pr.outputs.base_sha }} ${{ steps.checkout_pr.outputs.head_sha }} -- ${{ steps.ci_patterns.outputs.non_source_files_patterns_for_git_diff }}")) | |
echo "Changed source paths:" | |
echo ${#CHANGED_SOURCE_PATHS[@]} | |
printf '%s\n' "${CHANGED_SOURCE_PATHS[@]}" | |
export PKGS_IN_SWF_STACK=("@kie-tools/serverless-logic-web-tools-swf-builder-image" "@kie-tools/kn-plugin-workflow" "@kie-tools/serverless-logic-web-tools" "@kie-tools/serverless-logic-web-tools-base-builder-image") | |
npm install -g [email protected] | |
export GREP_RES=$(NODE_PATH=$(npm prefix -g)/lib/node_modules node scripts/sparse-checkout/list_packages_dependencies.js ./repo "${PKGS_IN_SWF_STACK[@]}" | tr -d '\n' | xargs -d ' ' -I{} echo -n " -e \"{}\"") | |
echo "GREP RES:" | |
echo $GREP_RES | |
npm uninstall -g graph-data-structure | |
export CHANGED_SOURCE_PATHS_IN_SWF_STACK=($(eval "printf '%s\\n' "${CHANGED_SOURCE_PATHS[@]}" | grep $GREP_RES")) | |
echo "Changed source paths in "SWF Stack":" | |
echo ${#CHANGED_SOURCE_PATHS_IN_SWF_STACK[@]} | |
printf '%s\n' "${CHANGED_SOURCE_PATHS_IN_SWF_STACK[@]}" | |
if [ ${#CHANGED_SOURCE_PATHS[@]} -eq 0 ]; then | |
echo 'No source files changed; `CI :: SWF Stack` (none) will run.' | |
echo "mode=none" >> $GITHUB_OUTPUT | |
elif [ ! ${{ github.event.pull_request }} ]; then | |
echo 'Push to the `main` branch happened; `CI :: SWF Stack` (full) will run.' | |
echo "mode=full" >> $GITHUB_OUTPUT | |
elif [ ${#CHANGED_SOURCE_PATHS_IN_SWF_STACK[@]} -eq 0 ]; then | |
echo 'No source files changed in "SWF Stack"; `CI :: SWF Stack` (none) will run.' | |
echo "mode=none" >> $GITHUB_OUTPUT | |
else | |
echo 'Source files changed in "SWF Stack"; `CI :: SWF Stack` (full) will run.' | |
echo "mode=full" >> $GITHUB_OUTPUT | |
fi | |
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 == 'full' | |
env: | |
PLAYWRIGHT_BASE__installDeps: "true" | |
uses: ./.github/actions/bootstrap | |
with: | |
pnpm_filter_string: -F='@kie-tools/serverless-logic-web-tools-swf-builder-image...' -F='@kie-tools/serverless-logic-web-tools-base-builder-image...' -F='@kie-tools/kn-plugin-workflow...' -F='@kie-tools/serverless-logic-web-tools...' | |
- name: "Build (only SWF Stack)" | |
if: steps.setup_build_mode.outputs.mode == 'full' | |
env: | |
WEBPACK__minimize: "false" | |
WEBPACK__tsLoaderTranspileOnly: "false" | |
KIE_TOOLS_BUILD__runLinters: "true" | |
KIE_TOOLS_BUILD__runTests: "true" | |
KIE_TOOLS_BUILD__runEndToEndTests: "true" | |
KIE_TOOLS_BUILD__buildContainerImages: "true" | |
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: >- | |
pnpm | |
-F='@kie-tools/serverless-logic-web-tools-swf-builder-image...' | |
-F='@kie-tools/serverless-logic-web-tools-base-builder-image...' | |
-F='@kie-tools/kn-plugin-workflow...' | |
-F='@kie-tools/serverless-logic-web-tools...' | |
--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 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 | |
- 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 . |