chore(website): Update website docs and dl links for Android AAB/APK (#7650)

- Refactor the way we build download links on the Changelog page to make
them more flexible
- Add Android download redirects
- Update user-facing docs to mention new download options
This commit is contained in:
Jamil
2025-01-03 10:30:37 -08:00
committed by GitHub
parent 272bef25dd
commit 3d9ef52373
10 changed files with 111 additions and 54 deletions

View File

@@ -63,7 +63,7 @@ jobs:
path: |
./kotlin/android/${{ matrix.output-path }}
- name: Upload package to release
if: ${{ github.event_name == 'workflow_dispatch' || github.ref_name == 'main' }}
if: ${{ matrix.package-type == 'apk' && github.event_name == 'workflow_dispatch' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# mark:next-android-version
@@ -73,7 +73,7 @@ jobs:
cp "${{ matrix.output-path }}" "$ARTIFACT_PATH"
../../scripts/upload/github-release.sh
- name: Distribute release to Firebase App Distribution
if: ${{ github.event_name == 'workflow_dispatch' || (github.ref == 'refs/heads/main' && contains(github.event.head_commit.modified, 'elixir/VERSION')) }}
if: ${{ matrix.package-type == 'aab' && github.event_name == 'workflow_dispatch' }}
env:
FIREBASE_APP_DISTRIBUTION_CREDENTIALS: ${{ secrets.FIREBASE_APP_DISTRIBUTION_CREDENTIALS }}
FIREBASE_CREDENTIALS_PATH: firebase-credentials.json

View File

@@ -1,6 +1,18 @@
// Add all server-side redirects here. Will be loaded by next.config.mjs.
module.exports = [
/*
*
* Android Client
*
*/
{
source: "/dl/firezone-client-android/latest",
destination:
// mark:current-android-version
"https://www.github.com/firezone/firezone/releases/download/android-client-1.4.0/firezone-android-client-1.4.0.apk",
permanent: false,
},
/*
*
* Windows GUI Client

View File

@@ -15,7 +15,9 @@ Google Play Store.
## Installation
1. [Download the Firezone app](https://play.google.com/store/apps/details?id=dev.firezone.android)
from the Google Play Store.
from the Google Play Store or
[download an APK](https://www.github.com/firezone/firezone/releases) from
GitHub.
1. Run the app. The welcome screen will show "Enable VPN Permission" and the
Firezone logo.
1. Tap `Request Permission`. Android will show a dialog saying,
@@ -54,11 +56,14 @@ use its normal DNS and Internet behavior.
## Upgrading
Updates for the Android client are handled through the Google Play Store.
Consult the
Updates for the Android client are handled through the Google Play Store if you
installed the app from there. Consult the
[Play Store documentation](https://support.google.com/googleplay/answer/113412?hl=en)
for more information on how to update apps on your device.
If you installed the app from an APK directly, you will need to download and
install the new APK manually.
## Diagnostic logs
Firezone writes log files to the device's memory. These logs stay on the device

View File

@@ -5,11 +5,19 @@ import Link from "next/link";
import Unreleased from "./Unreleased";
export default function Android() {
const downloadLinks = [
{
href: "https://play.google.com/store/apps/details?id=dev.firezone.android",
title: "Download on Google Play",
},
{
href: "https://www.firezone.dev/dl/firezone-client-android/:version",
title: "Download APK",
},
];
return (
<Entries
href="https://play.google.com/store/apps/details?id=dev.firezone.android"
title="Android"
>
<Entries downloadLinks={downloadLinks} title="Android">
{/* When you cut a release, remove any solved issues from the "known issues" lists over in `client-apps`. This must not be done when the issue's PR merges. */}
<Unreleased></Unreleased>
<Entry version="1.4.0" date={new Date("2025-01-02")}>

View File

@@ -5,11 +5,15 @@ import ChangeItem from "./ChangeItem";
import Unreleased from "./Unreleased";
export default function Apple() {
const downloadLinks = [
{
href: "https://apps.apple.com/us/app/firezone/id6443661826",
title: "Download on App Store",
},
];
return (
<Entries
href="https://apps.apple.com/us/app/firezone/id6443661826"
title="macOS / iOS"
>
<Entries downloadLinks={downloadLinks} title="macOS / iOS">
{/* When you cut a release, remove any solved issues from the "known issues" lists over in `client-apps`. This must not be done when the issue's PR merges. */}
<Unreleased>
<ChangeItem pull="7594">

View File

@@ -3,16 +3,19 @@ import Entry from "./Entry";
import Link from "next/link";
import Unreleased from "./Unreleased";
export type DownloadLink = {
title: string;
href: string;
};
function Latest({
arches,
href,
downloadLinks,
title,
version,
date,
children,
}: {
arches?: string[];
href: string;
downloadLinks: DownloadLink[];
title: string;
version: string;
date: Date;
@@ -41,29 +44,15 @@ function Latest({
</span>
</p>
<p className="mb-4 md:mb-6 xl:mb-8">
<span className="mr-2">Download:</span>
{arches ? (
arches.map((arch) => (
<Link
key={arch}
href={{
pathname: href
.replace(":arch", arch)
.replace(":version", version),
}}
className="hover:no-underline underline text-accent-500 mr-2"
>
{arch}
</Link>
))
) : (
{downloadLinks.map((link) => (
<Link
href={new URL(href)}
className="hover:no-underline underline text-accent-500"
key={link.href}
href={new URL(link.href.replace(":version", version))}
className="hover:no-underline underline text-accent-500 mr-2"
>
Download for all platforms
{link.title}
</Link>
)}
))}
</p>
{children}
</div>
@@ -113,13 +102,11 @@ function Previous({
}
export default function Entries({
href,
arches,
downloadLinks,
title,
children,
}: {
href: string;
arches?: string[];
downloadLinks: DownloadLink[];
title: string;
children: React.ReactNode;
}) {
@@ -135,8 +122,7 @@ export default function Entries({
return (
<div className="relative overflow-x-auto p-4 md:p-6 xl:p-8">
<Latest
href={href}
arches={arches}
downloadLinks={downloadLinks}
title={title}
version={version}
date={date}

View File

@@ -5,14 +5,27 @@ import ChangeItem from "./ChangeItem";
import Unreleased from "./Unreleased";
export default function GUI({ title }: { title: string }) {
const href =
const downloadLinks =
title === "Windows"
? "/dl/firezone-client-gui-windows/:version/:arch"
: "/dl/firezone-client-gui-linux/:version/:arch";
const arches = title === "Windows" ? ["x86_64"] : ["x86_64", "aarch64"];
? [
{
title: "Download for x86_64",
href: "https://www.firezone.dev/dl/firezone-client-gui-windows/:version/x86_64",
},
]
: [
{
title: "Download for x86_64",
href: "https://www.firezone.dev/dl/firezone-client-gui-linux/:version/x86_64",
},
{
title: "Download for aarch64",
href: "https://www.firezone.dev/dl/firezone-client-gui-linux/:version/aarch64",
},
];
return (
<Entries href={href} arches={arches} title={title}>
<Entries downloadLinks={downloadLinks} title={title}>
{/* When you cut a release, remove any solved issues from the "known issues" lists over in `client-apps`. This must not be done when the issue's PR merges. */}
<Unreleased>
<ChangeItem pull="7551">

View File

@@ -5,11 +5,23 @@ import ChangeItem from "./ChangeItem";
import Unreleased from "./Unreleased";
export default function Gateway() {
const href = "/dl/firezone-gateway/:version/:arch";
const arches = ["x86_64", "aarch64", "armv7"];
const downloadLinks = [
{
href: "https://www.firezone.dev/dl/firezone-gateway/:version/x86_64",
title: "Download for x86_64",
},
{
href: "https://www.firezone.dev/dl/firezone-gateway/:version/aarch64",
title: "Download for aarch64",
},
{
href: "https://www.firezone.dev/dl/firezone-gateway/:version/armv7",
title: "Download for armv7",
},
];
return (
<Entries href={href} arches={arches} title="Gateway">
<Entries downloadLinks={downloadLinks} title="Gateway">
<Unreleased>
<ChangeItem pull="7567">
Fixes an issue where ICMPv6's `PacketTooBig' errors were not correctly

View File

@@ -5,11 +5,23 @@ import Link from "next/link";
import Unreleased from "./Unreleased";
export default function Headless() {
const href = "/dl/firezone-client-headless-linux/:version/:arch";
const arches = ["x86_64", "aarch64", "armv7"];
const downloadLinks = [
{
href: "https://www.firezone.dev/dl/firezone-client-headless-linux/:version/x86_64",
title: "Download for x86_64",
},
{
href: "https://www.firezone.dev/dl/firezone-client-headless-linux/:version/aarch64",
title: "Download for aarch64",
},
{
href: "https://www.firezone.dev/dl/firezone-client-headless-linux/:version/armv7",
title: "Download for armv7",
},
];
return (
<Entries href={href} arches={arches} title="Linux headless">
<Entries downloadLinks={downloadLinks} title="Linux headless">
{/* When you cut a release, remove any solved issues from the "known issues" lists over in `client-apps`. This must not be done when the issue's PR merges. */}
<Unreleased>
<ChangeItem pull="7551">

View File

@@ -3,6 +3,11 @@ import { NextResponse, NextRequest } from "next/server";
// This middleware is needed because NextJS doesn't populate params in the destination
// more than once. See https://github.com/vercel/next.js/issues/66891
const versionedRedirects = [
{
source: /^\/dl\/firezone-client-android\/(\d+\.\d+\.\d+)$/,
destination:
"https://www.github.com/firezone/firezone/releases/download/android-client-:version/firezone-android-client-:version.apk",
},
{
source: /^\/dl\/firezone-client-gui-windows\/(\d+\.\d+\.\d+)\/x86_64$/,
destination: