Skip to content

chore: GHA to smoke test against last released exemplar #4

chore: GHA to smoke test against last released exemplar

chore: GHA to smoke test against last released exemplar #4

Workflow file for this run

on:
pull_request:
merge_group:
name: SmokeTest
concurrency:
group: ${{ github.ref }}-smoketest
cancel-in-progress: true
jobs:
smoke-test-upgrade-path:
name: Smoke Test Upgrade Path
# if: github.event_name != 'pull_request' || github.event.action == 'enqueued' || contains( github.event.pull_request.labels.*.name, 'run-all')
runs-on: ubuntu-latest
steps:
- name: Checkout the repository with full history
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
fetch-depth: 0
fetch-tags: true
- name: Get last tagged release
run: |
latest_release=$(git tag --sort=-v:refname | grep -v v1 | head -n 1)
echo "Latest release: $latest_release"
echo "LATEST_VERSION=${latest_release#v}" >> "$GITHUB_ENV"
- name: Check out the last tagged release
uses: actions/checkout@v4
with:
ref: v${{ env.LATEST_VERSION }}
fetch-depth: 1
fetch-tags: true
# - name: Download the release images
# uses: dsaltares/fetch-gh-release-asset@master
# with:
# repo: TBD54566975/ftl.git
# version: tags/v${{ env.LATEST_VERSION }}
# file: ftl-${{ env.LATEST_VERSION }}.linux-arm64.tar.gz
# token: ${{ secrets.GITHUB_TOKEN }}
# target: last-release.linux-arm64.tar.gz
- name: Download the last tagged release asset
run: |
set -euo pipefail
release_url="https://github.com/TBD54566975/ftl/releases/download/v${{ env.LATEST_VERSION }}/ftl-{{ env.LATEST_VERSION }}.linux-amd64.tar.gz"
echo "Fetching latest release asset from: $release_url"
curl -L "$release_url" --output last-release.linux-amd64.tar.gz
- name: Replace deployment with release images
run: |
set -euo pipefail
ls -al .
mkdir -p last-release
tar -xzf last-release.linux-arm64.tar.gz -C last-release
if [ ! -f last-release/ftl ]; then
echo "Error: 'ftl' binary not found in the extracted files."
exit 1
fi
cp last-release/ftl ./build/devel/ftl
cp last-release/ftl ./build/release/ftl
- name: Check out the current smoke test
uses: actions/checkout@v4
with:
clean: false
repository: TBD54566975/ftl.git
path: tmpsmoketest
ref: ${{ github.head_ref }}
fetch-depth: 0
sparse-checkout: smoketest
sparse-checkout-cone-mode: false
- name: Init Hermit
uses: cashapp/activate-hermit@v1
with:
cache: true
- name: Build Cache
uses: ./.github/actions/build-cache
- name: Docker Compose
run: docker compose up -d --wait
- name: Create DB
run: just init-db
- name: Download Go Modules
run: go mod download
- name: Smoke test the tagged release
run: |
set -euo pipefail
echo "Replacing released exemplar with current exemplar"
rm -r ./smoketest && mv ./tmpsmoketest/smoketest ./smoketest && rm -r ./tmpsmoketest
echo "Running current smoke test on the tagged release"
go test -v -tags smoketest -run '^Test' ./smoketest
# Next step is to build the FTL from HEAD, deploy it to the cluster, and run the smoke test
- name: Archive Report
uses: actions/upload-artifact@v4
if: always()
with:
name: kube-report-smoke-test-upgrade
path: /tmp/ftl-kube-report/