178 lines
6.3 KiB
YAML
178 lines
6.3 KiB
YAML
name: Install OneClickInstall DocSpace
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, reopened, synchronize]
|
|
paths:
|
|
- '.github/workflows/ci-oci-install.yml'
|
|
- 'install/OneClickInstall/install-Debian/**'
|
|
- 'install/OneClickInstall/install-RedHat/**'
|
|
- 'install/OneClickInstall/install-Debian.sh'
|
|
- 'install/OneClickInstall/install-RedHat.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: Checkout code
|
|
if: github.event_name == 'pull_request'
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Determine affected distributions
|
|
id: determine-distros
|
|
if: github.event_name == 'pull_request'
|
|
run: |
|
|
CHANGED_FILES=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }})
|
|
echo "debian_changed=$(echo "$CHANGED_FILES" | grep -q 'install-Debian' && echo true || echo false)" >> $GITHUB_ENV
|
|
echo "redhat_changed=$(echo "$CHANGED_FILES" | grep -q 'install-RedHat' && echo true || echo false)" >> $GITHUB_ENV
|
|
|
|
- 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.ubuntu2404 || 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')
|
|
|
|
matrix=$(jq -c --arg REDHAT_CHANGED "${{ env.redhat_changed }}" --arg DEBIAN_CHANGED "${{ env.debian_changed }}" '
|
|
{ include: [.[] | select(
|
|
($REDHAT_CHANGED == "true" and $DEBIAN_CHANGED == "true" and .execute == true) or
|
|
($REDHAT_CHANGED == "true" and (.name | test("CentOS|Fedora"))) or
|
|
($DEBIAN_CHANGED == "true" and (.name | test("Debian|Ubuntu"))) or
|
|
($REDHAT_CHANGED == "false" and $DEBIAN_CHANGED == "false" and .execute == true))]
|
|
}' <<< "$matrix")
|
|
|
|
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
|