name: Install OneClickInstall DocSpace on: pull_request: types: [opened, reopened, synchronize] paths: - '.github/workflows/ci-oci-install.yml' - 'install/OneClickInstall/**' - '!install/OneClickInstall/install-Docker.sh' - '!install/OneClickInstall/docspace-install.sh' schedule: - cron: '00 20 * * 6' # At 23:00 on Saturday. workflow_dispatch: inputs: centos8s: type: boolean description: 'CentOS 8 Stream' default: true centos9s: type: boolean description: 'CentOS 9 Stream' default: true debian11: type: boolean description: 'Debian 11' default: true debian12: type: boolean description: 'Debian 12' default: true ubuntu2004: type: boolean description: 'Ubuntu 20.04' default: true ubuntu2204: type: boolean description: 'Ubuntu 22.04' default: true ubuntu2404: type: boolean description: 'Ubuntu 24.04' default: true fedora39: type: boolean description: 'Fedora 39' default: true fedora40: type: boolean description: 'Fedora 40' default: true jobs: prepare: runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - name: Set matrix names id: set-matrix run: | matrix=$(echo '{ "include": [ {"execute": '${{ github.event.inputs.centos8s || true }}', "name": "CentOS8S", "os": "centos8s", "distr": "generic"}, {"execute": '${{ github.event.inputs.centos9s || true }}', "name": "CentOS9S", "os": "centos9s", "distr": "generic"}, {"execute": '${{ github.event.inputs.debian11 || true }}', "name": "Debian11", "os": "debian11", "distr": "generic"}, {"execute": '${{ github.event.inputs.debian12 || true }}', "name": "Debian12", "os": "debian12", "distr": "generic"}, {"execute": '${{ github.event.inputs.ubuntu2004 || true }}', "name": "Ubuntu20.04", "os": "ubuntu2004", "distr": "generic"}, {"execute": '${{ github.event.inputs.ubuntu2204 || true }}', "name": "Ubuntu22.04", "os": "ubuntu2204", "distr": "generic"}, {"execute": '${{ github.event.inputs.ubuntu2204 || true }}', "name": "Ubuntu24.04", "os": "ubuntu-24.04", "distr": "bento"}, {"execute": '${{ github.event.inputs.fedora39 || true }}', "name": "Fedora39", "os": "39-cloud-base", "distr": "fedora"}, {"execute": '${{ github.event.inputs.fedora40 || true }}', "name": "Fedora40", "os": "fedora-40", "distr": "bento"} ] }' | jq -c '{include: [.include[] | select(.execute == true)]}') echo "matrix=${matrix}" >> $GITHUB_OUTPUT vagrant-up: name: "Test DocSpace with ${{ matrix.name}}" runs-on: ubuntu-22.04 needs: prepare strategy: fail-fast: false matrix: ${{fromJSON(needs.prepare.outputs.matrix)}} steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python 3. uses: actions/setup-python@v5 with: python-version: '3.x' - name: Get update and install vagrant run: | set -eux sudo apt update -y sudo apt install vagrant virtualbox -y - name: Free Disk Space run: | sudo rm -rf /usr/local/lib/android /opt/ghc sudo docker image prune --all --force - name: "Test production scripts with ${{matrix.name}}" if: ${{ github.event_name == 'schedule' }} uses: nick-fields/retry@v3 with: max_attempts: 2 timeout_minutes: 80 retry_on: error command: | set -eux cd tests/vagrant TEST_CASE='--production-install' \ DISTR='${{ matrix.distr }}' \ OS='${{ matrix.os }}' \ DOWNLOAD_SCRIPT='-ds true' \ RAM='5100' \ CPU='3' \ ARGUMENTS="-arg '--skiphardwarecheck true'" \ vagrant up on_retry_command: | echo "RUN CLEAN UP: Destroy vagrant and one more try" cd tests/vagrant sleep 10 vagrant destroy --force - name: "Test Local scripts with ${{matrix.name}}" if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} uses: nick-fields/retry@v3 with: max_attempts: 2 timeout_minutes: 80 retry_on: error command: | set -eux cd tests/vagrant TEST_CASE='--local-install' \ DISTR='${{ matrix.distr }}' \ OS='${{matrix.os}}' \ RAM='5100' \ CPU='3' \ DOWNLOAD_SCRIPT='-ds false' \ TEST_REPO='-tr true' \ ARGUMENTS="-arg '--skiphardwarecheck true --localscripts true'" \ vagrant up on_retry_command: | echo "RUN CLEAN UP: Destroy vagrant and one more try" cd tests/vagrant sleep 10 vagrant destroy --force