mirror of
https://github.com/bitwarden/android.git
synced 2024-12-26 02:48:29 +03:00
8d5614cd7b
* Expand Hkdf crypto functions * Add tests for hkdf crypto functions Took the testing infrastructure from bitwarden/server * Move Hkdf to cryptoFunctionService * Port changes from bitwarden/jslib#192 * Port changes from bitwarden/jslib#205 * Make Send Expiration Optional implement changes from bitwarden/jslib#242 * Bug fixes found by testing * Test helpers * Test conversion between model types * Test SendService These are mostly happy-path tests to ensure a reasonably correct implementation * Add run tests step to GitHub Actions * Test send decryption * Test Request generation from Send * Constructor dependencies on separate lines * Remove unused testing infrastructure * Rename to match class name * Move fat arrows to previous lines * Handle exceptions in App layer * PR review cleanups * Throw when attempting to save an unkown Send Type I think it's best to only throw on unknown send types here. I don't think we want to throw whenever we encounter one since that would do bad things like lock up Sync if clients get out of date relative to servers. Instead, keep the client from ruining saved data by complaining last minute that it doesn't know what it's doing.
297 lines
9.4 KiB
YAML
297 lines
9.4 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
branches-ignore:
|
|
- 'l10n_master'
|
|
- 'gh-pages'
|
|
release:
|
|
types:
|
|
- published
|
|
|
|
jobs:
|
|
|
|
cloc:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Set up cloc
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get -y install cloc
|
|
|
|
- name: Print lines of code
|
|
run: cloc --vcs git --exclude-dir Resources,store,test,Properties --include-lang C#,XAML
|
|
|
|
android:
|
|
runs-on: windows-latest
|
|
|
|
steps:
|
|
- name: Set up MSBuild
|
|
uses: microsoft/setup-msbuild@v1
|
|
|
|
- name: Print environment
|
|
run: |
|
|
nuget help
|
|
msbuild -version
|
|
dotnet --info
|
|
Write-Output "GitHub ref: $env:GITHUB_REF"
|
|
Write-Output "GitHub event: $env:GITHUB_EVENT"
|
|
shell: pwsh
|
|
env:
|
|
GITHUB_REF: ${{ github.ref }}
|
|
GITHUB_EVENT: ${{ github.event_name }}
|
|
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Decrypt secrets
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
run: ./.github/scripts/android/decrypt-secrets.ps1
|
|
shell: pwsh
|
|
env:
|
|
DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }}
|
|
|
|
- name: Increment version
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
run: ./.github/scripts/android/increment-version.ps1
|
|
shell: pwsh
|
|
|
|
- name: Restore packages
|
|
run: nuget restore
|
|
|
|
- name: Run Core Tests
|
|
run: dotnet test test/Core.Test/Core.Test.csproj
|
|
|
|
- name: Build Play Store publisher
|
|
run: dotnet build ./store/google/Publisher/Publisher.csproj -p:Configuration=Release
|
|
|
|
- name: Build for Play Store
|
|
run: ./.github/scripts/android/build.ps1 -configuration Release
|
|
shell: pwsh
|
|
|
|
- name: Sign for Play Store
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
run: ./.github/scripts/android/sign-play.ps1
|
|
shell: pwsh
|
|
env:
|
|
PLAY_KEYSTORE_PASSWORD: ${{ secrets.PLAY_KEYSTORE_PASSWORD }}
|
|
UPLOAD_KEYSTORE_PASSWORD: ${{ secrets.UPLOAD_KEYSTORE_PASSWORD }}
|
|
|
|
- name: Upload Play Store .aab artifact
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: com.x8bit.bitwarden.aab
|
|
path: ./com.x8bit.bitwarden.aab
|
|
|
|
- name: Upload Play Store .apk artifact
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: com.x8bit.bitwarden.apk
|
|
path: ./com.x8bit.bitwarden.apk
|
|
|
|
- name: Clean for F-Droid
|
|
run: ./.github/scripts/android/clean-fdroid.ps1
|
|
shell: pwsh
|
|
|
|
- name: Restore packages
|
|
run: nuget restore
|
|
|
|
- name: Build for F-Droid
|
|
run: ./.github/scripts/android/build.ps1 -configuration FDroid
|
|
shell: pwsh
|
|
|
|
- name: Sign for F-Droid
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
run: ./.github/scripts/android/sign-fdroid.ps1
|
|
shell: pwsh
|
|
env:
|
|
FDROID_KEYSTORE_PASSWORD: ${{ secrets.FDROID_KEYSTORE_PASSWORD }}
|
|
|
|
- name: Upload F-Droid .apk artifact
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: com.x8bit.bitwarden-fdroid.apk
|
|
path: ./com.x8bit.bitwarden-fdroid.apk
|
|
|
|
- name: Deploy to Play Store
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
run: ./.github/scripts/android/deploy-play.ps1
|
|
shell: pwsh
|
|
|
|
- name: Upload release assets
|
|
if: github.event_name == 'release'
|
|
run: |
|
|
hub release edit `
|
|
-a ./com.x8bit.bitwarden.aab `
|
|
-a ./com.x8bit.bitwarden.apk `
|
|
-a ./com.x8bit.bitwarden-fdroid.apk `
|
|
-m "Version $($env:RELEASE_TAG_NAME.TrimStart('v'))" `
|
|
$env:RELEASE_TAG_NAME
|
|
shell: pwsh
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
|
|
|
|
android-ubuntu:
|
|
runs-on: ubuntu-latest
|
|
needs: android
|
|
|
|
steps:
|
|
- name: Set up Node
|
|
if: github.event_name == 'release'
|
|
uses: actions/setup-node@v1
|
|
with:
|
|
node-version: '10.x'
|
|
|
|
- name: Set up F-Droid server
|
|
if: github.event_name == 'release'
|
|
run: |
|
|
sudo apt-get -qq update
|
|
sudo apt-get -qqy install --no-install-recommends fdroidserver wget
|
|
|
|
- name: Set up git credentials
|
|
if: github.event_name == 'release'
|
|
env:
|
|
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
run: |
|
|
git config --global credential.helper store
|
|
echo "https://${ACCESS_TOKEN}:x-oauth-basic@github.com" >> ~/.git-credentials
|
|
git config --global user.email "ci@bitwarden.com"
|
|
git config --global user.name "Bitwarden CI"
|
|
|
|
- name: Print environment
|
|
if: github.event_name == 'release'
|
|
run: |
|
|
node --version
|
|
npm --version
|
|
git --version
|
|
Write-Output "GitHub ref: $env:GITHUB_REF"
|
|
Write-Output "GitHub event: $env:GITHUB_EVENT"
|
|
shell: pwsh
|
|
env:
|
|
GITHUB_REF: ${{ github.ref }}
|
|
GITHUB_EVENT: ${{ github.event_name }}
|
|
|
|
- name: Checkout repo
|
|
if: github.event_name == 'release'
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install Node dependencies
|
|
if: github.event_name == 'release'
|
|
run: npm install
|
|
|
|
- name: Decrypt secrets
|
|
if: github.event_name == 'release'
|
|
run: |
|
|
./.github/scripts/decrypt-secret.ps1 -filename store_fdroid-keystore.jks.gpg `
|
|
-output ./store/fdroid/keystore.jks
|
|
shell: pwsh
|
|
env:
|
|
DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }}
|
|
|
|
- name: Compile for F-Droid Store
|
|
if: github.event_name == 'release'
|
|
run: |
|
|
sudo chmod +x ./.github/scripts/android/compile-fdroid.sh
|
|
./.github/scripts/android/compile-fdroid.sh
|
|
env:
|
|
FDROID_STORE_KEYSTORE_PASSWORD: ${{ secrets.FDROID_STORE_KEYSTORE_PASSWORD }}
|
|
RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
|
|
|
|
- name: Deploy to gh-pages
|
|
if: github.event_name == 'release'
|
|
run: npm run deploy
|
|
|
|
ios:
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
- name: Print environment
|
|
run: |
|
|
nuget help
|
|
msbuild -version
|
|
dotnet --info
|
|
Write-Output "GitHub ref: $env:GITHUB_REF"
|
|
Write-Output "GitHub event: $env:GITHUB_EVENT"
|
|
shell: pwsh
|
|
env:
|
|
GITHUB_REF: ${{ github.ref }}
|
|
GITHUB_EVENT: ${{ github.event_name }}
|
|
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Decrypt secrets
|
|
run: ./.github/scripts/ios/decrypt-secrets.ps1
|
|
shell: pwsh
|
|
env:
|
|
DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }}
|
|
|
|
- name: Increment version
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
run: ./.github/scripts/ios/increment-version.ps1
|
|
shell: pwsh
|
|
|
|
- name: Set up keychain
|
|
run: ./.github/scripts/ios/setup-keychain.ps1
|
|
shell: pwsh
|
|
env:
|
|
KEYCHAIN_PASSWORD: ${{ secrets.IOS_KEYCHAIN_PASSWORD }}
|
|
MOBILE_KEY_PASSWORD: ${{ secrets.IOS_KEY_PASSWORD }}
|
|
DIST_CERT_PASSWORD: ${{ secrets.IOS_DIST_CERT_PASSWORD }}
|
|
|
|
- name: Set up provisioning profiles
|
|
run: ./.github/scripts/ios/setup-profiles.ps1
|
|
shell: pwsh
|
|
|
|
- name: Restore packages
|
|
run: nuget restore
|
|
|
|
- name: Archive Build for App Store
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
run: ./.github/scripts/ios/build.ps1 -configuration AppStore -platform iPhone -archive
|
|
shell: pwsh
|
|
|
|
- name: Build for App Store
|
|
if: github.ref != 'refs/heads/master'
|
|
run: ./.github/scripts/ios/build.ps1 -configuration AppStore -platform iPhone
|
|
shell: pwsh
|
|
|
|
- name: Export .ipa for App Store
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
run: ./.github/scripts/ios/export-ipa.ps1 -method app-store
|
|
shell: pwsh
|
|
|
|
- name: Upload App Store .ipa artifact
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Bitwarden.ipa
|
|
path: ./bitwarden-export/Bitwarden.ipa
|
|
|
|
- name: Deploy to App Store
|
|
if: github.ref == 'refs/heads/master' || github.event_name == 'release'
|
|
run: ./.github/scripts/ios/deploy-app-store.ps1
|
|
shell: pwsh
|
|
env:
|
|
APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }}
|
|
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
|
|
|
|
- name: Upload release assets
|
|
if: github.event_name == 'release'
|
|
run: |
|
|
hub release edit `
|
|
-a ./bitwarden-export/Bitwarden.ipa `
|
|
-m "Version $($env:RELEASE_TAG_NAME.TrimStart('v'))" `
|
|
$env:RELEASE_TAG_NAME
|
|
shell: pwsh
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
|