diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml index 56ad1fac9f..44b77afe36 100644 --- a/.github/workflows/build-cli.yml +++ b/.github/workflows/build-cli.yml @@ -67,7 +67,10 @@ jobs: cli: name: Build CLI - runs-on: windows-2019 + strategy: + matrix: + os: [ubuntu-20.04, windows-2019, macos-11] + runs-on: ${{ matrix.os }} needs: - setup env: @@ -78,7 +81,15 @@ jobs: - name: Checkout repo uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + - name: Setup Unix Vars + if: runner.os != 'Windows' + run: | + echo "LOWER_RUNNER_OS=$(echo $RUNNER_OS | awk '{print tolower($0)}')" >> $GITHUB_ENV + echo "SHORT_RUNNER_OS=$(echo $RUNNER_OS | awk '{print substr($0, 1, 3)}' | \ + awk '{print tolower($0)}')" >> $GITHUB_ENV + - name: Setup Windows builder + if: runner.os == 'Windows' run: | choco install checksum --no-progress choco install reshack --no-progress @@ -98,6 +109,7 @@ jobs: - name: Get pkg-fetch shell: pwsh + if: runner.os == 'Windows' run: | cd $HOME $fetchedUrl = "https://github.com/vercel/pkg-fetch/releases/download/v$env:_WIN_PKG_VERSION/node-v$env:_WIN_PKG_FETCH_VERSION-win-x64" @@ -108,6 +120,7 @@ jobs: - name: Setup Version Info shell: pwsh + if: runner.os == 'Windows' run: | $major,$minor,$patch = $env:_PACKAGE_VERSION.split('.') $versionInfo = @" @@ -142,6 +155,7 @@ jobs: - name: Resource Hacker shell: cmd + if: runner.os == 'Windows' run: | set PATH=%PATH%;C:\Program Files (x86)\Resource Hacker set WIN_PKG=C:\Users\runneradmin\.pkg-cache\v%_WIN_PKG_VERSION%\fetched-v%_WIN_PKG_FETCH_VERSION%-win-x64 @@ -155,25 +169,36 @@ jobs: run: npm ci working-directory: ./ - - name: Build & Package - run: npm run dist --quiet + - name: Build & Package Windows + if: runner.os == 'Windows' + run: npm run dist:win --quiet + + - name: Build & Package Unix + if: runner.os != 'Windows' + run: npm run dist:${{ env.SHORT_RUNNER_OS }} --quiet - name: Package Chocolatey shell: pwsh + if: runner.os == 'Windows' run: | Copy-Item -Path stores/chocolatey -Destination dist/chocolatey -Recurse Copy-Item dist/windows/bw.exe -Destination dist/chocolatey/tools Copy-Item ${{ github.workspace }}/LICENSE.txt -Destination dist/chocolatey/tools choco pack dist/chocolatey/bitwarden-cli.nuspec --version ${{ env._PACKAGE_VERSION }} --out dist/chocolatey - - name: Zip + - name: Zip Windows shell: cmd + if: runner.os == 'Windows' + run: 7z a ./dist/bw-windows-%_PACKAGE_VERSION%.zip ./dist/windows/bw.exe + + - name: Zip Unix + if: runner.os != 'Windows' run: | - 7z a ./dist/bw-windows-%_PACKAGE_VERSION%.zip ./dist/windows/bw.exe - 7z a ./dist/bw-macos-%_PACKAGE_VERSION%.zip ./dist/macos/bw - 7z a ./dist/bw-linux-%_PACKAGE_VERSION%.zip ./dist/linux/bw + cd ./dist/${{ env.LOWER_RUNNER_OS }} + zip ../bw-${{ env.LOWER_RUNNER_OS }}-${{ env._PACKAGE_VERSION }}.zip ./bw - name: Version Test + if: runner.os == 'Windows' run: | dir ./dist/ Expand-Archive -Path "./dist/bw-windows-${env:_PACKAGE_VERSION}.zip" -DestinationPath "./test/windows" @@ -184,16 +209,21 @@ jobs: Throw "Version test failed." } - - name: Create checksums + - name: Create checksums Windows + if: runner.os == 'Windows' run: | checksum -f="./dist/bw-windows-${env:_PACKAGE_VERSION}.zip" ` -t sha256 | Out-File -Encoding ASCII ./dist/bw-windows-sha256-${env:_PACKAGE_VERSION}.txt - checksum -f="./dist/bw-macos-${env:_PACKAGE_VERSION}.zip" ` - -t sha256 | Out-File -Encoding ASCII ./dist/bw-macos-sha256-${env:_PACKAGE_VERSION}.txt - checksum -f="./dist/bw-linux-${env:_PACKAGE_VERSION}.zip" ` - -t sha256 | Out-File -Encoding ASCII ./dist/bw-linux-sha256-${env:_PACKAGE_VERSION}.txt + + - name: Create checksums Unix + if: runner.os != 'Windows' + run: | + cd ./dist + sha256sum bw-${{ env.LOWER_RUNNER_OS }}-${{ env._PACKAGE_VERSION }}.zip \ + | awk '{split($0, a); print a[1]}' > bw-${{ env.LOWER_RUNNER_OS }}-sha256-${{ env._PACKAGE_VERSION }}.txt - name: Upload windows zip asset + if: runner.os == 'Windows' uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 with: name: bw-windows-${{ env._PACKAGE_VERSION }}.zip @@ -201,41 +231,31 @@ jobs: if-no-files-found: error - name: Upload windows checksum asset + if: runner.os == 'Windows' uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 with: name: bw-windows-sha256-${{ env._PACKAGE_VERSION }}.txt path: apps/cli/dist/bw-windows-sha256-${{ env._PACKAGE_VERSION }}.txt if-no-files-found: error - - name: Upload macos zip asset + - name: Upload unix zip asset + if: runner.os != 'Windows' uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 with: - name: bw-macos-${{ env._PACKAGE_VERSION }}.zip - path: apps/cli/dist/bw-macos-${{ env._PACKAGE_VERSION }}.zip + name: bw-${{ env.LOWER_RUNNER_OS }}-${{ env._PACKAGE_VERSION }}.zip + path: apps/cli/dist/bw-${{ env.LOWER_RUNNER_OS }}-${{ env._PACKAGE_VERSION }}.zip if-no-files-found: error - - name: Upload macos checksum asset + - name: Upload unix checksum asset + if: runner.os != 'Windows' uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 with: - name: bw-macos-sha256-${{ env._PACKAGE_VERSION }}.txt - path: apps/cli/dist/bw-macos-sha256-${{ env._PACKAGE_VERSION }}.txt - if-no-files-found: error - - - name: Upload linux zip asset - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 - with: - name: bw-linux-${{ env._PACKAGE_VERSION }}.zip - path: apps/cli/dist/bw-linux-${{ env._PACKAGE_VERSION }}.zip - if-no-files-found: error - - - name: Upload linux checksum asset - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 - with: - name: bw-linux-sha256-${{ env._PACKAGE_VERSION }}.txt - path: apps/cli/dist/bw-linux-sha256-${{ env._PACKAGE_VERSION }}.txt + name: bw-${{ env.LOWER_RUNNER_OS }}-sha256-${{ env._PACKAGE_VERSION }}.txt + path: apps/cli/dist/bw-${{ env.LOWER_RUNNER_OS }}-sha256-${{ env._PACKAGE_VERSION }}.txt if-no-files-found: error - name: Upload Chocolatey asset + if: runner.os == 'Windows' uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 with: name: bitwarden-cli.${{ env._PACKAGE_VERSION }}.nupkg @@ -243,6 +263,7 @@ jobs: if-no-files-found: error - name: Upload NPM Build Directory asset + if: runner.os == 'Windows' uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 with: name: bitwarden-cli-${{ env._PACKAGE_VERSION }}-npm-build.zip diff --git a/apps/cli/package.json b/apps/cli/package.json index 1a2816d72c..f93e81fa92 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -41,11 +41,15 @@ "bw": "build/bw.js" }, "pkg": { - "assets": "./build/**/*" + "assets": [ + "./build/**/*", + "../../node_modules/argon2/**/*" + ] }, "dependencies": { "@koa/multer": "^3.0.0", "@koa/router": "^10.1.1", + "argon2": "^0.30.3", "big-integer": "^1.6.51", "browser-hrtime": "^1.1.8", "chalk": "^4.1.1", diff --git a/package-lock.json b/package-lock.json index 0cd619fb9d..7d53a5e66b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -191,6 +191,7 @@ "dependencies": { "@koa/multer": "^3.0.0", "@koa/router": "^10.1.1", + "argon2": "^0.30.3", "big-integer": "^1.6.51", "browser-hrtime": "^1.1.8", "chalk": "^4.1.1", @@ -45252,6 +45253,7 @@ "requires": { "@koa/multer": "^3.0.0", "@koa/router": "^10.1.1", + "argon2": "^0.30.3", "big-integer": "^1.6.51", "browser-hrtime": "^1.1.8", "chalk": "^4.1.1",