Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Generated documentation (regenerate with: python scripts/generate-docs.py)
docs/workflows/
docs/actions/
Binary file added .github/docs/assets/fonts/Roobert-Bold.woff2
Binary file not shown.
Binary file added .github/docs/assets/fonts/Roobert-Regular.woff2
Binary file not shown.
Binary file added .github/docs/assets/fonts/Roobert-SemiBold.woff2
Binary file not shown.
Binary file added .github/docs/assets/images/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
60 changes: 60 additions & 0 deletions .github/docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Futured CI/CD Workflows

Reusable GitHub Actions workflows and composite actions for **iOS**, **Android**, and **Kotlin Multiplatform** projects at Futured.

---

## What's Inside

<div class="grid cards" markdown>

- :material-apple:{ .lg .middle } **iOS Workflows**

---

Self-hosted runner workflows for testing, building, and releasing iOS apps via Fastlane.

[:octicons-arrow-right-24: iOS Workflows](workflows/ios/index.md)

- :material-android:{ .lg .middle } **Android Workflows**

---

Cloud-based workflows for PR checks, nightly builds, and releases to Firebase & Google Play.

[:octicons-arrow-right-24: Android Workflows](workflows/android/index.md)

- :material-language-kotlin:{ .lg .middle } **KMP Workflows**

---

Workflows for Kotlin Multiplatform projects — change detection and combined builds.

[:octicons-arrow-right-24: KMP Workflows](workflows/kmp/index.md)

- :material-cog:{ .lg .middle } **Composite Actions**

---

Reusable building blocks used by the workflows — environment setup, Fastlane steps, and utilities.

[:octicons-arrow-right-24: Actions](actions/index.md)

</div>

---

## Quick Links

| Platform | Test | Build | Release |
|----------|------|-------|---------|
| **iOS** | [selfhosted-test](workflows/ios/selfhosted-test.md) | [selfhosted-nightly-build](workflows/ios/selfhosted-nightly-build.md) | [selfhosted-release](workflows/ios/selfhosted-release.md) |
| **iOS + KMP** | [selfhosted-test](workflows/ios-kmp/selfhosted-test.md) | [selfhosted-build](workflows/ios-kmp/selfhosted-build.md) | [selfhosted-release](workflows/ios-kmp/selfhosted-release.md) |
| **Android** | [cloud-check](workflows/android/cloud-check.md) | [cloud-nightly-build](workflows/android/cloud-nightly-build.md) | [Firebase](workflows/android/cloud-release-firebase.md) / [Google Play](workflows/android/cloud-release-googleplay.md) |
| **KMP** | — | [combined-nightly-build](workflows/kmp/combined-nightly-build.md) | — |

---

## Repository

