add truenas ci jobs

Signed-off-by: Travis Glenn Hansen <travisghansen@yahoo.com>
This commit is contained in:
Travis Glenn Hansen 2021-09-28 21:55:53 -06:00
parent 9b107de721
commit 55e1c89be1
10 changed files with 306 additions and 20 deletions

View File

@ -21,28 +21,15 @@ jobs:
strategy: strategy:
matrix: matrix:
config: config:
- synlogy-iscsi/default.yaml - synlogy/iscsi.yaml
runs-on: runs-on:
- self-hosted - self-hosted
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: csi-sanity - name: csi-sanity
run: | run: |
export PATH="/usr/local/lib/nodejs/bin:${PATH}" # run tests
# install deps ci/bin/run.sh
npm i
# generate key for paths etc
export CI_BUILD_KEY=$(uuidgen)
# launch the server
sudo -E ci/bin/launch-server.sh &
# wait for server to launch
sleep 10
# launch csi-sanity
sudo -E ci/bin/launch-csi-sanity.sh
env: env:
TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}" TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}"
SYNOLOGY_HOST: ${{ secrets.SANITY_SYNOLOGY_HOST }} SYNOLOGY_HOST: ${{ secrets.SANITY_SYNOLOGY_HOST }}
@ -50,11 +37,56 @@ jobs:
SYNOLOGY_USERNAME: ${{ secrets.SANITY_SYNOLOGY_USERNAME }} SYNOLOGY_USERNAME: ${{ secrets.SANITY_SYNOLOGY_USERNAME }}
SYNOLOGY_PASSWORD: ${{ secrets.SANITY_SYNOLOGY_PASSWORD }} SYNOLOGY_PASSWORD: ${{ secrets.SANITY_SYNOLOGY_PASSWORD }}
SYNOLOGY_VOLUME: ${{ secrets.SANITY_SYNOLOGY_VOLUME }} SYNOLOGY_VOLUME: ${{ secrets.SANITY_SYNOLOGY_VOLUME }}
TARGET_PORTAL: ${{ secrets.SANITY_SYNOLOGY_TARGET_PORTAL }}
# api-based drivers
csi-sanity-truenas-scale:
strategy:
matrix:
config:
- truenas/scale-iscsi.yaml
- truenas/scale-nfs.yaml
- truenas/scale-smb.yaml
runs-on:
- self-hosted
steps:
- uses: actions/checkout@v2
- name: csi-sanity
run: |
# run tests
ci/bin/run.sh
env:
TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}"
TRUENAS_HOST: ${{ secrets.SANITY_TRUENAS_SCALE_HOST }}
TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_SCALE_USERNAME }}
TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_SCALE_PASSWORD }}
# ssh-based drivers
csi-sanity-truenas-core:
strategy:
matrix:
config:
- truenas/core-iscsi.yaml
- truenas/core-nfs.yaml
- truenas/core-smb.yaml
runs-on:
- self-hosted
steps:
- uses: actions/checkout@v2
- name: csi-sanity
run: |
# run tests
ci/bin/run.sh
env:
TEMPLATE_CONFIG_FILE: "./ci/configs/${{ matrix.config }}"
TRUENAS_HOST: ${{ secrets.SANITY_TRUENAS_CORE_HOST }}
TRUENAS_USERNAME: ${{ secrets.SANITY_TRUENAS_CORE_USERNAME }}
TRUENAS_PASSWORD: ${{ secrets.SANITY_TRUENAS_CORE_PASSWORD }}
build: build:
needs: needs:
- csi-sanity-synology - csi-sanity-synology
- csi-sanity-truenas-scale
- csi-sanity-truenas-core
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2

View File

