name: WELA Release Automation on: workflow_dispatch: inputs: release_ver: required: true default: "1.0.0" description: "Version of the release" branch_or_tag: required: true default: "main" description: "Branch or Tag to checkout" permissions: contents: read jobs: upload: runs-on: ${{ matrix.info.os }} strategy: matrix: info: - { os: "windows-latest" } - { os: "macos-latest" } steps: - name: Checkout Repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ github.event.inputs.branch_or_tag }} submodules: 'true' - name: Package and Zip - Windows if: contains(matrix.info.os, 'windows') == true shell: pwsh run: | mkdir -p release-binaries Copy-Item -Path WELA.ps1 -Destination release-binaries/ Copy-Item -Recurse -Path ./config -Destination release-binaries/ Copy-Item -Recurse -Path ./scripts -Destination release-binaries/ Copy-Item -Recurse -Path ./modules -Destination release-binaries/ New-Item -ItemType Directory -Path release-binaries/docs -Force | Out-Null Copy-Item -Path ./docs/gpo-audit-packages.md, ./docs/gpo-package-deployment.md, ./docs/gpo-creation.md, ./docs/wmi-probe.md, ./docs/firewall-logging.md, ./docs/firewall-logging-recovery.md, ./docs/ipsec-prerequisites.md, ./docs/wec-state.md, ./docs/wec-update.md, ./docs/wec-runtime.md, ./docs/wef-deployment.md, ./docs/native-channel-access.md, ./docs/eventlog-settings.md, ./docs/channel-read.md, ./docs/native-rule-eligibility.md, ./docs/native-validation.md, ./docs/wef-arrival.md, ./docs/smb-runtime-activation.md, ./docs/smb-auditing.md, ./docs/wec-ingress.md, ./docs/capi2-probe.md, ./docs/powershell-transcription.md, ./docs/transcription-recovery.md, ./docs/eventlog-recovery.md, ./docs/failed-logon-probe.md, ./docs/wec-listener.md, ./docs/file-access-probe.md, ./docs/applocker-script-probe.md, ./docs/applocker-probe.md, ./docs/selected-sacl-configuration.md, ./docs/registry-sacl-recovery.md, ./docs/targeted-sacl-planning.md, ./docs/native-registry-sacl-validation.md, ./docs/wec-authorization.md, ./docs/channel-recovery.md, ./docs/outgoing-ntlm.md, ./docs/wec-collector-observation.md, ./docs/native-provider-packs.md, ./docs/native-provider-acceptance.md, ./docs/audit-catalog-mappings.md, ./docs/native-token-right-attribution.md, ./docs/audit-notifications.md, ./docs/native-onesettings-acceptance.md, ./docs/ntlm-auditing.md, ./docs/wef-query.md, ./docs/native-filesystem-sacl-validation.md, ./docs/registry-value-probe.md, ./docs/transcript-probe.md, ./docs/file-sacl-recovery.md, ./docs/dns-client-probe.md, ./docs/wmi-sacl-recovery.md, ./docs/wmi-namespace-auditing.md, ./docs/wmi-descendants.md, ./docs/process-commandline.md, ./docs/powershell-logging.md -Destination release-binaries/docs/ - name: Set Artifact Name if: contains(matrix.info.os, 'windows') == true id: set_artifact_name shell: bash run: | echo "artifact_name=wela-${{ github.event.inputs.release_ver }}" >> $GITHUB_OUTPUT - name: Upload Artifacts if: contains(matrix.info.os, 'windows') == true uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: ${{ steps.set_artifact_name.outputs.artifact_name }} path: release-binaries/* - name: Setup node if: matrix.info.os == 'macos-latest' uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 20 - name: Create PDF if: matrix.info.os == 'macos-latest' run: | npm i -g md-to-pdf md-to-pdf ./OLD-README.md ./OLD-README-Japanese.md --md-file-encoding utf-8 mv ./OLD-README.pdf ./README-${{ github.event.inputs.release_ver }}-English.pdf mv ./OLD-README-Japanese.pdf ./README-${{ github.event.inputs.release_ver }}-Japanese.pdf - name: Upload Document Artifacts if: matrix.info.os == 'macos-latest' uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: wela-documents path: | ./*.pdf