[:fontawesome-brands-github: futuredapp/.github](https://github.com/futuredapp/.github){ .md-button }
8 changes: 8 additions & 0 deletions .github/docs/overrides/.icons/futured/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
176 changes: 176 additions & 0 deletions .github/docs/stylesheets/extra.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
@font-face {
font-family: 'Roobert';
src: url('../assets/fonts/Roobert-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}

@font-face {
font-family: 'Roobert';
src: url('../assets/fonts/Roobert-SemiBold.woff2') format('woff2');
font-weight: 600;
font-style: normal;
font-display: swap;
}

@font-face {
font-family: 'Roobert';
src: url('../assets/fonts/Roobert-Bold.woff2') format('woff2');
font-weight: 700;
font-style: normal;
font-display: swap;
}

:root {
--md-text-font: "Roobert"
}

[data-md-color-scheme="default"] {
--ftrd-background: #FFFFFF;
--ftrd-background-variant: #0000001A;
--ftrd-background-variant2: #0000000D;
--ftrd-foreground: #222222;
--ftrd-foreground-variant: #00000099;
--ftrd-foreground-variant2: #00000066;
--ftrd-foreground-variant3: #22222299;
--ftrd-border: #E7E8E9;
--ftrd-brand: #FF5F00;

--md-primary-fg-color: var(--ftrd-brand);
--md-primary-bg-color: var(--ftrd-foreground);

--md-default-fg-color: var(--ftrd-foreground);
--md-default-bg-color: var(--ftrd-background);

--md-accent-fg-color: var(--ftrd-brand);
--md-typeset-a-color: var(--ftrd-brand) !important;
}

[data-md-color-scheme="slate"] {
--ftrd-background: #1B1B1B;
--ftrd-background-variant: #FFFFFF1A;
--ftrd-background-variant2: #FFFFFF0D;
--ftrd-foreground: #E7E8E9;
--ftrd-foreground-variant: #C2C5C8;
--ftrd-foreground-variant2: #C2C5C8;
--ftrd-foreground-variant3: #C2C5C8;
--ftrd-border: #292929;
--ftrd-brand: #FF5F00;

--md-primary-fg-color: var(--ftrd-brand);
--md-primary-bg-color: var(--ftrd-foreground);

--md-default-fg-color: var(--ftrd-foreground);
--md-default-bg-color: var(--ftrd-background);

--md-accent-fg-color: var(--ftrd-brand);

--md-code-bg-color: var(--ftrd-background-variant);
--md-typeset-a-color: var(--ftrd-brand) !important;
}

/* Header background */
.md-header {
background-color: var(--ftrd-background);
}

/* Header title margin */
.md-header__title {
margin-left: 0.2rem !important;
}

/* Nav title background in drawer */
.md-nav--primary .md-nav__title[for=__drawer] {
background-color: var(--ftrd-background);
}

/* Search widget - icon */
.md-search__icon[for=__search] {
color: var(--ftrd-foreground-variant);
}

/* Search widget - background */
.md-search__form {
background-color: var(--ftrd-background-variant);
}

/* Search widget - hover */
.md-search__form:hover {
background-color: var(--ftrd-background-variant2);
}

/* Search widget - input placeholder color */
.md-search__input::placeholder {
color: var(--ftrd-foreground-variant);
}

/* Palette button colors */
.md-header__button[for="__palette_0"],
.md-header__button[for="__palette_1"],
.md-header__button[for="__palette_2"] {
color: var(--ftrd-foreground-variant);
}

/* Tab background */
.md-tabs {
background-color: var(--ftrd-background);
border-bottom: 1px solid var(--ftrd-border);
}

/* Tab item color */
.md-tabs__item {
color: var(--ftrd-foreground) !important;
}

/* Tab item opacity, gets rid of transition animation, did not find a way to do transition to brand color */
.md-tabs__link {
opacity: 1;
}

/* Tab item color -- selected */
.md-tabs__item--active {
color: var(--ftrd-brand) !important;
}

/* Navigation - scrollbar color */
.md-sidebar__scrollwrap:hover {
scrollbar-color: var(--ftrd-foreground-variant) #0000;
}

/* Navigation - section color */
.md-nav__item--section>.md-nav__link[for] {
color: var(--ftrd-foreground-variant);
}

/* Typography - Page title */
.md-typeset h1 {
color: var(--ftrd-foreground) !important;
}

/* Footer - background*/
.md-footer-meta {
background-color: var(--ftrd-background);
border-top: 1px solid var(--ftrd-border);
}

/* Footer - Made with ❤️‍🔥 at Futured */
.md-copyright__highlight {
color: var(--ftrd-foreground);
}

/* Footer - Made with mkdocs */
.md-copyright {
color: var(--ftrd-foreground-variant3);
}

/* Footer - Made with mkdocs - link */
.md-copyright a {
color: var(--ftrd-foreground-variant3) !important;
text-decoration: underline;
}

/* Footer - social icons */
.md-social a {
color: var(--ftrd-foreground) !important;
}
140 changes: 140 additions & 0 deletions .github/mkdocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
#$schema: https://squidfunk.github.io/mkdocs-material/schema.json

site_name: Futured CI/CD Workflows
site_url: https://futuredapp.github.io/.github
theme:
name: material
language: en

custom_dir: docs/overrides

favicon: assets/images/favicon.png
icon:
logo: futured/logo

font:
code: JetBrains Mono

palette:
# Palette toggle for automatic mode
- media: "(prefers-color-scheme)"
toggle:
icon: material/brightness-auto
name: Switch to auto mode

# Palette toggle for light mode
- media: "(prefers-color-scheme: light)"
scheme: default
toggle:
icon: material/brightness-7
name: Switch to dark mode

# Palette toggle for dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
toggle:
icon: material/brightness-4
name: Switch to light mode

features:
- navigation.instant
- navigation.tabs
- navigation.sections
- navigation.indexes
- navigation.expand
- content.code.copy

plugins:
- search
- glightbox:
background: light-dark(white, black)
shadow: false

nav:
- Home: index.md
- Workflows:
- Overview: workflows/index.md
- iOS:
- workflows/ios/index.md
- Test: workflows/ios/selfhosted-test.md
- Nightly Build: workflows/ios/selfhosted-nightly-build.md
- On-demand Build: workflows/ios/selfhosted-on-demand-build.md
- Release: workflows/ios/selfhosted-release.md
- Build (Deprecated): workflows/ios/selfhosted-build.md
- iOS + KMP:
- workflows/ios-kmp/index.md
- Test: workflows/ios-kmp/selfhosted-test.md
- Build: workflows/ios-kmp/selfhosted-build.md
- Release: workflows/ios-kmp/selfhosted-release.md
- Android:
- workflows/android/index.md
- PR Check: workflows/android/cloud-check.md
- Nightly Build: workflows/android/cloud-nightly-build.md
- Release (Firebase): workflows/android/cloud-release-firebase.md
- Release (Google Play): workflows/android/cloud-release-googleplay.md
- Generate Baseline Profiles: workflows/android/cloud-generate-baseline-profiles.md
- KMP:
- workflows/kmp/index.md
- Detect Changes: workflows/kmp/cloud-detect-changes.md
- Combined Nightly Build: workflows/kmp/combined-nightly-build.md
- Universal:
- workflows/universal/index.md
- Workflows Lint: workflows/universal/workflows-lint.md
- Cloud Backup: workflows/universal/cloud-backup.md
- Self-hosted Backup: workflows/universal/selfhosted-backup.md
- Actions:
- Overview: actions/index.md
- Android:
- actions/android/index.md
- Setup Environment: actions/android/setup-environment.md
- Check: actions/android/check.md
- Build Firebase: actions/android/build-firebase.md
- Build Google Play: actions/android/build-googleplay.md
- Generate Baseline Profiles: actions/android/generate-baseline-profiles.md
- iOS:
- actions/ios/index.md
- Export Secrets: actions/ios/export-secrets.md
- Fastlane Test: actions/ios/fastlane-test.md
- Fastlane Beta: actions/ios/fastlane-beta.md
- Fastlane Release: actions/ios/fastlane-release.md
- KMP Build: actions/ios/kmp-build.md
- Utility:
- actions/utility/index.md
- KMP Detect Changes: actions/utility/kmp-detect-changes.md
- Detect Changes & Changelog: actions/utility/detect-changes-changelog.md
- JIRA Transition Tickets: actions/utility/jira-transition-tickets.md

copyright: Made with ❤️‍🔥 at Futured

extra:
version:
provider: mike
social:
- icon: material/web
name: Web
link: https://www.futured.app
- icon: fontawesome/brands/github
name: GitHub
link: https://www.github.com/futuredapp
- icon: fontawesome/brands/linkedin
name: LinkedIn
link: https://www.linkedin.com/company/futuredapps
- icon: fontawesome/brands/instagram
name: Instagram
link: https://www.instagram.com/futuredapps

extra_css:
- stylesheets/extra.css

markdown_extensions:
- admonition
- attr_list
- md_in_html
- pymdownx.details
- pymdownx.superfences
- pymdownx.tabbed:
alternate_style: true
- pymdownx.blocks.caption
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
Loading
Loading