mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 18:18:55 +00:00
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:
4
.github/workflows/_kotlin.yml
vendored
4
.github/workflows/_kotlin.yml
vendored
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")}>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user