Refactor gam command execution in build workflow

This commit is contained in:
Jay Lee
2026-03-01 19:40:52 -05:00
committed by GitHub
parent 377201614b
commit 36b2849f20

View File

@@ -860,16 +860,30 @@ jobs:
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
run: |
run_gam() {
echo "::group::gam $*"
$gam "$@"
local exit_code=$?
echo "::endgroup::"
if [ $exit_code -eq 0 ]; then
echo "| \`gam $*\` | 🟢 Pass |" >> $GITHUB_STEP_SUMMARY
else
echo "| \`gam $*\` | 🔴 Fail |" >> $GITHUB_STEP_SUMMARY
exit $exit_code
local allowed_codes="0"
if [[ "$1" == "-a" ]]; then
allowed_codes="$2"
shift 2
fi
echo "::group::Executing: gam $*"
local exit_code=0
$gam "$@" || exit_code=$?
echo "::endgroup::"
allowed_codes="${allowed_codes//,/ }"
local passed=false
for code in $allowed_codes; do
if [ "$exit_code" -eq "$code" ]; then
passed=true
break
fi
done
if [ "$passed" = true ]; then
echo "| \`gam $*\` | 🟢 Pass | $exit_code |" >> $GITHUB_STEP_SUMMARY
return 0 # Mask the allowed non-zero exit code so GHA continues
else
echo "| \`gam $*\` | 🔴 Fail | $exit_code |" >> $GITHUB_STEP_SUMMARY
exit $exit_code # Hard fail the step for unapproved errors
fi
}
export gam_user="gam-gha-${JID}@pdl.jaylee.us"
@@ -900,18 +914,29 @@ jobs:
# cleanup old runs
run_gam config enable_dasa false save
$gam config csv_output_row_filter "name:regex:gha_test_${JID}_" print vaultholds | $gam csv - gam delete vaulthold "id:~~holdId~~" matter "id:~~matterId~~" || if [ $? != 55 ]; then exit $?; fi
$gam config csv_output_row_filter "name:regex:gha_test_${JID}_" print vaultmatters matterstate OPEN | $gam csv - gam update vaultmatter "id:~~matterId~~" action close
$gam config csv_output_row_filter "name:regex:gha_test_${JID}_" print vaultmatters matterstate CLOSED | $gam csv - gam update vaultmatter "id:~~matterId~~" action delete
$gam config csv_output_row_filter "Emails.1.address:regex:^gha_test-${JID}_" print contacts | $gam csv - gam delete contact ~ContactID
run_gam config csv_output_row_filter "name:regex:gha_test_${JID}_" redirect csv vh.csv print vaultholds
run_gam -a "0 55" csv vh.csv gam delete vaulthold "id:~~holdId~~" matter "id:~~matterId~~"
run_gam config csv_output_row_filter "name:regex:gha_test_${JID}_" redirect csv vm-open.csv print vaultmatters matterstate OPEN
run_gam csv vm-open.csv gam update vaultmatter "id:~~matterId~~" action close
run_gam config csv_output_row_filter "name:regex:gha_test_${JID}_" redirect csv vm-closed.csv print vaultmatters matterstate CLOSED
run_gam csv vm-closed.csv gam update vaultmatter "id:~~matterId~~" action delete
run_gam config csv_output_row_filter "Emails.1.address:regex:^gha_test-${JID}_" redirect csv contacts.csv print contacts
run-gam csv contacts.csv gam delete contact ~ContactID
run_gam config enable_dasa true save
$gam config csv_output_row_filter "name:regex:gha_test_${JID}_" print features | $gam csv - gam delete feature ~name
$gam config csv_output_row_filter "name:regex:^gha_test_${JID}_" user $gam_user print shareddrives asadmin | $gam csv - gam user $gam_user delete shareddrive ~id nukefromorbit
$gam print users query "gha.jid=$JID" | $gam csv - gam delete user ~primaryEmail
$gam config csv_output_row_filter "name:regex:^gha_test_${JID}_" print ous fromparent "aaaGithub Actions" | $gam csv - gam delete ou ~orgUnitId
$gam config csv_output_row_filter "email:regex:^gha_test_${JID}_" print cigroups | $gam csv - gam delete cigroup ~email
$gam config csv_output_row_filter "resourceId:regex:^gha_test_${JID}_" print resources | $gam csv - gam delete resource ~resourceId
$gam config csv_output_row_filter "buildingId:regex:^gha_test_${JID}_" print buildings | $gam csv - gam delete building ~buildingId
run_gam config csv_output_row_filter "name:regex:gha_test_${JID}_" redirect csv features.csv print features
run_gam csv features.csv gam delete feature ~name
run_gam config csv_output_row_filter "name:regex:^gha_test_${JID}_" redirect csv sd.csv user $gam_user print shareddrives asadmin
run_gam csv sd.csv gam user $gam_user delete shareddrive ~id nukefromorbit
run_gam redirect csv users.csv print users query "gha.jid=$JID"
run_gam csv users.csv gam delete user ~primaryEmail
run_gam config csv_output_row_filter "name:regex:^gha_test_${JID}_" redirect csv ous.csv print ous fromparent "aaaGithub Actions"
run_gam csv ous.csv gam delete ou ~orgUnitId
run_gam config csv_output_row_filter "email:regex:^gha_test_${JID}_" redirect csv cigroups.csv print cigroups
run_gam csv cigroups.csv gam delete cigroup ~email
run_gam config csv_output_row_filter "resourceId:regex:^gha_test_${JID}_" redirect csv resources.csv print resources
run_gam csv resources gam delete resource ~resourceId
run_gam config csv_output_row_filter "buildingId:regex:^gha_test_${JID}_" redirect csv buildings.csv print buildings
run_gam csv buildings.csv gam delete building ~buildingId
echo "Creating OrgUnit ${newou}"
run_gam create ou "${newou}"
@@ -976,11 +1001,12 @@ jobs:
run_gam user $gam_user draftemail subject "GHA draft $newbase" message "Draft message test"
run_gam csvfile sample.csv:email waitformailbox retries 20
run_gam user $newuser delegate to "${newbase}-bulkuser-1" || if [ $? != 50 ]; then exit $?; fi # expect a 50 return code (delegation failed)
$gam users "$gam_user $newbase-bulkuser-1 $newbase-bulkuser-2 $newbase-bulkuser-3" delete messages query in:anywhere maxtodelete 99999 doit || if [ $? != 60 ]; then exit $?; fi # expect a 60 return code (no messages)
$gam users "$newbase-bulkuser-4 $newbase-bulkuser-5 $newbase-bulkuser-6" trash messages query in:anywhere maxtotrash 99999 doit || if [ $? != 60 ]; then exit $?; fi # expect a 60 return code (no messages)
$gam users "$newbase-bulkuser-7 $newbase-bulkuser-8 $newbase-bulkuser-9" modify messages query in:anywhere maxtomodify 99999 addlabel IMPORTANT addlabel STARRED doit || if [ $? != 60 ]; then exit $?; fi # expect a 60 return code (no messages)
run_gam -a "0 60" users "$gam_user $newbase-bulkuser-1 $newbase-bulkuser-2 $newbase-bulkuser-3" delete messages query in:anywhere maxtodelete 99999 doit
run_gam -a "0 60" users "$newbase-bulkuser-4 $newbase-bulkuser-5 $newbase-bulkuser-6" trash messages query in:anywhere maxtotrash 99999 doit
run_gam -a "0 60" users "$newbase-bulkuser-7 $newbase-bulkuser-8 $newbase-bulkuser-9" modify messages query in:anywhere maxtomodify 99999 addlabel IMPORTANT addlabel STARRED doit
run_gam user $newuser delete label --ALL_LABELS--
$gam config csv_output_row_filter "name:regex:gha-test-${JID}" print features | $gam csv - gam delete feature ~name
run_gam config csv_output_row_filter "name:regex:gha-test-${JID}" redirect csv features.csv print features
run_gam csv features.csv gam delete feature ~name
run_gam create feature name VC-$newbase
run_gam create feature name Whiteboard-$newbase
run_gam create building "My Building - $newbase" id $newbuilding floors 1,2,3,4,5,6,7,8,9,10,11,12,14,15 description "No 13th floor here..."
@@ -988,12 +1014,14 @@ jobs:
run_gam info resource $newresource
run_gam user $newuser add drivefile drivefilename "TPS Reports" mimetype gfolder
run_gam user $newuser show filelist
$gam calendar $gam_user printacl | $gam csv - gam calendar $gam_user delete ~id # clear ACLs
run_gam redirect csv cal-acl.csv calendar $gam_user printacl
run_gam csv cal-acl.csv gam calendar $gam_user delete ~id # clear ACLs
run_gam calendar $gam_user add read domain
run_gam calendar $gam_user add freebusy default
run_gam calendar $gam_user add editor $newuser
run_gam calendar $gam_user showacl
$gam calendar $gam_user printacl | $gam csv - gam calendar $gam_user delete ~id
run_gam redirect csv cal-acl.csv calendar $gam_user printacl
run_gam csv cal-acl.csv gam calendar $gam_user delete ~id
run_gam calendar $gam_user addevent summary "GHA test event" start +1h end +2h attendee $newgroup hangoutsmeet guestscanmodify true sendupdates all
run_gam calendar $gam_user printevents after -0d
run_gam config enable_dasa false save
@@ -1003,7 +1031,8 @@ jobs:
run_gam print vaultholds matter $matterid
run_gam print vaultcount matter $matterid corpus mail everyone todrive tdnobrowser
run_gam create vaultexport matter $matterid name "GHA export $newbase" corpus mail ou "$newou"
$gam print exports matter $matterid | $gam csv - gam info export $matterid id:~~id~~
run_gam redirect csv exports.csv print exports matter $matterid
run_gam csv exports.csv gam info export $matterid id:~~id~~
run_gam config enable_dasa true save
run_gam csv sample.csv gam user ~email add calendar id:$newresource
run_gam delete resource $newresource
@@ -1016,24 +1045,27 @@ jobs:
run_gam user $newuser delete license workspaceenterpriseplus
echo finish
run_gam config enable_dasa true save
$gam whatis $newuser || if [ $? != 20 ]; then exit $?; fi # expect a 20 return code (is a user)
run_gam -a "0 20" whatis $newuser
run_gam user $gam_user show tokens
run_gam config enable_dasa false save
download_dir="${RUNNER_TEMP}/TEMP_DELETE_ME"
mkdir -v "$download_dir"
$gam print exports matter $matterid | $gam csv - gam download export $matterid id:~~id~~ targetfolder "$download_dir"
run_gam redirect csv exports.csv print exports matter $matterid
run_gam csv exports.csv gam download export $matterid id:~~id~~ targetfolder "$download_dir"
rm -rvf "$download_dir"
run_gam delete hold "GHA hold $newbase" matter $matterid
run_gam update matter $matterid action close
run_gam update matter $matterid action delete
# shakes off vault hold on user so we can delete
$gam print users query "email:${newuser}" orgunitpath | $gam csv - gam update user ~primaryEmail ou ~orgUnitPath
run_gam redirect csv users.csv print users query "email:${newuser}" orgunitpath
run-gam csv users.csv gam update user ~primaryEmail ou ~orgUnitPath
run_gam user $newuser show holds || if [ $? != 55 ]; then exit $?; fi # expect a 55 return code
export sn="$JID$JID$JID$JID-$(openssl rand -base64 32 | sed 's/[^a-zA-Z0-9]//g')"
run_gam create device serialnumber $sn devicetype android
run_gam delete contacts emailmatchpattern "^${newbase}@example.com$"
run_gam config enable_dasa true save
$gam print users query "gha.jid=$JID" | $gam csv - gam delete user ~primaryEmail || if [ $? != 50 ]; then exit $?; fi # expect a 50 return code (vault hold on user)
run_gam redirect csv users.csv print users query "gha.jid=$JID"
run-gam -a "0 50" csv users.csv gam delete user ~primaryEmail
run_gam print mobile
run_gam print devices clientstates
run_gam print browsers
@@ -1045,10 +1077,12 @@ jobs:
#run_gam report users fields accounts:is_less_secure_apps_access_allowed,gmail:last_imap_time,gmail:last_pop_time filters "accounts:last_login_time>2025-01-01T00:00:00.000Z" todrive tdnobrowser
run_gam report users todrive tdnobrowser
run_gam report admin start -3d todrive tdnobrowser
$gam print devices nopersonaldevices nodeviceusers filter "serial:$JID$JID$JID$JID-" | $gam csv - gam delete device id ~name
run_gam redirect csv devices.csv print devices nopersonaldevices nodeviceusers filter "serial:$JID$JID$JID$JID-"
run_gam csv devices.csv gam delete device id ~name
run_gam config enable_dasa false save
run_gam print userinvitations
$gam print userinvitations | $gam csv - gam send userinvitation ~name
run_gam redirect csv invitations.csv print userinvitations
run-gam csv invitations.csv gam send userinvitation ~name
run_gam config enable_dasa false save
run_gam create caalevel "zzz_${newbase}" basic condition ipsubnetworks 1.1.1.1/32,2.2.2.2/32 endcondition
run_gam print caalevels
@@ -1068,7 +1102,7 @@ jobs:
echo "printer model count:"
run_gam print printermodels | wc -l
run_gam print printers
printerid=$(run_gam create printer displayname "${newbase}" uri ipp://localhost:631 driverless description "made by ${gam_user}" ou "${newou}" nodetails | awk '{print substr($2, 1, length($2)-1)}')
printerid=$($gam create printer displayname "${newbase}" uri ipp://localhost:631 driverless description "made by ${gam_user}" ou "${newou}" nodetails | awk '{print substr($2, 1, length($2)-1)}')
run_gam info printer "$printerid"
run_gam delete printer "$printerid"
run_gam delete ou "${newou}"