Skip to content

chore: using spi for TimedAction and ESE #71

chore: using spi for TimedAction and ESE

chore: using spi for TimedAction and ESE #71

Workflow file for this run

name: CI
on:
pull_request:
paths-ignore:
- 'docs/**'
push:
branches:
- main
paths-ignore:
- 'docs/**'
tags-ignore:
- v*
permissions:
contents: read
concurrency:
# Only run once for latest commit per ref and cancel other (previous) runs.
group: samples-${{ github.ref }}
cancel-in-progress: true
jobs:
checks:
name: Basic checks
runs-on: ubuntu-22.04
steps:
- name: Checkout
# https://github.com/actions/checkout/releases
# v4.1.1
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Checkout GitHub merge
if: github.event.pull_request
run: |-
git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch
git checkout scratch
- name: Restore Coursier cache
# https://github.com/actions/cache/releases
# v4.0.2
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
with:
path: |
~/.cache/coursier
~/.sbt
~/.ivy2/cache
key: coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-${{ hashFiles('build.sbt', 'project/**.scala', 'project/**.sbt') }}
restore-keys: |
coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-${{ hashFiles('build.sbt', 'project/**.scala', 'project/**.sbt') }}
coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-
coursier-
- name: Set up JDK 21
# https://github.com/coursier/setup-action/releases
# v1.3.5
uses: coursier/setup-action@7bde40eee928896f074dbb76d22dd772eed5c65f
with:
jvm: temurin:1.21
- name: Run javafmt checks
run: |
sbt --client javafmtCheckAll || \
{ echo "[error] Code not formatted prior to commit. Run 'sbt javafmtAll' then commit the reformatted code."; false; }
- name: Run header checks
run: |
sbt --client headerCheckAll || \
{ echo "[error] Code missing headers prior to commit. Run 'sbt headerCreateAll' then commit the updated code."; false; }
- name: Run scalafmt checks
run: |
sbt --client "scalafmtCheckAll; scalafmtSbtCheck" || \
{ echo "[error] Code not formatted prior to commit. Run 'sbt scalafmtAll scalafmtSbt' then commit the reformatted code."; false; }
- name: sbt shutdown
run: |
sbt --client shutdown
publish-local:
name: Build and publish artifacts and plugins locally
runs-on: ubuntu-22.04
steps:
- name: Checkout
# https://github.com/actions/checkout/releases
# v4.1.1
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Checkout GitHub merge
if: github.event.pull_request
run: |-
git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch
git checkout scratch
- name: Cache Coursier cache
# https://github.com/actions/cache/releases
# v4.0.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
with:
path: |
~/.cache/coursier
~/.sbt
~/.ivy2/cache
key: coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-${{ hashFiles('build.sbt', 'project/**.scala', 'project/**.sbt') }}
restore-keys: |
coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-${{ hashFiles('build.sbt', 'project/**.scala', 'project/**.sbt') }}
coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-
coursier-
- name: Set up JDK 21
# https://github.com/coursier/setup-action/releases
# v1.3.5
uses: coursier/setup-action@7bde40eee928896f074dbb76d22dd772eed5c65f
with:
jvm: temurin:1.21
- name: Cache Maven repository
# https://github.com/actions/cache/releases
# v4.0.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('akka-javasdk-maven/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Build and publish artifacts and plugins
id: build_sdk
run: |-
sbt -Ddisable.apidocs=true publishM2 publishLocal
# the SDK_VERSION is later used to run the maven tests (see below)
.github/determine-sdk-version.sh
SDK_VERSION="$(cat ~/akka-javasdk-version.txt)"
echo "SDK version: '${SDK_VERSION}'"
- name: Build maven
run: |-
export SDK_VERSION=$(cat ~/akka-javasdk-version.txt)
cd akka-javasdk-maven
echo "Running maven with SDK version: '${SDK_VERSION}'"
../.github/patch-maven-versions.sh
mvn verify install --no-transfer-progress -Dskip.docker=true
- name: Package io.akka dependencies
run: |-
cd
tar -czf dependencies.tar.gz .m2/repository/io/akka/ .ivy2/local/io.akka/ akka-javasdk-version.txt
- name: Upload io.akka dependencies
# https://github.com/actions/upload-artifact/releases
# v4.3.2
uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba
with:
name: m2-cache
path: ~/dependencies.tar.gz
if-no-files-found: error
retention-days: 1
sbt-test:
name: Run sbt test
needs: [checks, publish-local]
runs-on: ubuntu-22.04
steps:
- name: Checkout
# https://github.com/actions/checkout/releases
# v4.1.1
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Checkout GitHub merge
if: github.event.pull_request
run: |-
git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch
git checkout scratch
- name: Restore Coursier cache
# https://github.com/actions/cache/releases
# v4.0.2
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
with:
path: |
~/.cache/coursier
~/.sbt
~/.ivy2/cache
key: coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-${{ hashFiles('build.sbt', 'project/**.scala', 'project/**.sbt') }}
restore-keys: |
coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-${{ hashFiles('build.sbt', 'project/**.scala', 'project/**.sbt') }}
coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-
coursier-
- name: Set up JDK 21
# https://github.com/coursier/setup-action/releases
# v1.3.5
uses: coursier/setup-action@7bde40eee928896f074dbb76d22dd772eed5c65f
with:
jvm: temurin:1.21
- name: Download io.akka dependencies
# https://github.com/actions/download-artifact/releases
# v4.1.5
uses: actions/download-artifact@8caf195ad4b1dee92908e23f56eeb0696f1dd42d
with:
name: m2-cache
path: ~/
- name: Unpack io.akka dependencies
run: |-
cd
tar -xf dependencies.tar.gz
- name: sbt test
run: sbt test
java-sdk-annotation-processor-test:
name: Run annotation processor tests
needs: [checks, publish-local]
runs-on: ubuntu-22.04
steps:
- name: Checkout
# https://github.com/actions/checkout/releases
# v4.1.1
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Checkout GitHub merge
if: github.event.pull_request
run: |-
git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch
git checkout scratch
- name: Restore Coursier cache
# https://github.com/actions/cache/releases
# v4.0.2
uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
with:
path: |
~/.cache/coursier
~/.sbt
~/.ivy2/cache
key: coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-${{ hashFiles('build.sbt', 'project/**.scala', 'project/**.sbt') }}
restore-keys: |
coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-${{ hashFiles('build.sbt', 'project/**.scala', 'project/**.sbt') }}
coursier-${{ hashFiles('project/plugins.sbt', 'project/build.properties') }}-
coursier-
- name: Set up JDK 21
# https://github.com/coursier/setup-action/releases
# v1.3.5
uses: coursier/setup-action@7bde40eee928896f074dbb76d22dd772eed5c65f
with:
jvm: temurin:1.21
- name: Download io.akka dependencies
# https://github.com/actions/download-artifact/releases
# v4.1.5
uses: actions/download-artifact@8caf195ad4b1dee92908e23f56eeb0696f1dd42d
with:
name: m2-cache
path: ~/
- name: Unpack io.akka dependencies
run: |-
cd
tar -xf dependencies.tar.gz
- name: Compile and Run annotation-processor-tests
run: sbt "akka-javasdk-annotation-processor-tests/compile;akka-javasdk-annotation-processor-tests/test"
check-docker-image-contents:
name: Check service docker image contents
needs: [ checks, publish-local ] # usually done via now disabled check-samples-in-ci
runs-on: ubuntu-22.04
steps:
- name: Checkout
# https://github.com/actions/checkout/releases
# v4.1.1
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Checkout GitHub merge
if: github.event.pull_request
run: |-
git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch
git checkout scratch
- name: Set up JDK 21
# https://github.com/coursier/setup-action/releases
# v1.3.5
uses: coursier/setup-action@7bde40eee928896f074dbb76d22dd772eed5c65f
with:
jvm: temurin:1.21
- name: Cache Maven repository
# https://github.com/actions/cache/releases
# v4.0.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('akka-javasdk-maven/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Download io.akka dependencies
# https://github.com/actions/download-artifact/releases
# v4.1.5
uses: actions/download-artifact@8caf195ad4b1dee92908e23f56eeb0696f1dd42d
with:
name: m2-cache
path: ~/
- name: Unpack io.akka dependencies
run: |-
cd
tar -xf dependencies.tar.gz
- name: Update sdk version in shopping-cart-quickstart
run: |-
export SDK_VERSION=$(cat ~/akka-javasdk-version.txt)
./updateSdkVersions.sh java samples/shopping-cart-quickstart
- name: Verify shopping-cart-quickstart docker build
run: |-
export SDK_VERSION=$(cat ~/akka-javasdk-version.txt)
cd samples/shopping-cart-quickstart
mvn install --no-transfer-progress
echo "Docker image contents"
tar tvf target/docker/shopping-cart-quickstart/latest/tmp/docker-build.tar
tar tvf target/docker/shopping-cart-quickstart/latest/tmp/docker-build.tar > content-list.txt
for artifact in "akka-actor" "akka-http-core" "kalix-dev-runtime"
do
if grep -q "$artifact" "content-list.txt"; then
echo "Docker image contained $artifact, it shouldn't"
exit 1
fi
done
maven-samples:
name: Maven samples
# needs: check-samples-in-ci
needs: [checks, publish-local] # usually done via now disabled check-samples-in-ci
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- { sample: shopping-cart-quickstart, it: true }
- { sample: choreography-saga-quickstart, it: true }
- { sample: doc-snippets, it: false }
- { sample: view-store, it: true }
- { sample: spring-dependency-injection, it: true }
- { sample: event-sourced-customer-registry, it: true }
- { sample: event-sourced-counter-brokers, pre_cmd: 'docker compose up -d', it: true }
- { sample: event-sourced-customer-registry-subscriber, it: true, pre_cmd: './start-upstream.sh' }
- { sample: key-value-counter, it: true }
- { sample: key-value-shopping-cart, it: true }
- { sample: key-value-customer-registry, it: true }
- { sample: tracing, it: false }
- { sample: reliable-timers, it: true }
- { sample: transfer-workflow, it: true }
- { sample: transfer-workflow-compensation, it: true }
steps:
- name: Checkout
# https://github.com/actions/checkout/releases
# v4.1.1
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- name: Checkout GitHub merge
if: github.event.pull_request
run: |-
git fetch origin pull/${{ github.event.pull_request.number }}/merge:scratch
git checkout scratch
- name: Set up JDK 21
# https://github.com/coursier/setup-action/releases
# v1.3.5
uses: coursier/setup-action@7bde40eee928896f074dbb76d22dd772eed5c65f
with:
jvm: temurin:1.21
- name: Cache Maven repository
# https://github.com/actions/cache/releases
# v4.0.2
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('akka-javasdk-maven/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Download io.akka dependencies
# https://github.com/actions/download-artifact/releases
# v4.1.5
uses: actions/download-artifact@8caf195ad4b1dee92908e23f56eeb0696f1dd42d
with:
name: m2-cache
path: ~/
- name: Unpack io.akka dependencies
run: |-
cd
tar -xf dependencies.tar.gz
- name: Update sdk version in samples
run: |-
export SDK_VERSION=$(cat ~/akka-javasdk-version.txt)
./updateSdkVersions.sh java samples/
- name: ${{ matrix.sample }} test-compile
env:
DIR: ${{ matrix.sample }}
run: |-
export SDK_VERSION=$(cat ~/akka-javasdk-version.txt)
cd samples/${DIR}
echo "Running mvn on ${DIR} with SDK version: '${SDK_VERSION}'"
# must also compile without the profile!
mvn test-compile --no-transfer-progress
- name: ${{ matrix.sample }} verify
if: matrix.verify || matrix.it
env:
DIR: ${{ matrix.sample }}
PRE_CMD: ${{ matrix.pre_cmd }}
run: |-
export SDK_VERSION=$(cat ~/akka-javasdk-version.txt)
./updateSdkVersions.sh java samples/${DIR}
cd samples/${DIR}
if [ true == '${{matrix.verify}}' ]; then
mvn verify --no-transfer-progress
fi
if [ true == '${{matrix.it}}' ]; then
${PRE_CMD}
KALIX_TESTKIT_DEBUG=true mvn verify -Pit --no-transfer-progress
fi
- name: ${{ matrix.sample }} rm & test-compile
env:
DIR: ${{ matrix.sample }}
run: |-
export SDK_VERSION=$(cat ~/akka-javasdk-version.txt)
cd samples/${DIR}
echo "==== Verifying that generated unmanaged sources compile ===="
rm -rf src/main/java src/test/java src/it/java
mvn test-compile --no-transfer-progress