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 NuGet uses: nuget/setup-nuget@v1 with: nuget-version: 'latest' - name: Set up MSBuild uses: microsoft/setup-msbuild@v1.0.0 - 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: 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 }}