Nightly release #258
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/[email protected] | |
- 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/[email protected] | |
- 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 }}/ |