chore: using spi for TimedAction and ESE #71
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 | |
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 |