diff --git a/.github/actions/spelling/advice.md b/.github/actions/spelling/advice.md new file mode 100644 index 0000000..965eba6 --- /dev/null +++ b/.github/actions/spelling/advice.md @@ -0,0 +1,6 @@ + + +---- + +:pen: Please consider adding a word to the [allow list](allow.txt) if it is flagged as a spelling error but is genuinely used within the project. +:thinking: Think we might see a flagged mistake in another PR in the future? Please consider adding it as an [expected pattern](patterns.txt) diff --git a/.github/actions/spelling/allow.txt b/.github/actions/spelling/allow.txt new file mode 100644 index 0000000..2c68442 --- /dev/null +++ b/.github/actions/spelling/allow.txt @@ -0,0 +1,784 @@ +AAD +aad +AAPSV +aat +ABCD +abcd +acme +acmebot +acmedtssdstest +acr +ActiveGate +activegate +activegates +ada +adf +adminkey +ADMINPW +admins +adoptopenjdk +aee +AFAFDC +afds +afdverify +afe +afm +Ahmed +aks +aksmsnode +alertmanager +alex +allejo +AllPay +allpay +alphagov +alx +Ansible +ansible +apastuhov +apim +AppAttach +appattach +appinsights +AppInsights +apps +artifactory +asr +atim +autoconfigure +autorest +autoscaler +AZP +azuread +azureadmin +azurecr +azuredevops +azureedge +azurefd +azureidentities +azureidentity +azureidentitybinding +azurerm +azuresynapse +backports +baf +BAIS +bais +barrelsby +bau +bdcf +bfaac +bfbce +bfe +bintray +bitnami +blobstorage +blockquote +BODYCONTENT +botkube +bpftool +BPM +bpm +builtfrom +Burtonshaw +busyboxplus +Cairbre +Camunda +camunda +caseman +cbad +ccd +cdk +cdn +cdnverify +cec +Centera +certficates +certs +cfb +CFBF +cft +cftapps +cftprod +cftptl +cftptlintsvc +cftsbox +checkstyle +Chinnareddyvari +CJS +clamav +clcerts +cleardown +cloudapp +cloudbees +cmu +cnp +codeowners +colorizes +commonmarker +comodoca +contino +Corsham +cpeecosystemcache +cpeentry +CPlat +cppdev +crd +CRD +crds +CRDs +crictl +crimeportal +crmpdrepo +crt +CRT +CSRs +ctl +Customisation +customise +customised +cve +CVE +cves +CVEs +cyclomatic +cytool +Datacenter +datadisk +datadisks +datastore +dba +DBaa +dblink +dburl +dcd +dce +dcuser +deno +Deregisters +deserialise +destage +Destage +Destages +Destaging +DETS +dfac +dfff +dfs +dfsg +dhclient +Diskimage +dlrm +dmz +DMZ +docmosis +Docmosis +dra +dts +dtspo +dynakubes +dynatrace +dynatracegateway +dyntrace +Dyntrace +eab +ebc +ebcea +ebe +ecf +edgeconnects +edu +efabe +eftbais +elkadmin +Entra +entra +envsubst +erb +erubis +ethon +eus +eventmachine +ewnn +excludesfile +execjs +Exim +exim +expressjs +Extenda +EXTERNALSPOKE +EXTSVC +fastimage +fbbf +FBF +fcc +fdc +fdisk +ffe +ffi +Firefox +firewalls +fluentbit +fluxcd +fluxcdbot +fluxcloud +flywaydb +FNI +forgerock +Fortigate +Fortigates +Fortinet +Fri +frontdoor +Frontdoors +frontends +frx +fsevent +Fsl +FSlogix +FTPS +fxa +fxr +Gandi +ghpages +gitops +gitpod +gitrepositories +gkf +glimr +globalscape +gobject +googling +Gotcha +gotchas +gotk +govuk +gradle +gradlew +Grafana +hackernoon +haml +hashie +HDD +helmrelease +helmreleases +helpwithcourtfees +hmcts +hmctsfslogixnonprodstor +hmctsfslogixprodstor +hmctsprivate +hmctsprod +hmctspublic +hmctssbox +hmi +HMRC +hns +hotspot +howto +hpa +Iaa +IaaS +iain +IAsync +idam +idamvaultprod +idm +ifas +imagepolicies +imagepolicy +imagerepositories +imagerepository +img +inbox +inotify +Intelli +IntelliJ +intsvc +ipam +irqbalance +Islam +ithc +itnext +ITSM +jattach +javascripts +javatester +jayne +JBOX +JCas +jcmd +jdbase +jdbc +jdk +jenkins +jenkinsci +jenkinsfile +jenkinsssh +jfr +jfrog +JIRA +jmc +JML +JOBLOG +jpa +jps +JRE +jsonpath +jumpbox +jumpboxes +jvm +Karthik +keda +keyvault +keyvaults +klu +knownexploited +kpatch +kramdown +krew +kubectl +kubectx +kubernetes +kured +kustomization +kustomizations +kustomize +kvaps +langpacks +LASTEXITCODE +LATESTIMAGE +lec +letsencrypt +libpolkit +libwbclient +lifecycle +linting +liskov +loadbalance +loadbalancer +localadmin +Logix +logix +lsb +Lsbox +ltd +luigibk +lvc +macbook +macrotask +mafr +mailrelay +makepfx +mangan +Mangans +maxed +maxsize +mcol +mdvdmzjumpl +memoist +mgmt +microservices +microsoft +microtask +misconfiguring +misrouted +mklink +Mohammed +MOJ +mojvpn +Mon +monzo +mountfs +mountvol +MPD +MPDDMZJUMPL +MPDJUMPL +msix +MSIXAA +MSIXAACT +msixbundle +MSIXSS +msnode +mswin +MTAs +multibranch +multipage +mxtool +myaccess +myapps +myusername +Nabil +NATs +NCAPS +NCMAN +ncsc +NDEVOPS +neil +nessuscli +netacl +Neuvector +neuvector +newansible +nfrs +ngmodules +ngrx +nic +Nickin +NICs +NINT +NLE +NMCOL +NOAG +noarch +nocerts +nocrl +NOEM +nokeys +nokogiri +NONINFRINGEMENT +nonprod +nonprodi +noopener +NOPASSWORD +NPCOL +npmjs +NSDT +nsenter +NSG +NSUPS +nta +NTRANS +omsconfig +omsconfigdetailed +onboarded +oneagent +oneagentctl +oneagents +onpush +ooc +opsconfman +oride +osba +oss +OTP +owasp +owaspdependency +owaspdependencycheck +owide +paa +PaaS +palo +panoramaprodukssa +panoramasboxukssa +parslet +PCAPS +PCMAN +pcol +pcq +PDEVOPS +perftest +pfxpassword +pgadmin +pgdump +pid +PID +pid +PIDs +pinlady +pipeable +platops +pls +PMCOL +POAG +portile +possessionclaim +postgre +postgres +postgresql +PPCOL +prebuild +prebuilds +prioritise +privatedns +privatelink +probateman +prodbastion +projectacronym +Protips +PSDT +PSUPS +ptl +PTL +ptlsbox +PTLsbox +pwpush +QAs +racc +Rawstorne +rdbms +rdo +RDWEB +recordsets +redcarpet +redhat +RedHat +rediss +refactorings +referenceid +reformmgmtrg +reformscanaat +reformscanprod +reformscanstaging +releasever +replicasets +repolist +RESTful +retagging +rexml +RHBA +rhel +RHSA +rhscl +rhui +Roamable +rpe +rpms +rse +rubygems +runbook +runbooks +rvm +SaaS +sassc +Sat +sbox +scaledjob +scaledjobs +scaleset +scalesets +scm +SCM +screenshots +sdrs +SDRS +sdshmcts +sdsprod +SDSPTL +SDT +secops +SecOps +servicebus +servicenow +ServiceNow +servolux +sharedservices +SHAREDSERVICESPTL +showpad +shuttername +Shuttersolution +Sitaram +slackernoon +SLAs +slf +SNOW +snyk +SOGs +sonarcloud +sonarqube +spective +spellcheck +splunk +splunkcolddata +splunkdata +spotinstance +springauth +springframework +sscs +sscscor +sshconfig +sshkey +sshpass +sso +ssptl +ssrs +stackoverflow +stakeholders +Staticfile +statuspage +stv +styleguide +subdomain +Sun +svcs +svpn +swaks +SWAKS +Swissknife +synchronised +tabindex +tablist +tabpanel +tamops +templated +templating +terraform +terraformversion +tfcmt +tfenv +Tful +tfvar +tfvars +TGL +Thu +TLS +tmsh +tnc +toboardingextnonprodstor +toc +toml +Touhidul +TProgress +traefik +Traefik +TResult +triaged +TRO +tsv +Tted +ttfunk +ttl +Tue +typescriptlang +ufw +uks +uksouth +ukssa +uninstaller +unsubscribe +untick +updateinfo +upgradable +usr +vaultcore +versioned +Versioning +vhd +vhdx +viewpage +vm +VM +vmdisks +vms +VMs +vmss +vnet +Vnets +VNets +Vodafone +VWAN +waagent +WAl +WCAG +wdm +webpage +webrick +website +Websites +Wed +wikipedia +Wildfly +willw +workflows +wowza +wxyz +Xaa +XDELETE +xdr +XDR +XLATES +xmlp +XSIAM +xss +xui +xuimanag +xxd +yamls +yml +zalando +zeitwerk +Zubair +privatelink +azuresynapse +dfs +vaultcore +svcs +XLATES +VWAN +VNets +Tted +Fortigates +Fortinet +synchronised +Burtonshaw +cytool +oneagents +oneagentctl +azureadmin +loadbalance +mdvdmzjumpl +MPD +MPDJUMPL +Customisation +customised +screenshots +BODYCONTENT +SNAT +panoramaprodukssa +panoramasboxukssa +uks +ukssa +lsb +ufw +Zubair +ATL +resolvconf +apikey +cjscp +maillog +nlv +nessusagent +nfd +eas +Widdowson +Pankaj +mpdjumpl +Satya +Chundur +DARPC +DARPCs +optimisation +servicenowprodukssa +DLQ +XGET +sqladmin +mklabel +gpt +mkpart +mnt +servicenowrestore +zcat +rapidgzip +mkdir +cnf +vcore +joblog +cmdb +Serivce +Sevice +AADUSER +Gharssa +acdf +faa +PUBLICLAW +serviceaccounts +hashivault \ No newline at end of file diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt new file mode 100644 index 0000000..4c0e776 --- /dev/null +++ b/.github/actions/spelling/excludes.txt @@ -0,0 +1,16 @@ +ignore$ +\.png$ +\.svg$ +\.drawio$ +\.t$ +^LICENSE\.txt$ +^\Gemfile* +^\Gemfile.lock +^\Qsource/Certificates/forms/SSL-Certificate-Request-Form.docx\E$ +(?:^|/)accounts\.html\.md\.erb$ +pmd +DEVJUMPL +mpd +onlineplea +wafcc +APIGW \ No newline at end of file diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt new file mode 100644 index 0000000..5d452b4 --- /dev/null +++ b/.github/actions/spelling/expect.txt @@ -0,0 +1,193 @@ +CODEOWNERS +HMCTS +Staticfile +dotnet +excludesfile +iml +monkeyc +terraform +tfstate +tfvars +acmehmctssoc +ACNF +ACRD +aeb +Afresco +agentpool +agw +AJRA +alfapp +alfweb +APIGW +appdir +ASNs +aso +atlassian +atlassiannonprod +atlasssian +azurewebsite +AZDO +azinfra +azmk +azsftp +azureserviceoperator +bacpac +bak +Bance +bdf +blogs +cabcdefg +CAHOSTVERIFY +cdef +cdes +Chirag +CJSC +connecttimeout +containerised +copyleft +customisations +CVP +Dac +datacentre +datlassian +DBfor +dbsetup +dde +deevanapalli +DEVJUMPL +devrot +Dhhmm +dgwzf +dnat +dockerfiles +docx +drawio +dsl +eba +EDB +Enda +Eyetan +ffff +ffffffff +ffffffffffff +fileservice +geolocationfile +GEOLOCATIONUPDATES +Glust +gluster +goldenpath +gufqadefbjgbhkhv +Hashicorp +hashivault +hcp +IMZ +intellij +Jacomb +Jenkinsfiles +jfmd +jfrou +jfrt +jira +journalctl +kalyan +keyfile +labsgoldenpath +labsgoldenpathfelix +ldhx +leaderelection +lhr +libragob +libragobrestore +linkcheck +linkedin +lycheeverse +managedidentity +Manan +mdv +MDVADMVPNHA +mfox +Miniport +mnl +Moj +mojcppprod +mpd +mynodepool +myregistry +njk +nodelocaldns +nodepool +NONLINE +noout +NSGs +NVA +oidc +onlineplea +openvpn +organisations +paramatised +peerings +pki +pmd +postgress +Prereq +prd +PRDATL +prepatch +privatednszonename +privatekeyfilename +PRX +pvc +Qsource +Qube +recoverypoint +regitries +Resouce +resourcegroups +Rns +ruleset +ruxit +SBZ +sftpmig +sku +SNATd +sourced +sourceregistry +sourcerepository +sourcetag +spn +sqldb +sqlpackage +sshfs +stagingdarts +statefile +statefulset +ste +STECCM +sysagentpool +tblk +Tenables +themisgatewayapi +thw +tns +toset +totp +TTLs +Tunnelblick +Txx +userassignedidentities +utilisation +Verma +Virtualbox +virtualwan +VNETs +vpn +wafcc +wrkagentpool +wsdl +xpack +XGET +XXXX +yourname +yye +YYMMD +zshrc diff --git a/.github/actions/spelling/patterns.txt b/.github/actions/spelling/patterns.txt new file mode 100644 index 0000000..c329d0d --- /dev/null +++ b/.github/actions/spelling/patterns.txt @@ -0,0 +1,26 @@ +# Excluded patterns per line in Perl regex + +## Catch lines with https:// urls +.*https?://\S+ +## Catch pod names (containing dashes and chars) +podName=[^\s\/]+ +## Catch container names +.*containerd(.*)$ +## Google analytics ID +.*UA-.*$ +.*.yml +.*.yaml +## Ignore internal links as page names might be concatenated words +\(.*html\) +\(.*erb\) +.*.erb +.*.html +## Ignore all storage account references +\b[a-z0-9]+\.blob\.core\.windows\.net\b +## Ignore azurewebsite links +\b[a-z0-9]+\.azurewebsites\.net\b +## Ignore image references +!\[[^\]]*\]\((.*?)\s*("(?:.*[^"])")?\s*\) +<\s*img\s+[^>]*src\s*=\s*.* +## Ignore placeholder x's (like xxxxxx or xxxxxxxx) +\bx{5,}\b diff --git a/.github/workflows/link-checker.yaml b/.github/workflows/link-checker.yaml new file mode 100644 index 0000000..6ee721c --- /dev/null +++ b/.github/workflows/link-checker.yaml @@ -0,0 +1,28 @@ +name: Link Checker + +on: + pull_request: + branches: + - main + - master + push: + branches: + - main + - master + +jobs: + linkcheck: + name: Check Links + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Link Checker + uses: lycheeverse/lychee-action@v1 + with: + args: --config .lycheerc.toml --verbose '**/*.md' '**/*.yaml' '**/*.yml' + fail: true + token: ${{ secrets.GH_TOKEN }} + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} diff --git a/.github/workflows/spell-checker.yaml b/.github/workflows/spell-checker.yaml new file mode 100644 index 0000000..950529f --- /dev/null +++ b/.github/workflows/spell-checker.yaml @@ -0,0 +1,49 @@ +name: Check Spelling + +on: + pull_request: + branches: + - main + - master + push: + branches: + - main + - master + +jobs: + spellcheck: + runs-on: ubuntu-latest + name: Check spelling + steps: + - name: Spell-Check + uses: check-spelling/check-spelling@v0.0.24 + with: + checkout: true + only_check_changed_files: true + suppress_push_for_open_pull_request: 1 + extra_dictionaries: + cspell:npm/dict/npm.txt + cspell:fullstack/dict/fullstack.txt + cspell:php/dict/php.txt + cspell:k8s/dict/k8s.txt + cspell:html/dict/html.txt + cspell:typescript/dict/typescript.txt + cspell:golang/dict/go.txt + cspell:dotnet/dict/dotnet.txt + cspell:mnemonics/src/mnemonics.txt + cspell:rust/dict/rust.txt + cspell:monkeyc/src/monkeyc_keywords.txt + cspell:cryptocurrencies/cryptocurrencies.txt + cspell:scala/dict/scala.txt + cspell:ruby/dict/ruby.txt + cspell:lua/dict/lua.txt + cspell:css/dict/css.txt + cspell:r/src/r.txt + cspell:html-symbol-entities/entities.txt + cspell:java/src/java.txt + cspell:software-terms/dict/softwareTerms.txt + cspell:python/src/python/python-lib.txt + cspell:node/dict/node.txt + cspell:python/src/common/extra.txt + cspell:public-licenses/src/generated/public-licenses.txt + cspell:aws/aws.txt diff --git a/.lycheerc.toml b/.lycheerc.toml new file mode 100644 index 0000000..cbbfd2c --- /dev/null +++ b/.lycheerc.toml @@ -0,0 +1,35 @@ +# Lychee link checker configuration +# https://lychee.cli.rs/#/usage/config + +# Maximum number of concurrent network requests +max_concurrency = 10 + +# Maximum number of retries per request +max_retries = 3 + +# Timeout per request in seconds +timeout = 30 + +# Accept specific HTTP status codes as valid +accept = [200, 204, 429] + +# User agent +user_agent = "lychee/link-checker" + +# Exclude URLs matching these patterns +exclude = [ + # Ignore pulls/branches as these do not translate to raw content + '.*github\.com/hmcts/.*(?:pull|tree|commit).*', + # App health should not affect runbook PRs + '.*\.platform\.hmcts\.net.*', + # These return 405s in a browser, which is expected + '.*\.hmcts\.net/sonarqube-webhook/.*', + # Social media sites that often block automated checkers + '.*linkedin\.com.*', + '.*twitter\.com.*', + '.*facebook\.com.*', +] + +# Include additional headers for GitHub authentication +# The GH_TOKEN will be automatically used by lychee when set in the environment +[headers] diff --git a/docs/index.md b/docs/index.md index bdb6cd4..19a683e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -131,7 +131,7 @@ More information on how we configure Azure Front Door can be found in [The HMCTS ### Deploy application -We use [GitOps](https://docs.gitops.weave.works/) principles for application deployment to Kubernetes. +We use [GitOps](https://docs.gitops.weaveworks.org/) principles for application deployment to Kubernetes. Your application will be deployed in the `labs` Kubernetes namespace which has already been created.