diff --git a/README.md b/README.md index 4e5e473c6..bd84ba14b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![appveyor build](https://ci.appveyor.com/api/projects/status/github/bitwarden/mobile?branch=master&svg=true)](https://ci.appveyor.com/project/bitwarden/mobile) +[![Github Workflow build on master](https://github.com/bitwarden/mobile/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/bitwarden/mobile/actions/workflows/build.yml?query=branch:master) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/bitwarden-mobile/localized.svg)](https://crowdin.com/project/bitwarden-mobile) [![Join the chat at https://gitter.im/bitwarden/Lobby](https://badges.gitter.im/bitwarden/Lobby.svg)](https://gitter.im/bitwarden/Lobby) diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 94f93d97d..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,146 +0,0 @@ -image: -- Visual Studio 2019 -- Ubuntu1804 - -branches: - except: - - l10n_master - - gh-pages - -configuration: Release - -stack: node 10 - -init: -- sh: | - if [ "${DEBUG_SSH}" == "true" ] - then - curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-ssh.sh' | bash -e - - fi -- ps: | - if($isWindows -and $env:DEBUG_RDP -eq "true") { - iex ((new-object net.webclient).DownloadString(` - 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) - } -- ps: | - if($env:APPVEYOR_REPO_TAG -eq "true") { - $tagName = $env:APPVEYOR_REPO_TAG_NAME.TrimStart("v") - $env:RELEASE_NAME = "Version ${tagName}" - } - -install: -- sh: | - curl -sflL 'https://raw.githubusercontent.com/appveyor/secure-file/master/install.sh' | bash -e - - ./appveyor-tools/secure-file -decrypt ./store/fdroid/keystore.jks.enc -secret $FDROID_KEYSTORE_ENC_PASSWORD -- sh: npm install -- sh: | - sudo apt-get -qq update - sudo apt-get -qqy install --no-install-recommends fdroidserver wget -- sh: | - if [ "${APPVEYOR_REPO_TAG}" == "true" -a "${GH_TOKEN}" != "" ] - then - git config --global credential.helper store - echo "https://${GH_TOKEN}:x-oauth-basic@github.com" >> ~/.git-credentials - git config --global user.email "ci@bitwarden.com" - git config --global user.name "Bitwarden CI" - fi -- cmd: choco install cloc --no-progress -- cmd: "cloc --vcs git --exclude-dir Resources,store,test,Properties --include-lang C#,XAML" -#- cmd: appveyor DownloadFile https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -#- cmd: appveyor DownloadFile https://aka.ms/vs/15/release/vs_community.exe -#- cmd: vs_community.exe update --wait --quiet --norestart --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community" -#- cmd: ps: .\src\Android\update-android.ps1 - -before_build: -- ps: | - if($isWindows) { - nuget restore - if($env:UPLOAD_KEYSTORE_DEC_SECRET -or$env:KEYSTORE_DEC_SECRET -or $env:GOOGLE_SERVICES_DEC_SECRET -or $env:PLAY_DEC_SECRET) { - nuget install secure-file -ExcludeVersion - } - if($env:GOOGLE_SERVICES_DEC_SECRET) { - secure-file\tools\secure-file -decrypt src\Android\google-services.json.enc ` - -secret $env:GOOGLE_SERVICES_DEC_SECRET - } - } - -build_script: -- sh: | - if [ "${APPVEYOR_REPO_TAG}" == "true" ] - then - mkdir dist - cp CNAME ./dist - cd store - chmod 600 fdroid/config.py fdroid/keystore.jks - mkdir -p temp/fdroid - TEMP_DIR="$APPVEYOR_BUILD_FOLDER/store/temp/fdroid" - cd fdroid - echo "keypass=\"$FDROID_KEYSTORE_PASSWORD\"" >>config.py - echo "keystorepass=\"$FDROID_KEYSTORE_PASSWORD\"" >>config.py - echo "local_copy_dir=\"$TEMP_DIR\"" >>config.py - mkdir -p repo - curl -Lo repo/com.x8bit.bitwarden-fdroid.apk \ - https://github.com/bitwarden/mobile/releases/download/$APPVEYOR_REPO_TAG_NAME/com.x8bit.bitwarden-fdroid.apk - fdroid update - fdroid server update - cd .. - rm -rf temp/fdroid/archive - mv -v temp/fdroid ../dist - cd fdroid - cp index.html btn.png qr.png ../../dist/fdroid - cd $APPVEYOR_BUILD_FOLDER - fi -- ps: | - if($isWindows -and $env:KEYSTORE_DEC_SECRET) { - msbuild bitwarden-mobile.sln ` - "/logger:C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" ` - "/p:Configuration=Release" - if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } - .\src\Android\ci-build-apks.ps1 - if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) } - Push-AppveyorArtifact .\com.x8bit.bitwarden.aab - Push-AppveyorArtifact .\com.x8bit.bitwarden.apk - Push-AppveyorArtifact .\com.x8bit.bitwarden-fdroid.apk - } - -on_success: -- sh: | - if [ "${APPVEYOR_REPO_TAG}" == "true" -a "${GH_TOKEN}" != "" ] - then - npm run deploy - fi -- ps: | - if($isWindows -and $env:PLAY_DEC_SECRET -and $env:APPVEYOR_REPO_BRANCH -eq 'master') { - secure-file\tools\secure-file -decrypt store\google\Publisher\play_creds.json.enc -secret $env:PLAY_DEC_SECRET - cd store\google\Publisher\bin\Release\netcoreapp2.0 - dotnet Publisher.dll ` - $env:APPVEYOR_BUILD_FOLDER\store\google\Publisher\play_creds.json ` - $env:APPVEYOR_BUILD_FOLDER\com.x8bit.bitwarden.aab ` - alpha - cd $env:APPVEYOR_BUILD_FOLDER - } - -on_finish: -- sh: | - if [ "${DEBUG_SSH}" == "true" ] - then - export APPVEYOR_SSH_BLOCK=true - curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-ssh.sh' | bash -e - - fi -- ps: | - if($isWindows -and $env:DEBUG_RDP -eq "true") { - $blockRdp = $true - iex ((new-object net.webclient).DownloadString(` - 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) - } - -deploy: - tag: $(APPVEYOR_REPO_TAG_NAME) - release: $(RELEASE_NAME) - provider: GitHub - auth_token: $(GH_TOKEN) - artifact: /.*/ - force_update: true - on: - branch: master - APPVEYOR_REPO_TAG: true diff --git a/bitwarden-mobile.sln b/bitwarden-mobile.sln index cddec0fe1..3d74bd7c6 100644 --- a/bitwarden-mobile.sln +++ b/bitwarden-mobile.sln @@ -23,7 +23,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig .gitignore = .gitignore - appveyor.yml = appveyor.yml .github\workflows\build.yml = .github\workflows\build.yml CONTRIBUTING.md = CONTRIBUTING.md crowdin.yml = crowdin.yml diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj index a0b7c5c39..ed1a315c2 100644 --- a/src/Android/Android.csproj +++ b/src/Android/Android.csproj @@ -154,7 +154,6 @@ - diff --git a/src/Android/ci-build-apks.ps1 b/src/Android/ci-build-apks.ps1 deleted file mode 100644 index 5edc863b4..000000000 --- a/src/Android/ci-build-apks.ps1 +++ /dev/null @@ -1,166 +0,0 @@ -$rootPath = $env:APPVEYOR_BUILD_FOLDER; - -$androidPath = $($rootPath + "\src\Android\Android.csproj"); -$appPath = $($rootPath + "\src\App\App.csproj"); - -echo "########################################" -echo "##### Increment Version" -echo "########################################" - -$androidManifest = $($rootPath + "\src\Android\Properties\AndroidManifest.xml"); - -$xml=New-Object XML; -$xml.Load($androidManifest); - -$node=$xml.SelectNodes("/manifest"); -$node.SetAttribute("android:versionCode", $env:APPVEYOR_BUILD_NUMBER); - -$xml.Save($androidManifest); - -echo "########################################" -echo "##### Decrypt Keystore" -echo "########################################" - -$encKeystorePath = $($rootPath + "\src\Android\8bit.keystore.enc"); -$encFdroidKeystorePath = $($rootPath + "\src\Android\fdroid-keystore.jks.enc"); -$encUploadKeystorePath = $($rootPath + "\src\Android\upload-keystore.jks.enc"); -$secureFilePath = $($rootPath + "\secure-file\tools\secure-file.exe"); - -Invoke-Expression "& `"$secureFilePath`" -decrypt $($encKeystorePath) -secret $($env:keystore_dec_secret)" -Invoke-Expression "& `"$secureFilePath`" -decrypt $($encFdroidKeystorePath) -secret $($env:fdroid_apk_keystore_dec_secret)" -Invoke-Expression "& `"$secureFilePath`" -decrypt $($encUploadKeystorePath) -secret $($env:upload_keystore_dec_secret)" - -echo "########################################" -echo "##### Sign Google Play Bundle Release Configuration" -echo "########################################" - -msbuild "$($androidPath)" "/t:SignAndroidPackage" "/p:Configuration=Release" "/p:AndroidKeyStore=true" ` - "/p:AndroidSigningKeyAlias=upload" "/p:AndroidSigningKeyPass=$($env:upload_keystore_password)" ` - "/p:AndroidSigningKeyStore=upload-keystore.jks" "/p:AndroidSigningStorePass=$($env:upload_keystore_password)" ` - "/p:AndroidPackageFormat=aab" "/v:quiet" - -echo "########################################" -echo "##### Copy Google Play Bundle to project root" -echo "########################################" - -$signedAabPath = $($rootPath + "\src\Android\bin\Release\com.x8bit.bitwarden-Signed.aab"); -$signedAabDestPath = $($rootPath + "\com.x8bit.bitwarden.aab"); - -Copy-Item $signedAabPath $signedAabDestPath - -echo "########################################" -echo "##### Sign APK Release Configuration" -echo "########################################" - -msbuild "$($androidPath)" "/t:SignAndroidPackage" "/p:Configuration=Release" "/p:AndroidKeyStore=true" ` - "/p:AndroidSigningKeyAlias=bitwarden" "/p:AndroidSigningKeyPass=$($env:keystore_password)" ` - "/p:AndroidSigningKeyStore=8bit.keystore" "/p:AndroidSigningStorePass=$($env:keystore_password)" "/v:quiet" - -echo "########################################" -echo "##### Copy Release APK to project root" -echo "########################################" - -$signedApkPath = $($rootPath + "\src\Android\bin\Release\com.x8bit.bitwarden-Signed.apk"); -$signedApkDestPath = $($rootPath + "\com.x8bit.bitwarden.apk"); - -Copy-Item $signedApkPath $signedApkDestPath - -echo "########################################" -echo "##### Clean Android and App" -echo "########################################" - -msbuild "$($androidPath)" "/t:Clean" "/p:Configuration=FDroid" -msbuild "$($appPath)" "/t:Clean" "/p:Configuration=FDroid" - -echo "########################################" -echo "##### Backup project files" -echo "########################################" - -Copy-Item $androidManifest $($androidManifest + ".original"); -Copy-Item $androidPath $($androidPath + ".original"); -Copy-Item $appPath $($appPath + ".original"); - - -echo "########################################" -echo "##### Cleanup Android Manifest" -echo "########################################" - -$xml=New-Object XML; -$xml.Load($androidManifest); - -$nsAndroid=New-Object System.Xml.XmlNamespaceManager($xml.NameTable); -$nsAndroid.AddNamespace("android", "http://schemas.android.com/apk/res/android"); - -$firebaseReceiver1=$xml.SelectSingleNode(` - "/manifest/application/receiver[@android:name='com.google.firebase.iid.FirebaseInstanceIdInternalReceiver']", ` - $nsAndroid); -$firebaseReceiver1.ParentNode.RemoveChild($firebaseReceiver1); - -$firebaseReceiver2=$xml.SelectSingleNode(` - "/manifest/application/receiver[@android:name='com.google.firebase.iid.FirebaseInstanceIdReceiver']", ` - $nsAndroid); -$firebaseReceiver2.ParentNode.RemoveChild($firebaseReceiver2); - -$xml.Save($androidManifest); - -echo "########################################" -echo "##### Uninstall from Android.csproj" -echo "########################################" - -$xml=New-Object XML; -$xml.Load($androidPath); - -$ns=New-Object System.Xml.XmlNamespaceManager($xml.NameTable); -$ns.AddNamespace("ns", $xml.DocumentElement.NamespaceURI); - -$firebaseNode=$xml.SelectSingleNode(` - "/ns:Project/ns:ItemGroup/ns:PackageReference[@Include='Xamarin.Firebase.Messaging']", $ns); -$firebaseNode.ParentNode.RemoveChild($firebaseNode); - -$safetyNetNode=$xml.SelectSingleNode(` - "/ns:Project/ns:ItemGroup/ns:PackageReference[@Include='Xamarin.GooglePlayServices.SafetyNet']", $ns); -$safetyNetNode.ParentNode.RemoveChild($safetyNetNode); - -$xml.Save($androidPath); - -echo "########################################" -echo "##### Uninstall from App.csproj" -echo "########################################" - -$xml=New-Object XML; -$xml.Load($appPath); - -$appCenterNode=$xml.SelectSingleNode("/Project/ItemGroup/PackageReference[@Include='Microsoft.AppCenter.Crashes']"); -$appCenterNode.ParentNode.RemoveChild($appCenterNode); - -$xml.Save($appPath); - -echo "########################################" -echo "##### Restore NuGet" -echo "########################################" - -Invoke-Expression "& nuget restore" - -echo "########################################" -echo "##### Build and Sign FDroid Configuration" -echo "########################################" - -msbuild "$($androidPath)" "/logger:C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" ` - "/p:Configuration=FDroid" -msbuild "$($androidPath)" "/t:SignAndroidPackage" "/p:Configuration=FDroid" "/p:AndroidKeyStore=true" ` - "/p:AndroidSigningKeyAlias=bitwarden" "/p:AndroidSigningKeyPass=$($env:fdroid_apk_keystore_password)" ` - "/p:AndroidSigningKeyStore=fdroid-keystore.jks" "/p:AndroidSigningStorePass=$($env:fdroid_apk_keystore_password)" ` - "/v:quiet" - -echo "########################################" -echo "##### Copy FDroid apk to project root" -echo "########################################" - -$signedApkPath = $($rootPath + "\src\Android\bin\FDroid\com.x8bit.bitwarden-Signed.apk"); -$signedApkDestPath = $($rootPath + "\com.x8bit.bitwarden-fdroid.apk"); - -Copy-Item $signedApkPath $signedApkDestPath - -echo "########################################" -echo "##### Done" -echo "########################################"