diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..bc5c96bb --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,157 @@ +name: Deploy + +on: + workflow_dispatch: + inputs: + release_tag_name_input: + description: "Release Tag Name " + required: true + release: + types: + - published + + +jobs: + setup: + runs-on: ubuntu-latest + outputs: + package_version: ${{ steps.create_tags.outputs.package_version }} + tag_version: ${{ steps.create_tags.outputs.tag_version }} + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Create Deploy version vars + id: create_tags + run: | + if ! [[ "${{ github.event_name }}" -eq "release" ]]; then + case "${RELEASE_TAG_NAME_INPUT:0:1}" in + v) + echo "RELEASE_NAME=${RELEASE_TAG_NAME_INPUT:1}" >> $GITHUB_ENV + echo "RELEASE_TAG_NAME=$RELEASE_TAG_NAME_INPUT" >> $GITHUB_ENV + echo "::set-output name=package_version::${RELEASE_TAG_NAME_INPUT:1}" + echo "::set-output name=tag_version::$RELEASE_TAG_NAME_INPUT" + ;; + [0-9]) + echo "RELEASE_NAME=$RELEASE_TAG_NAME_INPUT" >> $GITHUB_ENV + echo "RELEASE_TAG_NAME=v$RELEASE_TAG_NAME_INPUT" >> $GITHUB_ENV + echo "::set-output name=package_version::$RELEASE_TAG_NAME_INPUT" + echo "::set-output name=tag_version::v$RELEASE_TAG_NAME_INPUT" + ;; + *) + exit 1 + ;; + esac + else + TAG_VERSION=$(echo ${{ github.ref }} | cut -d "/" -f 3) + PKG_VERSION=${TAG_VERSION:1} + + echo "::set-output name=package_version::$PKG_VERSION" + echo "::set-output name=tag_version::$TAG_VERSION" + fi + env: + RELEASE_TAG_NAME_INPUT: ${{ github.event.inputs.release_tag_name_input }} + + + snap: + name: Deploy Snap + runs-on: ubuntu-latest + needs: setup + env: + PKG_VERSION: ${{ needs.setup.outputs.package_version }} + TAG_VERSION: ${{ needs.setup.ouputs.tag_version }} + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Install Snap + uses: samuelmeuli/action-snapcraft@v1 + with: + snapcraft_token: ${{ secrets.SNAP_TOKEN }} + + - name: setup + run: mkdir dist + + - name: get snap package + uses: Xotl/cool-github-releases@v1 + with: + mode: download + tag_name: ${{ env.TAG_VERSION }} + assets: bitwarden_${{ env.PKG_VERSION }}_amd64.snap|./dist/bitwarden_${{ env.PKG_VERSION }}_amd64.snap + github_token: ${{ secrets.GITHUB_TOKEN }} + + - name: test + run: ls -alht dist + + - name: Deploy to Snap Store + run: | + snapcraft upload dist/bitwarden_${{ env.PACKAGE_VERSION }}_amd64.snap --release stable + snapcraft logout + + + choco: + name: Deploy Choco + runs-on: windows-latest + needs: setup + env: + PKG_VERSION: ${{ needs.setup.outputs.package_version }} + TAG_VERSION: ${{ needs.setup.outputs.tag_version }} + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Get choco release asset + uses: dsaltares/fetch-gh-release-asset@0.0.5 + with: + version: tags/${{ env.TAG_VERSION }} + file: bitwarden.${{ env.PKG_VERSION }}.nupkg + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Chocolatey + run: choco apikey --key $env:CHOCO_API_KEY --source https://push.chocolatey.org/ + env: + CHOCO_API_KEY: ${{ secrets.CHOCO_API_KEY }} + + - name: make dist dir + shell: pwsh + run: New-Item -ItemType directory -Path ./dist + + - name: Get nupkg + uses: Xotl/cool-github-releases@v1 + with: + mode: download + tag_name: ${{ env.TAG_VERSION }} + assets: bitwarden.${{ env.PKG_VERSION }}.nupkg|./dist/bitwarden.${{ env.PKG_VERSION }}.nupkg + github_token: ${{ secrets.GITHUB_TOKEN }} + + - name: Push to Chocolatey + shell: pwsh + run: | + cd dist + choco push + + + macos: + runs-on: macos-latest + needs: setup + steps: + - name: Checkout repo + uses: actions/checkout@v2 + + - name: make target directory + run: mkdir -p dist/mas + + - name: Get mac release asset + uses: Xotl/cool-github-releases@v1 + with: + mode: download + tag_name: ${{ env.TAG_VERSION }} + assets: Bitwarden-${{ env.PACKAGE_VERSION }}.pkg|./dist/mas/Bitwarden-${{ env.PACKAGE_VERSION }}.pkg + github_token: ${{ secrets.GITHUB_TOKEN }} + + - name: Deploy to App Store + run: npm run upload:mas + env: + APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d3997e5a..e7593631 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -68,17 +68,10 @@ jobs: sudo apt-get update sudo apt-get -y install pkg-config libxss-dev libsecret-1-dev rpm - - name: Install Snap - uses: samuelmeuli/action-snapcraft@v1 - with: - snapcraft_token: ${{ secrets.SNAP_TOKEN }} - - name: Print environment run: | node --version npm --version - snap --version - snapcraft --version || echo 'snapcraft unavailable' - name: Checkout repo uses: actions/checkout@v2 @@ -98,11 +91,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Deploy to Snap Store - run: | - snapcraft upload dist/bitwarden_${{ env.PACKAGE_VERSION }}_amd64.snap --release stable - snapcraft logout - windows-signed: runs-on: windows-latest @@ -180,7 +168,7 @@ jobs: SIGNING_CERT_NAME: ${{ secrets.SIGNING_CERT_NAME }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Deploy to Chocolatey + - name: Package Chocolatey shell: pwsh run: | Copy-Item -Path ./stores/chocolatey -Destination ./dist/chocolatey -Recurse @@ -189,9 +177,10 @@ jobs: $checksum = checksum -t sha256 ./dist/chocolatey/Bitwarden-Installer-${{ env.PACKAGE_VERSION }}.exe $chocoInstall = "./dist/chocolatey/tools/chocolateyinstall.ps1" (Get-Content $chocoInstall).replace('__version__', "$env:PACKAGE_VERSION").replace('__checksum__', $checksum) | Set-Content $chocoInstall + ls -alht dist/chocolatey choco pack ./dist/chocolatey/bitwarden.nuspec --version "$env:PACKAGE_VERSION" --out ./dist/chocolatey cd ./dist/chocolatey - choco push + ls -alht dist/chocolatey - name: Upload Chocolatey nupkg release asset uses: actions/upload-release-asset@v1 @@ -371,8 +360,12 @@ jobs: APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} - - name: Deploy to App Store - run: npm run upload:mas + - name: Upload Apple Store release asset + uses: actions/upload-release-asset@v1 env: - APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} - APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.setup.outputs.release_upload_url }} + asset_name: Bitwarden-${{ env.PACKAGE_VERSION }}.pkg + asset_path: ./dist/mas/Bitwarden-${{ env.PACKAGE_VERSION }}.pkg + asset_content_type: application