@ -8,9 +8,10 @@ set -x
: ${CSI_MODE:=""} : ${CSI_MODE:=""}
: ${CSI_VERSION:="1.5.0"} : ${CSI_VERSION:="1.5.0"}
: ${CSI_ENDPOINT:=/tmp/csi-${CI_BUILD_KEY}.sock} : ${CSI_ENDPOINT:=/tmp/csi-${CI_BUILD_KEY}.sock}
: ${LOG_PATH:=/tmp/csi-${CI_BUILD_KEY}.log}
if [[ "x${CONFIG_FILE}" == "x" ]];then if [[ "x${CONFIG_FILE}" == "x" ]];then
: ${CONFIG_FILE:=$(mktemp -t ci-csi-config-XXXXXXXX)} : ${CONFIG_FILE:=/tmp/csi-config-${CI_BUILD_KEY}.yaml}
if [[ "x${TEMPLATE_CONFIG_FILE}" != "x" ]];then if [[ "x${TEMPLATE_CONFIG_FILE}" != "x" ]];then
envsubst < "${TEMPLATE_CONFIG_FILE}" > "${CONFIG_FILE}" envsubst < "${TEMPLATE_CONFIG_FILE}" > "${CONFIG_FILE}"
@ -21,4 +22,5 @@ if [[ "x${CSI_MODE}" != "x" ]];then
EXTRA_ARGS="--csi-mode ${CSI_MODE} ${EXTRA_ARGS}" EXTRA_ARGS="--csi-mode ${CSI_MODE} ${EXTRA_ARGS}"
fi fi
# > "${LOG_PATH}" 2>&1
./bin/democratic-csi --log-level debug --driver-config-file "${CONFIG_FILE}" --csi-version "${CSI_VERSION}" --csi-name "driver-test" --server-socket "${CSI_ENDPOINT}" ${EXTRA_ARGS} ./bin/democratic-csi --log-level debug --driver-config-file "${CONFIG_FILE}" --csi-version "${CSI_VERSION}" --csi-name "driver-test" --server-socket "${CSI_ENDPOINT}" ${EXTRA_ARGS}

20
ci/bin/run.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
set -e
set -x
export PATH="/usr/local/lib/nodejs/bin:${PATH}"
# install deps
npm i
# generate key for paths etc
export CI_BUILD_KEY=$(uuidgen | cut -d "-" -f 1)
# launch the server
sudo -E ci/bin/launch-server.sh &
# wait for server to launch
sleep 10
# launch csi-sanity
sudo -E ci/bin/launch-csi-sanity.sh

View File

@ -13,10 +13,10 @@ synology:
volume: ${SYNOLOGY_VOLUME} volume: ${SYNOLOGY_VOLUME}
iscsi: iscsi:
targetPortal: ${TARGET_PORTAL} targetPortal: ${SYNOLOGY_HOST}
targetPortals: [] targetPortals: []
baseiqn: "iqn.2000-01.com.synology:XpenoDsm62x." baseiqn: "iqn.2000-01.com.synology:XpenoDsm62x."
namePrefix: "csi-${CI_BUILD_KEY}" namePrefix: "csi-${CI_BUILD_KEY}-"
nameSuffix: "-ci" nameSuffix: "-ci"
lunTemplate: lunTemplate:

View File

@ -0,0 +1,31 @@
driver: freenas-api-iscsi
httpConnection:
protocol: http
host: ${TRUENAS_HOST}
port: 80
#apiKey:
username: ${TRUENAS_USERNAME}
password: ${TRUENAS_PASSWORD}
zfs:
datasetParentName: tank/ci/${CI_BUILD_KEY}/v
detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s
zvolCompression:
zvolDedup:
zvolEnableReservation: false
zvolBlocksize:
iscsi:
targetPortal: ${TRUENAS_HOST}
interface: ""
namePrefix: "csi-ci-${CI_BUILD_KEY}"
nameSuffix: ""
targetGroups:
- targetGroupPortalGroup: 1
targetGroupInitiatorGroup: 1
targetGroupAuthType: None
targetGroupAuthGroup:
# 0-100 (0 == ignore)
extentAvailThreshold: 0

View File

@ -0,0 +1,29 @@
driver: freenas-api-nfs
httpConnection:
protocol: http
host: ${TRUENAS_HOST}
port: 80
#apiKey:
username: ${TRUENAS_USERNAME}
password: ${TRUENAS_PASSWORD}
zfs:
datasetParentName: tank/ci/${CI_BUILD_KEY}/v
detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s
datasetEnableQuotas: true
datasetEnableReservation: true
datasetPermissionsMode: "0777"
datasetPermissionsUser: 0
datasetPermissionsGroup: 0
nfs:
shareHost: ${TRUENAS_HOST}
shareAlldirs: false
shareAllowedHosts: []
shareAllowedNetworks: []
shareMaprootUser: root
shareMaprootGroup: wheel
shareMapallUser: ""
shareMapallGroup: ""

View File

