Skip to content

fix wrong language for initial value for ValueInputWithDictEditor (#5… #17629

fix wrong language for initial value for ValueInputWithDictEditor (#5…

fix wrong language for initial value for ValueInputWithDictEditor (#5… #17629

Workflow file for this run

#this should be the same as workflow name in test-report.yml
name: CI
on:
pull_request:
branches:
- master
- staging
- demo
- preview/*
- release/*
paths-ignore:
- '**.md'
- 'docs/**'
push:
branches:
- master
- staging
- demo
- preview/*
- release/*
paths-ignore:
- '**.md'
- 'docs/**'
#TODO: currently release is done manually, we don't want to run this pipeline on released version, to avoid accidental pushes
tags-ignore:
- '**'
env:
#we use this variable in ciRunSbt.sh
#NOTE: for publishing we use different settings, we don't use ciRunSbt.sh there
CROSS_BUILD: ${{ github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/preview') || startsWith(github.ref, 'refs/heads/release') }}
jobs:
setup:
runs-on: ubuntu-latest
outputs:
fe_changes_count: ${{ steps.filter.outputs.fe_changes_count }}
all_changes_count: ${{ steps.filter.outputs.all_changes_count }}
git_source_branch: ${{ steps.variables.outputs.git_source_branch }}
nk_snapshot_version: ${{ steps.variables.outputs.nk_snapshot_version }}
scala_version_matrix: ${{ steps.variables.outputs.scala_version_matrix }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 100
- uses: dorny/paths-filter@v2
id: filter
with:
list-files: 'csv'
filters: |
fe_changes:
- 'designer/client/**'
- 'designer/submodules/**'
- 'docs/**'
- '**.md'
all_changes:
- '**'
- name: Define variables
id: variables
shell: bash
run: |
GIT_SOURCE_BRANCH=`([ "${GITHUB_HEAD_REF}" != "" ] && echo "${GITHUB_HEAD_REF}" || echo "${GITHUB_REF}") | sed 's/refs\/heads\///g'`
SANITIZED_BRANCH=`echo ${GIT_SOURCE_BRANCH} | sed 's/[^a-zA-Z0-9._-]/\_/g' | awk '{print tolower($0)}'`
VERSION_SUFFIX="-$SANITIZED_BRANCH-$(date -I)-$GITHUB_RUN_NUMBER-${GITHUB_SHA::9}"
NK_SNAPSHOT_VERSION=`cat version.sbt | sed -e 's/.*:= *"//' -e 's/" *//' | sed "s/-SNAPSHOT/${VERSION_SUFFIX}-SNAPSHOT/"`
echo "git_source_branch=$GIT_SOURCE_BRANCH" >> $GITHUB_OUTPUT
echo "nk_snapshot_version=$NK_SNAPSHOT_VERSION" >> $GITHUB_OUTPUT
if [[ $CROSS_BUILD == 'true' ]]; then
echo "scala_version_matrix=[\"2.12\",\"2.13\"]" >> $GITHUB_OUTPUT
else
echo "scala_version_matrix=[\"2.13\"]" >> $GITHUB_OUTPUT
fi
build:
name: Build
runs-on: ubuntu-latest
needs: [ setup ]
env:
# We can't just use conditional jobs mechanism ('if' directive) because 'cypressTests' job depends on this one
shouldPerformBackendBuild: ${{ needs.setup.outputs.fe_changes_count != needs.setup.outputs.all_changes_count || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/demo' || startsWith(github.ref, 'refs/heads/preview') || startsWith(github.ref, 'refs/heads/release') }}
steps:
- name: Cancel previous runs
if: ${{ env.shouldPerformBackendBuild == 'true' && github.event_name != 'push' }}
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v3
if: ${{ env.shouldPerformBackendBuild == 'true' }}
- uses: coursier/setup-action@v1
if: ${{ env.shouldPerformBackendBuild == 'true' }}
with:
jvm: temurin:1.11.0.17
- name: Cache ivy packages
if: ${{ env.shouldPerformBackendBuild == 'true' }}
uses: actions/cache@v3
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: sbt-cache-${{ hashFiles('**/*.sbt') }}
restore-keys: sbt
- name: Build
if: ${{ env.shouldPerformBackendBuild == 'true' }}
shell: bash
run: CROSS_BUILD=false ./ciRunSbt.sh Compile/compile Test/compile
- name: Tar artifacts
if: ${{ env.shouldPerformBackendBuild == 'true' }}
shell: bash
run: find . -wholename "**/target/**/*" -printf '%P\0' | tar --null -C '.' --files-from=- -czf 'target.tgz'
- name: Store target
if: ${{ env.shouldPerformBackendBuild == 'true' }}
uses: actions/upload-artifact@v3
with:
name: build-target
path: target.tgz
build-fe:
name: BuildFrontend
runs-on: ubuntu-latest
needs: [ setup ]
env:
NUSSKNACKER_VERSION: ${{ needs.setup.outputs.nk_snapshot_version }}
steps:
- name: Cancel previous runs
if: github.event_name != 'push'
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v3
- name: Cache npm
id: cache-npm
uses: actions/cache@v3
with:
path: |
**/node_modules
~/.cache/Cypress
key: ${{ hashFiles('designer/client/package-lock.json', 'designer/client/.nvmrc', 'designer/submodules/package-lock.json', 'designer/submodules/.nvmrc') }}
- name: Get Node.js version
id: nvm
run: echo "NODE_VERSION=$(cat designer/client/.nvmrc)" >> $GITHUB_OUTPUT
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ steps.nvm.outputs.NODE_VERSION }}
- name: Download node modules
if: steps.cache-npm.outputs.cache-hit != 'true'
run: |
npm ci --no-audit --prefix designer/client
npm ci --no-audit --prefix designer/submodules
- name: Build FE
run: (cd designer/client; npm run build)
- name: Build FE submodules
run: |
cd designer
cp -r client/.federated-types/nussknackerUi submodules/types/@remote
cd submodules
npm run build
- name: Tar fe artifacts
shell: bash
run: tar -czf 'fe-dist.tgz' designer/client/dist designer/submodules/dist
- name: Store dist
uses: actions/upload-artifact@v3
with:
name: build-fe-dist
path: fe-dist.tgz
tests:
name: Tests
runs-on: ubuntu-latest
needs: [ build, setup ]
strategy:
matrix:
scalaVersion: ${{fromJson(needs.setup.outputs.scala_version_matrix)}}
env:
NUSSKNACKER_SCALA_VERSION: ${{ matrix.scalaVersion }}
TESTS_WITH_COVERAGE: ${{ github.ref == 'refs/heads/staging' && matrix.scalaVersion == '2.13' }}
if: ${{ needs.setup.outputs.fe_changes_count != needs.setup.outputs.all_changes_count || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/demo' || startsWith(github.ref, 'refs/heads/preview') || startsWith(github.ref, 'refs/heads/release') }}
steps:
- name: Cancel previous runs
if: github.event_name != 'push'
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v3
- uses: coursier/setup-action@v1
with:
jvm: temurin:1.11.0.17
- uses: actions/download-artifact@v3
with:
name: build-target
- name: Untar artifacts
shell: bash
run: tar xfz target.tgz
- name: Cache ivy packages
uses: actions/cache@v3
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: sbt-cache-${{ hashFiles('**/*.sbt') }}
restore-keys: sbt
- name: Backend tests with coverage
shell: bash
if: ${{ env.TESTS_WITH_COVERAGE == 'true' }}
run: ./ciRunSbt.sh coverage test coverageReport
- name: Backend tests without coverage
shell: bash
if: ${{ env.TESTS_WITH_COVERAGE != 'true' }}
run: ./ciRunSbt.sh test
- name: Test Report
if: success() || failure()
uses: actions/upload-artifact@v3
with:
name: BackendTests-results-${{ matrix.scalaVersion }}
path: '**/test-reports/*.xml'
- name: Upload Coverage data to Coveralls
shell: bash
if: ${{ env.TESTS_WITH_COVERAGE == 'true' }}
run: ./ciRunSbt.sh coverageAggregate coveralls
env:
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
crossCompile:
name: CrossCompile
runs-on: ubuntu-latest
needs: [ build, setup ]
if: ${{ needs.setup.outputs.fe_changes_count != needs.setup.outputs.all_changes_count || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/demo' || startsWith(github.ref, 'refs/heads/preview') || startsWith(github.ref, 'refs/heads/release') }}
steps:
- name: Cancel previous runs
if: github.event_name != 'push'
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v3
- uses: coursier/setup-action@v1
with:
jvm: temurin:1.11.0.17
- name: Cache ivy packages
uses: actions/cache@v3
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: sbt-cache-${{ hashFiles('**/*.sbt') }}
restore-keys: sbt
- uses: actions/download-artifact@v3
with:
name: build-target
- name: Untar artifacts
shell: bash
run: tar xfz target.tgz
- name: Compile
shell: bash
run: CROSS_BUILD=true ./ciRunSbt.sh Compile/compile Test/compile
integrationTests:
name: IntegrationTests
needs: [ build, setup ]
strategy:
matrix:
scalaVersion: ${{fromJson(needs.setup.outputs.scala_version_matrix)}}
env:
NUSSKNACKER_SCALA_VERSION: ${{ matrix.scalaVersion }}
if: ${{ needs.setup.outputs.fe_changes_count != needs.setup.outputs.all_changes_count || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/demo' || startsWith(github.ref, 'refs/heads/preview') || startsWith(github.ref, 'refs/heads/release') }}
runs-on: ubuntu-latest
steps:
- name: Cancel previous runs
if: github.event_name != 'push'
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v3
- uses: coursier/setup-action@v1
with:
jvm: temurin:1.11.0.17
- name: Cache ivy packages
uses: actions/cache@v3
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: sbt-cache-${{ hashFiles('**/*.sbt') }}
restore-keys: sbt
- uses: actions/download-artifact@v3
with:
name: build-target
- name: Untar artifacts
shell: bash
run: tar xfz target.tgz
- name: Integration tests
shell: bash
env:
dockerUpLatest: true
run: ./ciRunSbt.sh It/test
- name: Test Report
if: success() || failure()
uses: actions/upload-artifact@v3
with:
name: IntegrationTests-results-${{ matrix.scalaVersion }}
path: '**/it-reports/*.xml'
slowTests:
name: SlowTests
runs-on: ubuntu-latest
needs: [ build, setup ]
strategy:
matrix:
scalaVersion: ${{fromJson(needs.setup.outputs.scala_version_matrix)}}
env:
NUSSKNACKER_SCALA_VERSION: ${{ matrix.scalaVersion }}
if: ${{ needs.setup.outputs.fe_changes_count != needs.setup.outputs.all_changes_count || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/demo' || startsWith(github.ref, 'refs/heads/preview') || startsWith(github.ref, 'refs/heads/release') }}
steps:
- name: Cancel previous runs
if: github.event_name != 'push'
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v3
- uses: coursier/setup-action@v1
with:
jvm: temurin:1.11.0.17
- name: Cache ivy packages
uses: actions/cache@v3
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: sbt-cache-${{ hashFiles('**/*.sbt') }}
restore-keys: sbt
- uses: actions/download-artifact@v3
with:
name: build-target
- name: Untar artifacts
shell: bash
run: tar xfz target.tgz
# We run k8s tests here instead of in integrationTests job because it causes RAM overhead and some other docker tests failing occasionally
- uses: AbsaOSS/k3d-action@v2.4.0
env:
PROJECT_ROOT: ${{ github.workspace }}
with:
cluster-name: "k3s-default"
k3d-version: "v5.6.0"
args: >-
--config=.k3d/single-cluster.yml
--trace
- name: Slow tests
env:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_EVENT_HUBS_SHARED_ACCESS_KEY_NAME: ${{ secrets.AZURE_EVENT_HUBS_SHARED_ACCESS_KEY_NAME }}
AZURE_EVENT_HUBS_SHARED_ACCESS_KEY: ${{ secrets.AZURE_EVENT_HUBS_SHARED_ACCESS_KEY }}
shell: bash
run: ./ciRunSbt.sh designer/Slow/test liteK8sDeploymentManager/ExternalDepsTests/test schemedKafkaComponentsUtils/ExternalDepsTests/test liteKafkaComponentsTests/ExternalDepsTests/test
- name: docker logs
if: success() || failure()
run: |
docker logs k3d-k3s-default-server-0
docker logs k3d-k3s-default-agent-0
docker logs k3d-k3s-default-serverlb
- name: Test Report
if: success() || failure()
uses: actions/upload-artifact@v3
with:
name: SlowTests-results-${{ matrix.scalaVersion }}
path: '**/test-reports/*.xml'
frontendTests:
name: FrontendTests
runs-on: ubuntu-latest
needs: [ setup ]
env:
# We can't just use conditional jobs mechanism ('if' directive) because 'publish' job depends on this one.
shouldPerformFrontendTests: ${{ needs.setup.outputs.fe_changes_count > 0 }}
steps:
- name: Cancel previous runs
if: ${{ env.shouldPerformFrontendTests == 'true' && github.event_name != 'push' }}
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v3
if: ${{ env.shouldPerformFrontendTests == 'true' }}
- name: Cache npm
id: cache-npm
if: ${{ env.shouldPerformFrontendTests == 'true' }}
uses: actions/cache@v3
with:
path: |
**/node_modules
~/.cache/Cypress
key: ${{ hashFiles('designer/client/package-lock.json', 'designer/client/.nvmrc', 'designer/submodules/package-lock.json', 'designer/submodules/.nvmrc') }}
- name: Get Node.js version
if: ${{ env.shouldPerformFrontendTests == 'true' }}
id: nvm
run: echo "NODE_VERSION=$(cat designer/client/.nvmrc)" >> $GITHUB_OUTPUT
- name: Use Node.js ${{ matrix.node-version }}
if: ${{ env.shouldPerformFrontendTests == 'true' }}
uses: actions/setup-node@v3
with:
node-version: ${{ steps.nvm.outputs.NODE_VERSION }}
- name: Download node modules
if: ${{ env.shouldPerformFrontendTests == 'true' && steps.cache-npm.outputs.cache-hit != 'true' }}
run: |
npm ci --no-audit --prefix designer/client
npm ci --no-audit --prefix designer/submodules
- name: Test FE
if: ${{ env.shouldPerformFrontendTests == 'true' }}
run: (cd designer/client; npm run test:unit)
- name: Test Report
if: ${{ env.shouldPerformFrontendTests == 'true' && (success() || failure()) }}
uses: actions/upload-artifact@v3
with:
name: FrontendTests-results
path: designer/client/junit.xml
cypressTests:
name: CypressTests
runs-on: self-hosted
needs: [ build, build-fe, setup ]
env:
# We skip docker build for fe-only changes. Would be more clean to split this step into two steps: build image and run tests
# e.g. by using ishworkh/docker-image-artifact-upload/download but it caused ~3min overhead for the whole pipeline so we
# have this conditional logic in this step. We force building images on our "special" branches because run between merges
# could cause that cypress tests will be run at stale image (because of cancel-workflow-action).
shouldBuildImage: ${{ needs.setup.outputs.fe_changes_count != needs.setup.outputs.all_changes_count || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/demo' || startsWith(github.ref, 'refs/heads/preview') || startsWith(github.ref, 'refs/heads/release') }}
GIT_SOURCE_BRANCH: ${{ needs.setup.outputs.git_source_branch }}
BE_PORT: 7251
steps:
- name: Cancel previous runs
if: github.event_name != 'push'
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
# On self-hosted runners, docker can have some obsolete containers. Because of that, we clean them all
- name: Clean all docker containers
shell: bash
run: |
c=$(docker ps -q)
[[ $c ]] && docker kill $c || echo "No container run"
- uses: actions/checkout@v3
- name: Get Node.js version
id: nvm
run: echo "NODE_VERSION=$(cat designer/client/.nvmrc)" >> $GITHUB_OUTPUT
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ steps.nvm.outputs.NODE_VERSION }}
- uses: coursier/setup-action@v1
if: ${{ env.shouldBuildImage == 'true' }}
with:
jvm: temurin:1.11.0.17
- name: Download node modules
run: |
export npm_config_cache=$(mktemp -d)
npm config ls -l | grep cache
npm ci --no-audit --prefix designer/client
npm ci --no-audit --prefix designer/submodules
rm -rf $npm_config_cache
- uses: actions/download-artifact@v3
if: ${{ env.shouldBuildImage == 'true' }}
with:
name: build-target
- name: Untar artifacts
if: ${{ env.shouldBuildImage == 'true' }}
shell: bash
run: tar xfz target.tgz
- uses: actions/download-artifact@v3
with:
name: build-fe-dist
- name: Untar fe artifacts
shell: bash
run: tar xfz fe-dist.tgz
- name: set version
if: ${{ env.shouldBuildImage == 'true' }}
shell: bash
run: echo "NUSSKNACKER_VERSION=${{ needs.setup.outputs.nk_snapshot_version }}" >> $GITHUB_ENV
- name: Prepare docker
if: ${{ env.shouldBuildImage == 'true' }}
env:
addDevArtifacts: true
shell: bash
#Doc generation is rather costly, we don't want it in test image creation
run: sbt "set ThisBuild / version := \"$NUSSKNACKER_VERSION\"; set ThisBuild / packageDoc / publishArtifact := false; set Compile / doc / sources := Seq.empty" dist/Docker/publishLocal
- name: Test docker
if: ${{env.shouldBuildImage == 'true' }}
shell: bash
working-directory: e2e-tests
run: ./setupAndRun.sh
- name: FE tests e2e on build docker image
if: ${{ env.shouldBuildImage == 'true' }}
env:
CYPRESS_SNAPSHOT_UPDATE: "true"
CYPRESS_BASE_URL: http://localhost:${{ env.BE_PORT }}
DOCKER_PULL_OPTION: never
shell: bash
run: |
cd designer/client
! npx wait-on -t 250 tcp:localhost:${{ env.BE_PORT }} 2> /dev/null || (echo "Port: ${BE_PORT} already in use!" && exit 1)
npx start-server-and-test backend:docker ${{ env.BE_PORT }} test:e2e
- name: Determine docker tag version to use
if: ${{ env.shouldBuildImage == 'false' }}
shell: bash
run: |
# Take a look at build.sbt commonDockerSettings to see how this tag is determined. Thanks to fact that we publish all changes pushed to our "special" branches it should work quite correctly.
NK_REF_VERSION=`[ "${GITHUB_REF}" != "" ] && echo "${GITHUB_REF}" | sed -e 's/refs\/heads\///g' -e 's/[^a-zA-Z0-9._-]/\_/g' -e 's/$/-latest/' | xargs -I VER sh -c 'docker pull touk/nussknacker:VER > /dev/null && echo VER || echo ""'`
NK_BASE_REF_VERSION=`[ "${NK_REF_VERSION}" != "" ] && echo "${NK_REF_VERSION}" || [ "${GITHUB_BASE_REF}" != "" ] && echo "${GITHUB_BASE_REF}" | sed -e 's/refs\/heads\///g' -e 's/[^a-zA-Z0-9._-]/\_/g' -e 's/$/-latest/' | xargs -I VER sh -c 'docker pull touk/nussknacker:VER > /dev/null && echo VER || echo ""'`
echo "NUSSKNACKER_VERSION=`[ \"${NK_BASE_REF_VERSION}\" != \"\" ] && echo \"${NK_BASE_REF_VERSION}\" || echo staging-latest`" >> $GITHUB_ENV
- name: FE tests e2e on pulled image
if: ${{ env.shouldBuildImage == 'false' }}
env:
CYPRESS_SNAPSHOT_UPDATE: "true"
shell: bash
run: |
cd designer/client
! npx wait-on -t 250 tcp:localhost:${{ env.BE_PORT }} 2> /dev/null || (echo "Port: ${BE_PORT} already in use!" && exit 1)
npx start-server-and-test backend:docker ${{ env.BE_PORT }} start-prod 3000 test:e2e
- name: Test Report
if: success() || failure()
uses: actions/upload-artifact@v3
with:
name: CypressTests-results
path: designer/client/cypress-test-results/*.xml
- name: Store test results
if: failure()
uses: actions/upload-artifact@v3
with:
name: e2e-test-results
path: |
docs/autoScreenshotChangeDocs/
designer/client/cypress/**/__image_snapshots__/
designer/client/cypress/screenshots/
designer/client/cypress/videos/
if-no-files-found: ignore
- name: Create Pull Request
id: update_snapshots
uses: peter-evans/create-pull-request@v4
if: always() && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository)
env:
HASH: ${{ format('#{0}', github.event.number) }}
BRANCH: ${{ needs.setup.outputs.git_source_branch }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
base: ${{ env.BRANCH }}
branch: snapshots-patch/${{ env.BRANCH }}
title: Update Cypress snapshots in ${{ env.BRANCH }}
commit-message: Updated snapshots
body: Updated snapshots in ${{ github.event_name == 'pull_request' && env.HASH || env.BRANCH}}
labels: cypress
- name: Comment PR
if: ${{ always() && github.event_name == 'pull_request' && steps.update_snapshots.outputs.pull-request-number }}
uses: thollander/actions-comment-pull-request@v2
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
message: |
${{ steps.update_snapshots.outputs.pull-request-operation }}: #${{ steps.update_snapshots.outputs.pull-request-number }}
:warning: Be careful! Snapshot changes are not necessarily the cause of the error. Check the logs.
comment_tag: snapshots_pr
- name: Force fail if update PR created
if: ${{ always() && github.event_name == 'pull_request' && steps.update_snapshots.outputs.pull-request-number }}
uses: actions/github-script@v6.3.3
with:
script: |
core.setFailed('Snapshots updated, chceck comments!')
#TODO: extract to different workflow?
publish:
runs-on: ubuntu-latest
needs: [build, build-fe, setup, tests, crossCompile, integrationTests, slowTests, frontendTests, cypressTests]
#TODO: should we publish everything on all those branches?
if: ${{ github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/demo' || startsWith(github.ref, 'refs/heads/preview') || startsWith(github.ref, 'refs/heads/release') }}
env:
#TODO: shouldn't be needed...
nexusUrl: https://oss.sonatype.org/content/repositories/snapshots
# We add dev model to staging because it is used in dev used on this environment, but we also add it for other branches for purpose of cypress tests
addDevArtifacts: true
NUSSKNACKER_VERSION: ${{ needs.setup.outputs.nk_snapshot_version }}
GIT_SOURCE_BRANCH: ${{ needs.setup.outputs.git_source_branch }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USER }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
steps:
- name: Cancel previous runs
if: github.event_name != 'push'
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v3
- uses: coursier/setup-action@v1
with:
jvm: temurin:1.11.0.17
- name: Cache ivy packages
uses: actions/cache@v3
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: sbt-cache-${{ hashFiles('**/*.sbt') }}
restore-keys: sbt
- uses: actions/download-artifact@v3
with:
name: build-target
- name: Untar artifacts
shell: bash
run: tar xfz target.tgz
- uses: actions/download-artifact@v3
with:
name: build-fe-dist
- name: Untar fe artifacts
shell: bash
run: tar xfz fe-dist.tgz
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Setup buildx builder
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64,linux/arm64
config-inline: |
[worker.oci]
max-parallelism = 1
- name: Try to free space
run: |
# Workaround to prevent "no space left on device" during buildx build - https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
sudo rm -rf /usr/local/lib/android
- name: Publish with scaladocs
if: ${{ github.ref == 'refs/heads/staging' }}
env:
# Workaround to preveent "no space left on device" during publishDocker failed to create temp dir: mkdir /tmp/containerd-mountXYZ
TMPDIR: ${{ github.workspace }}
shell: bash
#TODO: handle version better, do we want to publish docker image for older scala versions? If so, how should it be tagged?
run: sbt "set ThisBuild / version := \"$NUSSKNACKER_VERSION\"" +publish +dist/Docker/publish +liteEngineRuntimeApp/Docker/publish
- name: Publish without scaladocs
if: ${{ github.ref != 'refs/heads/staging' }}
env:
# Workaround to preveent "no space left on device" during publishDocker failed to create temp dir: mkdir /tmp/containerd-mountXYZ
TMPDIR: ${{ github.workspace }}
shell: bash
#TODO: handle version better, do we want to publish docker image for older scala versions? If so, how should it be tagged?
run: sbt "set ThisBuild / version := \"$NUSSKNACKER_VERSION\"; set ThisBuild / packageDoc / publishArtifact := false; set Compile / doc / sources := Seq.empty" +publish +dist/Docker/publish +liteEngineRuntimeApp/Docker/publish
trigger-external-build:
runs-on: ubuntu-latest
needs: [ setup, publish ]
if: ${{ github.ref == 'refs/heads/staging' }}
strategy:
matrix:
include:
- repo: nussknacker-helm
workflow_id: helm-test-workflow.yaml
ref: main
- repo: nussknacker-quickstart
workflow_id: pr.yml
ref: staging
- repo: nussknacker-quickstart
workflow_id: benchmark-workflow.yml
ref: staging
- repo: nussknacker-sample-components
workflow_id: pr.yml
ref: staging
- repo: nussknacker-flink-compatibility
workflow_id: test.yml
ref: staging
steps:
- uses: actions/github-script@v6
with:
github-token: ${{ secrets.ORG_TRIGGER_PAT_TOKEN }}
script: |
await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: '${{ matrix.repo }}',
workflow_id: '${{ matrix.workflow_id }}',
ref: '${{ matrix.ref }}',
inputs: {"nussknacker_version": "${{ needs.setup.outputs.nk_snapshot_version }}"}
})