diff --git a/.github/workflows/build.yml b/.github/workflows/build-cli.yml similarity index 55% rename from .github/workflows/build.yml rename to .github/workflows/build-cli.yml index 7b5f5cc4..1746e637 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build-cli.yml @@ -1,4 +1,4 @@ -name: Build +name: Build CLI on: pull_request: {} @@ -336,276 +336,6 @@ jobs: path: ./dist-cli/bwdc-windows-${{ env._PACKAGE_VERSION }}.zip if-no-files-found: error - - windows-gui: - name: Build Windows GUI - runs-on: windows-2022 - needs: setup - env: - NODE_OPTIONS: --max_old_space_size=4096 - _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} - HUSKY: 0 - steps: - - name: Checkout repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - - name: Set up Node - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 - with: - cache: 'npm' - cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Update NPM - run: | - npm install -g node-gyp - node-gyp install $(node -v) - - - name: Print environment - run: | - node --version - npm --version - - - name: Install AST - run: dotnet tool install --global AzureSignTool --version 4.0.1 - - - name: Install Node dependencies - run: npm install - - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 - with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - - - name: Retrieve secrets - id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@main - with: - keyvault: "bitwarden-ci" - secrets: "code-signing-vault-url, - code-signing-client-id, - code-signing-tenant-id, - code-signing-client-secret, - code-signing-cert-name" - - - name: Build & Sign - run: npm run dist:win - env: - ELECTRON_BUILDER_SIGN: 1 - SIGNING_VAULT_URL: ${{ steps.retrieve-secrets.outputs.code-signing-vault-url }} - SIGNING_CLIENT_ID: ${{ steps.retrieve-secrets.outputs.code-signing-client-id }} - SIGNING_TENANT_ID: ${{ steps.retrieve-secrets.outputs.code-signing-tenant-id }} - SIGNING_CLIENT_SECRET: ${{ steps.retrieve-secrets.outputs.code-signing-client-secret }} - SIGNING_CERT_NAME: ${{ steps.retrieve-secrets.outputs.code-signing-cert-name }} - - - name: Upload Portable Executable to GitHub - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: Bitwarden-Connector-Portable-${{ env._PACKAGE_VERSION }}.exe - path: ./dist/Bitwarden-Connector-Portable-${{ env._PACKAGE_VERSION }}.exe - if-no-files-found: error - - - name: Upload Installer Executable to GitHub - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: Bitwarden-Connector-Installer-${{ env._PACKAGE_VERSION }}.exe - path: ./dist/Bitwarden-Connector-Installer-${{ env._PACKAGE_VERSION }}.exe - if-no-files-found: error - - - name: Upload Installer Executable Blockmap to GitHub - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: Bitwarden-Connector-Installer-${{ env._PACKAGE_VERSION }}.exe.blockmap - path: ./dist/Bitwarden-Connector-Installer-${{ env._PACKAGE_VERSION }}.exe.blockmap - if-no-files-found: error - - - name: Upload latest auto-update artifact - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: latest.yml - path: ./dist/latest.yml - if-no-files-found: error - - - linux-gui: - name: Build Linux GUI - runs-on: ubuntu-24.04 - needs: setup - env: - NODE_OPTIONS: --max_old_space_size=4096 - _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} - HUSKY: 0 - steps: - - name: Checkout repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - - name: Set up Node - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 - with: - cache: 'npm' - cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Update NPM - run: | - npm install -g node-gyp - node-gyp install $(node -v) - - - name: Set up environment - run: | - sudo apt-get update - sudo apt-get -y install pkg-config libxss-dev libsecret-1-dev - sudo apt-get -y install rpm - - - name: NPM Install - run: npm install - - - name: NPM Rebuild - run: npm run rebuild - - - name: NPM Package - run: npm run dist:lin - - - name: Upload AppImage - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: Bitwarden-Connector-${{ env._PACKAGE_VERSION }}-x86_64.AppImage - path: ./dist/Bitwarden-Connector-${{ env._PACKAGE_VERSION }}-x86_64.AppImage - if-no-files-found: error - - - name: Upload latest auto-update artifact - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: latest-linux.yml - path: ./dist/latest-linux.yml - if-no-files-found: error - - - macos-gui: - name: Build MacOS GUI - runs-on: macos-13 - needs: setup - env: - NODE_OPTIONS: --max_old_space_size=4096 - _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} - HUSKY: 0 - steps: - - name: Checkout repo - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - - name: Set up Node - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 - with: - cache: 'npm' - cache-dependency-path: '**/package-lock.json' - node-version: '18' - - - name: Update NPM - run: | - npm install -g node-gyp - node-gyp install $(node -v) - - - name: Print environment - run: | - node --version - npm --version - echo "GitHub ref: $GITHUB_REF" - echo "GitHub event: $GITHUB_EVENT" - - - name: Login to Azure - uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 - with: - creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} - - - name: Get certificates - run: | - mkdir -p $HOME/certificates - - az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | - jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 - - az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | - jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 - - az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | - jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 - - - name: Set up keychain - env: - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - run: | - security create-keychain -p $KEYCHAIN_PASSWORD build.keychain - security default-keychain -s build.keychain - security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain - security set-keychain-settings -lut 1200 build.keychain - - security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ - -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - - security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ - -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - - security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ - -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - - - name: Load package version - run: | - $rootPath = $env:GITHUB_WORKSPACE; - $packageVersion = (Get-Content -Raw -Path $rootPath\package.json | ConvertFrom-Json).version; - - Write-Output "Setting package version to $packageVersion"; - Write-Output "PACKAGE_VERSION=$packageVersion" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append; - shell: pwsh - - - name: Install Node dependencies - run: npm install - - - name: Set up private auth key - run: | - mkdir ~/private_keys - cat << EOF > ~/private_keys/AuthKey_UFD296548T.p8 - ${{ secrets.APP_STORE_CONNECT_AUTH_KEY }} - EOF - - - name: Build application - run: npm run dist:mac - env: - APP_STORE_CONNECT_TEAM_ISSUER: ${{ secrets.APP_STORE_CONNECT_TEAM_ISSUER }} - APP_STORE_CONNECT_AUTH_KEY: UFD296548T - APP_STORE_CONNECT_AUTH_KEY_PATH: ~/private_keys/AuthKey_UFD296548T.p8 - CSC_FOR_PULL_REQUEST: true - - - name: Upload .zip artifact - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: Bitwarden-Connector-${{ env._PACKAGE_VERSION }}-mac.zip - path: ./dist/Bitwarden-Connector-${{ env._PACKAGE_VERSION }}-mac.zip - if-no-files-found: error - - - name: Upload .dmg artifact - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: Bitwarden-Connector-${{ env._PACKAGE_VERSION }}.dmg - path: ./dist/Bitwarden-Connector-${{ env._PACKAGE_VERSION }}.dmg - if-no-files-found: error - - - name: Upload .dmg Blockmap artifact - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: Bitwarden-Connector-${{ env._PACKAGE_VERSION }}.dmg.blockmap - path: ./dist/Bitwarden-Connector-${{ env._PACKAGE_VERSION }}.dmg.blockmap - if-no-files-found: error - - - name: Upload latest auto-update artifact - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: latest-mac.yml - path: ./dist/latest-mac.yml - if-no-files-found: error - - check-failures: name: Check for failures runs-on: ubuntu-24.04 @@ -615,9 +345,6 @@ jobs: - linux-cli - macos-cli - windows-cli - - windows-gui - - linux-gui - - macos-gui steps: - name: Check if any job failed if: | diff --git a/.github/workflows/build-gui.yml b/.github/workflows/build-gui.yml new file mode 100644 index 00000000..5b4dd762 --- /dev/null +++ b/.github/workflows/build-gui.yml @@ -0,0 +1,354 @@ +name: Build GUI + +on: + pull_request: {} + push: + branches: + - "main" + - "rc" + - "hotfix-rc" + workflow_dispatch: {} + +permissions: + contents: read + +jobs: + cloc: + name: CLOC + runs-on: ubuntu-24.04 + steps: + - name: Checkout repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up CLOC + run: | + sudo apt update + sudo apt -y install cloc + + - name: Print lines of code + run: cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git + + + setup: + name: Setup + runs-on: ubuntu-24.04 + outputs: + package_version: ${{ steps.retrieve-version.outputs.package_version }} + steps: + - name: Checkout repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Get Package Version + id: retrieve-version + run: | + PKG_VERSION=$(jq -r .version package.json) + echo "package_version=$PKG_VERSION" >> $GITHUB_OUTPUT + + windows-gui: + name: Build Windows GUI + runs-on: windows-2022 + needs: setup + env: + NODE_OPTIONS: --max_old_space_size=4096 + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + HUSKY: 0 + steps: + - name: Checkout repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up Node + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '18' + + - name: Update NPM + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Print environment + run: | + node --version + npm --version + + - name: Install AST + run: dotnet tool install --global AzureSignTool --version 4.0.1 + + - name: Install Node dependencies + run: npm install + + - name: Login to Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + with: + keyvault: "bitwarden-ci" + secrets: "code-signing-vault-url, + code-signing-client-id, + code-signing-tenant-id, + code-signing-client-secret, + code-signing-cert-name" + + - name: Build & Sign + run: npm run dist:win + env: + ELECTRON_BUILDER_SIGN: 1 + SIGNING_VAULT_URL: ${{ steps.retrieve-secrets.outputs.code-signing-vault-url }} + SIGNING_CLIENT_ID: ${{ steps.retrieve-secrets.outputs.code-signing-client-id }} + SIGNING_TENANT_ID: ${{ steps.retrieve-secrets.outputs.code-signing-tenant-id }} + SIGNING_CLIENT_SECRET: ${{ steps.retrieve-secrets.outputs.code-signing-client-secret }} + SIGNING_CERT_NAME: ${{ steps.retrieve-secrets.outputs.code-signing-cert-name }} + + - name: Upload Portable Executable to GitHub + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: Bitwarden-Connector-Portable-${{ env._PACKAGE_VERSION }}.exe + path: ./dist/Bitwarden-Connector-Portable-${{ env._PACKAGE_VERSION }}.exe + if-no-files-found: error + + - name: Upload Installer Executable to GitHub + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: Bitwarden-Connector-Installer-${{ env._PACKAGE_VERSION }}.exe + path: ./dist/Bitwarden-Connector-Installer-${{ env._PACKAGE_VERSION }}.exe + if-no-files-found: error + + - name: Upload Installer Executable Blockmap to GitHub + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: Bitwarden-Connector-Installer-${{ env._PACKAGE_VERSION }}.exe.blockmap + path: ./dist/Bitwarden-Connector-Installer-${{ env._PACKAGE_VERSION }}.exe.blockmap + if-no-files-found: error + + - name: Upload latest auto-update artifact + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: latest.yml + path: ./dist/latest.yml + if-no-files-found: error + + + linux-gui: + name: Build Linux GUI + runs-on: ubuntu-24.04 + needs: setup + env: + NODE_OPTIONS: --max_old_space_size=4096 + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + HUSKY: 0 + steps: + - name: Checkout repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up Node + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '18' + + - name: Update NPM + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Set up environment + run: | + sudo apt-get update + sudo apt-get -y install pkg-config libxss-dev libsecret-1-dev + sudo apt-get -y install rpm + + - name: NPM Install + run: npm install + + - name: NPM Rebuild + run: npm run rebuild + + - name: NPM Package + run: npm run dist:lin + + - name: Upload AppImage + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: Bitwarden-Connector-${{ env._PACKAGE_VERSION }}-x86_64.AppImage + path: ./dist/Bitwarden-Connector-${{ env._PACKAGE_VERSION }}-x86_64.AppImage + if-no-files-found: error + + - name: Upload latest auto-update artifact + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: latest-linux.yml + path: ./dist/latest-linux.yml + if-no-files-found: error + + + macos-gui: + name: Build MacOS GUI + runs-on: macos-13 + needs: setup + env: + NODE_OPTIONS: --max_old_space_size=4096 + _PACKAGE_VERSION: ${{ needs.setup.outputs.package_version }} + HUSKY: 0 + steps: + - name: Checkout repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up Node + uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '18' + + - name: Update NPM + run: | + npm install -g node-gyp + node-gyp install $(node -v) + + - name: Print environment + run: | + node --version + npm --version + echo "GitHub ref: $GITHUB_REF" + echo "GitHub event: $GITHUB_EVENT" + + - name: Login to Azure + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Get certificates + run: | + mkdir -p $HOME/certificates + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-app-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-app-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/devid-installer-cert | + jq -r .value | base64 -d > $HOME/certificates/devid-installer-cert.p12 + + az keyvault secret show --id https://bitwarden-ci.vault.azure.net/certificates/macdev-cert | + jq -r .value | base64 -d > $HOME/certificates/macdev-cert.p12 + + - name: Set up keychain + env: + KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + run: | + security create-keychain -p $KEYCHAIN_PASSWORD build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain + security set-keychain-settings -lut 1200 build.keychain + + security import "$HOME/certificates/devid-app-cert.p12" -k build.keychain -P "" \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + + security import "$HOME/certificates/devid-installer-cert.p12" -k build.keychain -P "" \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + + security import "$HOME/certificates/macdev-cert.p12" -k build.keychain -P "" \ + -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild + + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain + + - name: Load package version + run: | + $rootPath = $env:GITHUB_WORKSPACE; + $packageVersion = (Get-Content -Raw -Path $rootPath\package.json | ConvertFrom-Json).version; + + Write-Output "Setting package version to $packageVersion"; + Write-Output "PACKAGE_VERSION=$packageVersion" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append; + shell: pwsh + + - name: Install Node dependencies + run: npm install + + - name: Set up private auth key + run: | + mkdir ~/private_keys + cat << EOF > ~/private_keys/AuthKey_UFD296548T.p8 + ${{ secrets.APP_STORE_CONNECT_AUTH_KEY }} + EOF + + - name: Build application + run: npm run dist:mac + env: + APP_STORE_CONNECT_TEAM_ISSUER: ${{ secrets.APP_STORE_CONNECT_TEAM_ISSUER }} + APP_STORE_CONNECT_AUTH_KEY: UFD296548T + APP_STORE_CONNECT_AUTH_KEY_PATH: ~/private_keys/AuthKey_UFD296548T.p8 + CSC_FOR_PULL_REQUEST: true + + - name: Upload .zip artifact + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: Bitwarden-Connector-${{ env._PACKAGE_VERSION }}-mac.zip + path: ./dist/Bitwarden-Connector-${{ env._PACKAGE_VERSION }}-mac.zip + if-no-files-found: error + + - name: Upload .dmg artifact + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: Bitwarden-Connector-${{ env._PACKAGE_VERSION }}.dmg + path: ./dist/Bitwarden-Connector-${{ env._PACKAGE_VERSION }}.dmg + if-no-files-found: error + + - name: Upload .dmg Blockmap artifact + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: Bitwarden-Connector-${{ env._PACKAGE_VERSION }}.dmg.blockmap + path: ./dist/Bitwarden-Connector-${{ env._PACKAGE_VERSION }}.dmg.blockmap + if-no-files-found: error + + - name: Upload latest auto-update artifact + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: latest-mac.yml + path: ./dist/latest-mac.yml + if-no-files-found: error + + + check-failures: + name: Check for failures + runs-on: ubuntu-24.04 + needs: + - cloc + - setup + - windows-gui + - linux-gui + - macos-gui + steps: + - name: Check if any job failed + if: | + (github.ref == 'refs/heads/main' + || github.ref == 'refs/heads/rc' + || github.ref == 'refs/heads/hotfix-rc') + && contains(needs.*.result, 'failure') + run: exit 1 + + - name: Login to Azure - CI subscription + uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 + if: failure() + with: + creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@main + if: failure() + with: + keyvault: "bitwarden-ci" + secrets: "devops-alerts-slack-webhook-url" + + - name: Notify Slack on failure + uses: act10ns/slack@44541246747a30eb3102d87f7a4cc5471b0ffb7d # v2.1.0 + if: failure() + env: + SLACK_WEBHOOK_URL: ${{ steps.retrieve-secrets.outputs.devops-alerts-slack-webhook-url }} + with: + status: ${{ job.status }} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml new file mode 100644 index 00000000..728391b2 --- /dev/null +++ b/.github/workflows/release-cli.yml @@ -0,0 +1,83 @@ + +name: Release + +on: + workflow_dispatch: + inputs: + release_type: + description: 'Release Options' + required: true + default: 'Initial Release' + type: choice + options: + - Initial Release + - Redeploy + - Dry Run + +permissions: + contents: read + +jobs: + setup: + name: Setup + runs-on: ubuntu-24.04 + outputs: + release_version: ${{ steps.version.outputs.version }} + steps: + - name: Checkout repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Branch check + if: ${{ inputs.release_type != 'Dry Run' }} + run: | + if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc" ]]; then + echo "===================================" + echo "[!] Can only release from the 'rc' or 'hotfix-rc' branches" + echo "===================================" + exit 1 + fi + + - name: Check Release Version + id: version + uses: bitwarden/gh-actions/release-version-check@main + with: + release-type: ${{ inputs.release_type }} + project-type: ts + file: package.json + + release: + name: Release + runs-on: ubuntu-24.04 + needs: setup + steps: + - name: Download all artifacts + if: ${{ inputs.release_type != 'Dry Run' }} + uses: bitwarden/gh-actions/download-artifacts@main + with: + workflow: build-cli.yml + workflow_conclusion: success + branch: ${{ github.ref_name }} + + - name: Dry Run - Download all artifacts + if: ${{ inputs.release_type == 'Dry Run' }} + uses: bitwarden/gh-actions/download-artifacts@main + with: + workflow: build-cli.yml + workflow_conclusion: success + branch: main + + - name: Create release + if: ${{ inputs.release_type != 'Dry Run' }} + uses: ncipollo/release-action@cdcc88a9acf3ca41c16c37bb7d21b9ad48560d87 # v1.15.0 + env: + PKG_VERSION: ${{ needs.setup.outputs.release_version }} + with: + artifacts: "./bwdc-windows-${{ env.PKG_VERSION }}.zip, + ./bwdc-macos-${{ env.PKG_VERSION }}.zip, + ./bwdc-linux-${{ env.PKG_VERSION }}.zip" + commit: ${{ github.sha }} + tag: v${{ env.PKG_VERSION }} + name: Version ${{ env.PKG_VERSION }} + body: "" + token: ${{ secrets.GITHUB_TOKEN }} + draft: true diff --git a/.github/workflows/release.yml b/.github/workflows/release-gui.yml similarity index 89% rename from .github/workflows/release.yml rename to .github/workflows/release-gui.yml index c5f809c3..18f2bb0a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release-gui.yml @@ -1,4 +1,4 @@ -name: Release +name: Release GUI on: workflow_dispatch: @@ -53,7 +53,7 @@ jobs: if: ${{ inputs.release_type != 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@main with: - workflow: build.yml + workflow: build-gui.yml workflow_conclusion: success branch: ${{ github.ref_name }} @@ -61,7 +61,7 @@ jobs: if: ${{ inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@main with: - workflow: build.yml + workflow: build-gui.yml workflow_conclusion: success branch: main @@ -71,10 +71,7 @@ jobs: env: PKG_VERSION: ${{ needs.setup.outputs.release_version }} with: - artifacts: "./bwdc-windows-${{ env.PKG_VERSION }}.zip, - ./bwdc-macos-${{ env.PKG_VERSION }}.zip, - ./bwdc-linux-${{ env.PKG_VERSION }}.zip, - ./Bitwarden-Connector-Portable-${{ env.PKG_VERSION }}.exe, + artifacts: " ./Bitwarden-Connector-Portable-${{ env.PKG_VERSION }}.exe, ./Bitwarden-Connector-Installer-${{ env.PKG_VERSION }}.exe, ./Bitwarden-Connector-Installer-${{ env.PKG_VERSION }}.exe.blockmap, ./Bitwarden-Connector-${{ env.PKG_VERSION }}-x86_64.AppImage,