@ -0,0 +1,56 @@
driver: freenas-api-smb
httpConnection:
protocol: http
host: ${TRUENAS_HOST}
port: 80
#apiKey:
username: ${TRUENAS_USERNAME}
password: ${TRUENAS_PASSWORD}
zfs:
datasetProperties:
# smb options
#aclmode: restricted
#casesensitivity: mixed
datasetParentName: tank/ci/${CI_BUILD_KEY}/v
detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s
datasetEnableQuotas: true
datasetEnableReservation: true
datasetPermissionsMode: "0777"
datasetPermissionsUser: 0
datasetPermissionsGroup: 0
# for smb with guest
#datasetPermissionsUser: nobody
#datasetPermissionsGroup: nobody
#datasetPermissionsGroup: root
#datasetPermissionsAcls:
#- "-m everyone@:full_set:allow"
#datasetPermissionsAcls:
#- "-m u:kube:full_set:allow"
smb:
shareHost: ${TRUENAS_HOST}
#nameTemplate: ""
namePrefix: "csi-ci-${CI_BUILD_KEY}"
nameSuffix: ""
shareAuxiliaryConfigurationTemplate: |
#guest ok = yes
#guest only = yes
shareHome: false
shareAllowedHosts: []
shareDeniedHosts: []
#shareDefaultPermissions: true
shareGuestOk: true
#shareGuestOnly: true
#shareShowHiddenFiles: true
shareRecycleBin: true
shareBrowsable: false
shareAccessBasedEnumeration: true
shareTimeMachine: false
#shareStorageTask:

View File

@ -0,0 +1,31 @@
driver: freenas-api-iscsi
httpConnection:
protocol: http
host: ${TRUENAS_HOST}
port: 80
#apiKey:
username: ${TRUENAS_USERNAME}
password: ${TRUENAS_PASSWORD}
zfs:
datasetParentName: tank/ci/${CI_BUILD_KEY}/v
detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s
zvolCompression:
zvolDedup:
zvolEnableReservation: false
zvolBlocksize:
iscsi:
targetPortal: ${TRUENAS_HOST}
interface: ""
namePrefix: "csi-ci-${CI_BUILD_KEY}"
nameSuffix: ""
targetGroups:
- targetGroupPortalGroup: 1
targetGroupInitiatorGroup: 1
targetGroupAuthType: None
targetGroupAuthGroup:
# 0-100 (0 == ignore)
extentAvailThreshold: 0

View File

@ -0,0 +1,29 @@
driver: freenas-api-nfs
httpConnection:
protocol: http
host: ${TRUENAS_HOST}
port: 80
#apiKey:
username: ${TRUENAS_USERNAME}
password: ${TRUENAS_PASSWORD}
zfs:
datasetParentName: tank/ci/${CI_BUILD_KEY}/v
detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s
datasetEnableQuotas: true
datasetEnableReservation: true
datasetPermissionsMode: "0777"
datasetPermissionsUser: 0
datasetPermissionsGroup: 0
nfs:
shareHost: ${TRUENAS_HOST}
shareAlldirs: false
shareAllowedHosts: []
shareAllowedNetworks: []
shareMaprootUser: root
shareMaprootGroup: root
shareMapallUser: ""
shareMapallGroup: ""

View File

@ -0,0 +1,56 @@
driver: freenas-api-smb
httpConnection:
protocol: http
host: ${TRUENAS_HOST}
port: 80
#apiKey:
username: ${TRUENAS_USERNAME}
password: ${TRUENAS_PASSWORD}
zfs:
datasetProperties:
# smb options
#aclmode: restricted
#casesensitivity: mixed
datasetParentName: tank/ci/${CI_BUILD_KEY}/v
detachedSnapshotsDatasetParentName: tank/ci/${CI_BUILD_KEY}/s
datasetEnableQuotas: true
datasetEnableReservation: true
datasetPermissionsMode: "0777"
datasetPermissionsUser: 0
datasetPermissionsGroup: 0
# for smb with guest
#datasetPermissionsUser: nobody
#datasetPermissionsGroup: nobody
#datasetPermissionsGroup: root
#datasetPermissionsAcls:
#- "-m everyone@:full_set:allow"
#datasetPermissionsAcls:
#- "-m u:kube:full_set:allow"
smb:
shareHost: ${TRUENAS_HOST}
#nameTemplate: ""
namePrefix: "csi-ci-${CI_BUILD_KEY}"
nameSuffix: ""
shareAuxiliaryConfigurationTemplate: |
#guest ok = yes
#guest only = yes
shareHome: false
shareAllowedHosts: []
shareDeniedHosts: []
#shareDefaultPermissions: true
shareGuestOk: true
#shareGuestOnly: true
#shareShowHiddenFiles: true
shareRecycleBin: true
shareBrowsable: false
shareAccessBasedEnumeration: true
shareTimeMachine: false
#shareStorageTask: