1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
name: CI
on:
merge_group:
pull_request:
push:
branches:
- main
tags:
- rolling-release-*
- v[0-9]+.[0-9]+.[0-9]+
- v[0-9]+.[0-9]+.[0-9]+-*
paths:
- ".github/**"
- "**/*.ml*"
- "**/*.liq"
- "**/src/js/*"
- "**/dune"
- "**/dune.inc"
- "doc/**"
- "dune-project"
- "scripts/**"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build_details:
runs-on: depot-ubuntu-24.04-4
outputs:
branch: ${{ steps.build_details.outputs.branch }}
sha: ${{ steps.build_details.outputs.sha }}
is_release: ${{ steps.build_details.outputs.is_release }}
is_rolling_release: ${{ steps.build_details.outputs.is_rolling_release }}
is_fork: ${{ steps.build_details.outputs.is_fork }}
publish_docker_image: ${{ steps.build_details.outputs.is_fork != 'true' && github.event_name != 'merge_group' }}
build_os: ${{ steps.build_details.outputs.build_os }}
build_platform: ${{ steps.build_details.outputs.build_platform }}
build_include: ${{ steps.build_details.outputs.build_include }}
docker_release: ${{ steps.build_details.outputs.docker_release }}
minimal_exclude_deps: ${{ steps.build_details.outputs.minimal_exclude_deps }}
save_traces: ${{ steps.build_details.outputs.save_traces }}
is_snapshot: ${{ steps.build_details.outputs.is_snapshot }}
ocaml_version: ${{ steps.build_details.outputs.ocaml_version }}
ocaml_docker_release_version: ${{ steps.build_details.outputs.ocaml_docker_release_version }}
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Get build details
env:
IS_FORK: ${{ github.event.pull_request.head.repo.fork == true }}
run: .github/scripts/build-details.sh
id: build_details
build_no_depopts:
uses: ./.github/workflows/build-no-depopts.yml
needs: build_details
with:
sha: ${{ github.sha }}
minimal_exclude_deps: ${{ needs.build_details.outputs.minimal_exclude_deps }}
build_js:
uses: ./.github/workflows/js.yml
needs: build_details
with:
sha: ${{ github.sha }}
branch: ${{ needs.build_details.outputs.branch }}
parsers:
uses: ./.github/workflows/parsers.yml
build_opam:
uses: ./.github/workflows/build-opam.yml
run_tests:
uses: ./.github/workflows/tests.yml
needs: build_details
with:
sha: ${{ github.sha }}
branch: ${{ needs.build_details.outputs.branch }}
is_fork: ${{ needs.build_details.outputs.is_fork }}
save_traces: ${{ needs.build_details.outputs.save_traces }}
build_posix:
uses: ./.github/workflows/build-posix.yml
needs: build_details
with:
sha: ${{ github.sha }}
branch: ${{ needs.build_details.outputs.branch }}
is_fork: ${{ needs.build_details.outputs.is_fork }}
is_rolling_release: ${{ needs.build_details.outputs.is_rolling_release }}
is_release: ${{ needs.build_details.outputs.is_release }}
is_snapshot: ${{ needs.build_details.outputs.is_snapshot }}
build_os: ${{ needs.build_details.outputs.build_os }}
build_platform: ${{ needs.build_details.outputs.build_platform }}
build_include: ${{ needs.build_details.outputs.build_include }}
ocaml_version: ${{ needs.build_details.outputs.ocaml_version }}
minimal_exclude_deps: ${{ needs.build_details.outputs.minimal_exclude_deps }}
build_win32:
uses: ./.github/workflows/build-win32.yml
needs: build_details
with:
sha: ${{ github.sha }}
branch: ${{ needs.build_details.outputs.branch }}
is_rolling_release: ${{ needs.build_details.outputs.is_rolling_release }}
is_release: ${{ needs.build_details.outputs.is_release }}
is_snapshot: ${{ needs.build_details.outputs.is_snapshot }}
update_doc:
uses: ./.github/workflows/doc.yml
needs: [build_details, build_js]
if: github.event_name != 'pull_request' && github.repository_owner == 'savonet' && needs.build_details.outputs.branch == 'main'
with:
sha: ${{ github.sha }}
branch: ${{ needs.build_details.outputs.branch }}
secrets:
WEBSITE_TOKEN: ${{ secrets.WEBSITE_TOKEN }}
update_release:
uses: ./.github/workflows/release.yml
needs:
[
build_details,
build_no_depopts,
build_js,
run_tests,
build_posix,
build_win32,
]
if: needs.build_details.outputs.is_release == 'true'
with:
sha: ${{ needs.build_details.outputs.sha }}
branch: ${{ needs.build_details.outputs.branch }}
is_rolling_release: ${{ needs.build_details.outputs.is_rolling_release }}
secrets:
LIQUIDSOAP_RELEASE_ASSETS_TOKEN: ${{ secrets.LIQUIDSOAP_RELEASE_ASSETS_TOKEN }}
build_docker:
uses: ./.github/workflows/docker.yml
needs: [build_details, build_posix, run_tests]
with:
sha: ${{ needs.build_details.outputs.sha }}
branch: ${{ needs.build_details.outputs.branch }}
is_fork: ${{ needs.build_details.outputs.is_fork }}
publish_docker_image: ${{ needs.build_details.outputs.publish_docker_image }}
docker_release: ${{ needs.build_details.outputs.docker_release }}
build_platform: ${{ needs.build_details.outputs.build_platform }}
build_include: ${{ needs.build_details.outputs.build_include }}
ocaml_version: ${{ needs.build_details.outputs.ocaml_version }}
ocaml_docker_release_version: ${{ needs.build_details.outputs.ocaml_docker_release_version }}
secrets:
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
|