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 "########################################"