Nightly release #224
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: Nightly release | |
on: | |
schedule: | |
- cron: '0 5 * * 1-5' | |
workflow_dispatch: | |
pull_request: | |
paths: | |
- '.github/workflows/nightly.yml' | |
- '.github/workflows/build_clio_docker_image.yml' | |
jobs: | |
build: | |
name: Build clio | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos14 | |
build_type: Release | |
static: false | |
- os: heavy | |
build_type: Release | |
static: true | |
container: | |
image: rippleci/clio_ci:latest | |
- os: heavy | |
build_type: Debug | |
static: true | |
container: | |
image: rippleci/clio_ci:latest | |
runs-on: [self-hosted, "${{ matrix.os }}"] | |
container: ${{ matrix.container }} | |
steps: | |
- name: Clean workdir | |
if: ${{ runner.os == 'macOS' }} | |
uses: kuznetsss/workspace-cleanup@1.0 | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Prepare runner | |
uses: ./.github/actions/prepare_runner | |
with: | |
disable_ccache: true | |
- name: Setup conan | |
uses: ./.github/actions/setup_conan | |
id: conan | |
with: | |
conan_profile: gcc | |
- name: Run conan and cmake | |
uses: ./.github/actions/generate | |
with: | |
conan_profile: ${{ steps.conan.outputs.conan_profile }} | |
conan_cache_hit: ${{ steps.restore_cache.outputs.conan_cache_hit }} | |
build_type: ${{ matrix.build_type }} | |
static: ${{ matrix.static }} | |
- name: Build Clio | |
uses: ./.github/actions/build_clio | |
- name: Strip tests | |
run: strip build/clio_tests && strip build/clio_integration_tests | |
- name: Upload clio_tests | |
uses: actions/upload-artifact@v4 | |
with: | |
name: clio_tests_${{ runner.os }}_${{ matrix.build_type }} | |
path: build/clio_*tests | |
- name: Upload test data | |
uses: actions/upload-artifact@v4 | |
with: | |
name: clio_test_data_${{ runner.os }}_${{ matrix.build_type }} | |
path: build/tests/unit/test_data | |
- name: Compress clio_server | |
shell: bash | |
run: | | |
cd build | |
tar czf ./clio_server_${{ runner.os }}_${{ matrix.build_type }}.tar.gz ./clio_server | |
- name: Upload clio_server | |
uses: actions/upload-artifact@v4 | |
with: | |
name: clio_server_${{ runner.os }}_${{ matrix.build_type }} | |
path: build/clio_server_${{ runner.os }}_${{ matrix.build_type }}.tar.gz | |
run_tests: | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: macos14 | |
build_type: Release | |
integration_tests: false | |
- os: heavy | |
build_type: Release | |
container: | |
image: rippleci/clio_ci:latest | |
integration_tests: true | |
- os: heavy | |
build_type: Debug | |
container: | |
image: rippleci/clio_ci:latest | |
integration_tests: true | |
runs-on: [self-hosted, "${{ matrix.os }}"] | |
container: ${{ matrix.container }} | |
services: | |
scylladb: | |
image: ${{ (matrix.integration_tests) && 'scylladb/scylla' || '' }} | |
options: >- | |
--health-cmd "cqlsh -e 'describe cluster'" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
steps: | |
- name: Clean workdir | |
if: ${{ runner.os == 'macOS' }} | |
uses: kuznetsss/workspace-cleanup@1.0 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: clio_tests_${{ runner.os }}_${{ matrix.build_type }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: clio_test_data_${{ runner.os }}_${{ matrix.build_type }} | |
path: tests/unit/test_data | |
- name: Run clio_tests | |
run: | | |
chmod +x ./clio_tests | |
./clio_tests | |
# To be enabled back once docker in mac runner arrives | |
# https://github.com/XRPLF/clio/issues/1400 | |
- name: Run clio_integration_tests | |
if: matrix.integration_tests | |
run: | | |
chmod +x ./clio_integration_tests | |
./clio_integration_tests --backend_host=scylladb | |
nightly_release: | |
if: ${{ github.event_name != 'pull_request' }} | |
needs: run_tests | |
runs-on: ubuntu-20.04 | |
env: | |
GH_REPO: ${{ github.repository }} | |
GH_TOKEN: ${{ github.token }} | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
path: nightly_release | |
pattern: clio_server_* | |
- name: Prepare files | |
shell: bash | |
run: | | |
cp ${{ github.workspace }}/.github/workflows/nightly_notes.md "${RUNNER_TEMP}/nightly_notes.md" | |
cd nightly_release | |
for d in $(ls); do | |
archive_name=$(ls $d) | |
mv ${d}/${archive_name} ./ | |
rm -r $d | |
sha256sum ./$archive_name > ./${archive_name}.sha256sum | |
cat ./$archive_name.sha256sum >> "${RUNNER_TEMP}/nightly_notes.md" | |
done | |
echo '```' >> "${RUNNER_TEMP}/nightly_notes.md" | |
- name: Remove current nightly release and nightly tag | |
shell: bash | |
run: | | |
gh release delete nightly --yes || true | |
git push origin :nightly || true | |
- name: Publish nightly release | |
shell: bash | |
run: | | |
gh release create nightly --prerelease --title "Clio development (nightly) build" \ | |
--target $GITHUB_SHA --notes-file "${RUNNER_TEMP}/nightly_notes.md" \ | |
./nightly_release/clio_server* | |
build_and_publish_docker_image: | |
uses: ./.github/workflows/build_clio_docker_image.yml | |
needs: run_tests | |
secrets: inherit | |
with: | |
tags: | | |
type=raw,value=nightly | |
type=raw,value=${{ github.sha }} | |
artifact_name: clio_server_Linux_Release | |
strip_binary: true | |
publish_image: ${{ github.event_name != 'pull_request' }} | |
create_issue_on_failure: | |
needs: [build, run_tests, nightly_release, build_and_publish_docker_image] | |
if: ${{ always() && contains(needs.*.result, 'failure') && github.event_name != 'pull_request' }} | |
runs-on: ubuntu-20.04 | |
permissions: | |
contents: write | |
issues: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create an issue | |
uses: ./.github/actions/create_issue | |
env: | |
GH_TOKEN: ${{ github.token }} | |
with: | |
title: 'Nightly release failed 🌙' | |
body: > | |
Nightly release failed: | |
Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/ |