Release Initial Release #101
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Release | |
run-name: Release ${{ inputs.release_type }} | |
on: | |
workflow_dispatch: | |
inputs: | |
release_type: | |
description: 'Release Options' | |
required: true | |
default: 'Initial Release' | |
type: choice | |
options: | |
- Initial Release | |
- Redeploy | |
- Dry Run | |
fdroid_publish: | |
description: 'Publish to f-droid store' | |
required: true | |
default: true | |
type: boolean | |
jobs: | |
release: | |
name: Create Release | |
runs-on: ubuntu-22.04 | |
outputs: | |
branch-name: ${{ steps.branch.outputs.branch-name }} | |
steps: | |
- name: Branch check | |
if: inputs.release_type != 'Dry Run' | |
run: | | |
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc" ]]; then | |
echo "===================================" | |
echo "[!] Can only release from the 'rc' or 'hotfix-rc' branches" | |
echo "===================================" | |
exit 1 | |
fi | |
- name: Checkout repo | |
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 | |
- name: Check Release Version | |
id: version | |
uses: bitwarden/gh-actions/release-version-check@main | |
with: | |
release-type: ${{ inputs.release_type }} | |
project-type: xamarin | |
file: src/App/Platforms/Android/AndroidManifest.xml | |
- name: Get branch name | |
id: branch | |
run: | | |
BRANCH_NAME=$(basename ${{ github.ref }}) | |
echo "branch-name=$BRANCH_NAME" >> $GITHUB_OUTPUT | |
- name: Create GitHub deployment | |
if: ${{ inputs.release_type != 'Dry Run' }} | |
uses: chrnorm/deployment-action@55729fcebec3d284f60f5bcabbd8376437d696b1 # v2.0.7 | |
id: deployment | |
with: | |
token: '${{ secrets.GITHUB_TOKEN }}' | |
initial-status: 'in_progress' | |
environment: 'production' | |
description: 'Deployment ${{ steps.version.outputs.version }} from branch ${{ steps.branch.outputs.branch-name }}' | |
task: release | |
- name: Download all artifacts | |
if: ${{ inputs.release_type != 'Dry Run' }} | |
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4 | |
with: | |
workflow: build.yml | |
workflow_conclusion: success | |
branch: ${{ steps.branch.outputs.branch-name }} | |
- name: Dry Run - Download all artifacts | |
if: ${{ inputs.release_type == 'Dry Run' }} | |
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4 | |
with: | |
workflow: build.yml | |
workflow_conclusion: success | |
branch: main | |
- name: Prep Bitwarden iOS release asset | |
run: zip -r Bitwarden\ iOS.zip Bitwarden\ iOS | |
- name: Create release | |
if: ${{ inputs.release_type != 'Dry Run' }} | |
uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 # v1.14.0 | |
with: | |
artifacts: "./com.x8bit.bitwarden.aab/com.x8bit.bitwarden.aab, | |
./com.x8bit.bitwarden.apk/com.x8bit.bitwarden.apk, | |
./com.x8bit.bitwarden-fdroid.apk/com.x8bit.bitwarden-fdroid.apk, | |
./Bitwarden iOS.zip, | |
./bw-android-apk-sha256.txt/bw-android-apk-sha256.txt, | |
./bw-fdroid-apk-sha256.txt/bw-fdroid-apk-sha256.txt" | |
commit: ${{ github.sha }} | |
tag: v${{ steps.version.outputs.version }} | |
name: Version ${{ steps.version.outputs.version }} | |
body: "<insert release notes here>" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
draft: true | |
- name: Update deployment status to Success | |
if: ${{ inputs.release_type != 'Dry Run' && success() }} | |
uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 | |
with: | |
token: '${{ secrets.GITHUB_TOKEN }}' | |
state: 'success' | |
deployment-id: ${{ steps.deployment.outputs.deployment_id }} | |
- name: Update deployment status to Failure | |
if: ${{ inputs.release_type != 'Dry Run' && failure() }} | |
uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 | |
with: | |
token: '${{ secrets.GITHUB_TOKEN }}' | |
state: 'failure' | |
deployment-id: ${{ steps.deployment.outputs.deployment_id }} | |
f-droid: | |
name: F-Droid Release | |
runs-on: ubuntu-22.04 | |
needs: release | |
if: inputs.fdroid_publish | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 | |
- name: Download F-Droid .apk artifact | |
if: ${{ inputs.release_type != 'Dry Run' }} | |
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4 | |
with: | |
workflow: build.yml | |
workflow_conclusion: success | |
branch: ${{ needs.release.outputs.branch-name }} | |
name: com.x8bit.bitwarden-fdroid.apk | |
- name: Dry Run - Download F-Droid .apk artifact | |
if: ${{ inputs.release_type == 'Dry Run' }} | |
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4 | |
with: | |
workflow: build.yml | |
workflow_conclusion: success | |
branch: main | |
name: com.x8bit.bitwarden-fdroid.apk | |
- name: Set up Node | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
node-version: '16.x' | |
- name: Set up F-Droid server | |
run: pip install git+https://gitlab.com/fdroid/fdroidserver.git | |
- name: Set up Git credentials | |
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 | |
run: | | |
node --version | |
npm --version | |
git --version | |
fdroid --version | |
echo "GitHub ref: $GITHUB_REF" | |
echo "GitHub event: $GITHUB_EVENT" | |
- name: Install Node dependencies | |
run: npm install | |
- name: Login to Azure - CI Subscription | |
uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 | |
with: | |
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} | |
- name: Download secrets | |
env: | |
ACCOUNT_NAME: bitwardenci | |
CONTAINER_NAME: mobile | |
run: | | |
mkdir -p $HOME/secrets | |
az storage blob download --account-name $ACCOUNT_NAME --container-name $CONTAINER_NAME \ | |
--name store_fdroid-keystore.jks --file ./store/fdroid/keystore.jks --output none | |
- name: Compile for F-Droid Store | |
env: | |
FDROID_STORE_KEYSTORE_PASSWORD: ${{ secrets.FDROID_STORE_KEYSTORE_PASSWORD }} | |
run: | | |
# Create required directories. | |
mkdir dist | |
mkdir -p store/temp/fdroid | |
mkdir -p store/fdroid/repo | |
# Configure F-Droid server. | |
cp CNAME dist/ | |
chmod 600 store/fdroid/config.yml store/fdroid/keystore.jks | |
TEMP_DIR="$GITHUB_WORKSPACE/store/temp/fdroid" | |
echo "keypass: $FDROID_STORE_KEYSTORE_PASSWORD" >> store/fdroid/config.yml | |
echo "keystorepass: $FDROID_STORE_KEYSTORE_PASSWORD" >> store/fdroid/config.yml | |
echo "local_copy_dir: $TEMP_DIR" >> store/fdroid/config.yml | |
mv $GITHUB_WORKSPACE/com.x8bit.bitwarden-fdroid.apk store/fdroid/repo/ | |
# Run update and deploy. | |
cd store/fdroid | |
fdroid update | |
fdroid deploy | |
cd ../.. | |
# Move files for distribution. | |
rm -rf store/temp/fdroid/archive | |
mv -v store/temp/fdroid dist | |
cp store/fdroid/index.html store/fdroid/btn.png store/fdroid/qr.png dist/fdroid | |
- name: Deploy to gh-pages | |
if: ${{ inputs.release_type != 'Dry Run' }} | |
run: npm run deploy |