From c97627335839e83e6013bf672275072f40dbce69 Mon Sep 17 00:00:00 2001 From: slinkydeveloper Date: Mon, 5 Aug 2024 17:06:29 +0200 Subject: [PATCH] Prepare integration.yaml for embedding in runtime repo --- .github/workflows/integration.yaml | 118 +++++++++++++++++++++++++++++ .github/workflows/test.yaml | 46 ----------- 2 files changed, 118 insertions(+), 46 deletions(-) create mode 100644 .github/workflows/integration.yaml diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml new file mode 100644 index 0000000..456de89 --- /dev/null +++ b/.github/workflows/integration.yaml @@ -0,0 +1,118 @@ +name: Integration + +# Controls when the workflow will run +on: + pull_request: + push: + branches: + - main + schedule: + - cron: '0 */6 * * *' # Every 6 hours + workflow_dispatch: + inputs: + restateCommit: + description: 'restate commit' + required: false + default: '' + type: string + restateImage: + description: 'restate image, superseded by restate commit' + required: false + default: 'ghcr.io/restatedev/restate:main' + type: string + workflow_call: + inputs: + restateCommit: + description: 'restate commit' + required: false + default: '' + type: string + restateImage: + description: 'restate image, superseded by restate commit' + required: false + default: 'ghcr.io/restatedev/restate:main' + type: string + +jobs: + sdk-test-suite: + if: github.repository_owner == 'restatedev' + runs-on: ubuntu-latest + name: "Features integration test (sdk-test-suite version ${{ matrix.sdk-test-suite }})" + strategy: + matrix: + sdk-test-suite: [ "1.4" ] + permissions: + contents: read + issues: read + checks: write + pull-requests: write + actions: read + + steps: + - uses: actions/checkout@v4 + with: + repository: restatedev/sdk-go + + ### Download the Restate container image, if needed + # Setup restate snapshot if necessary + # Due to https://github.com/actions/upload-artifact/issues/53 + # We must use download-artifact to get artifacts created during *this* workflow run, ie by workflow call + - name: Download restate snapshot from in-progress workflow + if: ${{ inputs.restateCommit != '' && github.event_name != 'workflow_dispatch' }} + uses: actions/download-artifact@v4 + with: + name: restate.tar + # In the workflow dispatch case where the artifact was created in a previous run, we can download as normal + - name: Download restate snapshot from completed workflow + if: ${{ inputs.restateCommit != '' && github.event_name == 'workflow_dispatch' }} + uses: dawidd6/action-download-artifact@v3 + with: + repo: restatedev/restate + workflow: ci.yml + commit: ${{ inputs.restateCommit }} + name: restate.tar + - name: Install restate snapshot + if: ${{ inputs.restateCommit != '' }} + run: | + output=$(docker load --input restate.tar) + docker tag "${output#*: }" "localhost/restatedev/restate-commit-download:latest" + docker image ls -a + + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version: "1.21.x" + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + - name: Setup ko + uses: ko-build/setup-ko@v0.6 + - name: Setup sdk-test-suite + run: wget --no-verbose https://github.com/restatedev/sdk-test-suite/releases/download/v${{ matrix.sdk-test-suite }}/restate-sdk-test-suite.jar + + # Build docker image + - name: Install dependencies + run: go get . + - name: Build Docker image + run: KO_DOCKER_REPO=restatedev ko build -B -L github.com/restatedev/sdk-go/test-services + + # Run test suite + - name: Run test suite + env: + RESTATE_CONTAINER_IMAGE: ${{ inputs.restateCommit != '' && 'localhost/restatedev/restate-commit-download:latest' || (inputs.restateImage != '' && inputs.restateImage || 'ghcr.io/restatedev/restate:main') }} + run: java -jar restate-sdk-test-suite.jar run --report-dir=test-report --exclusions-file test-services/exclusions.yaml restatedev/test-services + + # Upload logs and publish test result + - uses: actions/upload-artifact@v4 + if: always() # Make sure this is run even when test fails + with: + name: test-report + path: test-report + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + if: always() + with: + files: | + test-report/*/*.xml diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index cb9eca9..c4760a4 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -23,49 +23,3 @@ jobs: run: go build -v ./... - name: Test with the Go CLI run: go test -v ./... - - sdk-test-suite: - runs-on: ubuntu-latest - name: "Integration Test (Test tool ${{ matrix.sdk-test-suite }})" - strategy: - matrix: - sdk-test-suite: [ "1.4" ] - - steps: - - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v4 - with: - go-version: "1.21.x" - - name: Setup Java - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '17' - - name: Setup ko - uses: ko-build/setup-ko@v0.6 - - name: Setup sdk-test-suite - run: wget --no-verbose https://github.com/restatedev/sdk-test-suite/releases/download/v${{ matrix.sdk-test-suite }}/restate-sdk-test-suite.jar - - # Build docker image - - name: Install dependencies - run: go get . - - name: Build Docker image - run: KO_DOCKER_REPO=restatedev ko build -B -L github.com/restatedev/sdk-go/test-services - - # Run test suite - - name: Run test suite - run: java -jar restate-sdk-test-suite.jar run --report-dir=test-report --exclusions-file test-services/exclusions.yaml restatedev/test-services - - # Upload logs and publish test result - - uses: actions/upload-artifact@v4 - if: always() # Make sure this is run even when test fails - with: - name: test-report - path: test-report - - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 - if: always() - with: - files: | - test-report/*/*.xml