Compare commits

..

29 Commits

Author SHA1 Message Date
verified-commit[bot] dab70e7e9c chore(release): prepare for 3.32.8 2025-07-29 17:49:11 +00:00
verified-commit[bot] 282af4caac chore(release): update flutter dependencies in version.json for 3.32.8 (#365)
Automated changes by
[create-pull-request](https://github.com/peter-evans/create-pull-request)
GitHub action

Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2025-07-29 19:48:58 +02:00
renovate[bot] 174020461b chore(deps): update debian:12.11-slim docker digest to 2424c18 (#366)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Eligio Mariño <22875166+gmeligio@users.noreply.github.com>
2025-07-28 22:27:20 +02:00
renovate[bot] cc23212035 fix(deps): update dependency cross-env to v10 (#367)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-28 20:50:45 +02:00
verified-commit[bot] 94ce0684d4 chore(release): prepare for 3.32.7 2025-07-17 20:05:04 +00:00
verified-commit[bot] 3b76d4c78c chore(release): update flutter dependencies in version.json for 3.32.7 (#364)
Automated changes by
[create-pull-request](https://github.com/peter-evans/create-pull-request)
GitHub action

Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2025-07-17 22:04:45 +02:00
renovate[bot] c5a453f021 chore(deps): update mcr.microsoft.com/windows/servercore:ltsc2025 docker digest to e4d4b91 (#363)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 08:55:52 +02:00
Eligio Mariño 2084aa62d7 ci: build image path to solve "skip output since it may contain secret" (#362) 2025-07-13 18:40:51 +02:00
verified-commit[bot] 5d87da6c3a chore(release): prepare for 3.32.6 2025-07-13 14:31:57 +00:00
verified-commit[bot] 6335d3f22a chore(release): update flutter dependencies in version.json for 3.32.6 (#361)
Automated changes by
[create-pull-request](https://github.com/peter-evans/create-pull-request)
GitHub action

Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2025-07-13 16:31:46 +02:00
renovate[bot] 56134b64af chore(deps): update node.js to v22.17.0 (#358)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Eligio Mariño <22875166+gmeligio@users.noreply.github.com>
2025-07-13 14:48:53 +02:00
renovate[bot] 67285c77fb chore(deps): update github-actions (#359)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-13 14:23:35 +02:00
renovate[bot] fd1168121a chore(deps): update debian:12.11-slim docker digest to 6ac2c08 (#360)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-07 21:12:53 +02:00
verified-commit[bot] f3c90f5a11 chore(release): prepare for 3.32.5 2025-06-26 04:12:47 +00:00
verified-commit[bot] cd61c75bf0 chore(release): update flutter dependencies in version.json for 3.32.5 (#357)
Automated changes by
[create-pull-request](https://github.com/peter-evans/create-pull-request)
GitHub action

Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2025-06-26 06:12:30 +02:00
renovate[bot] c2ac9525bd chore(deps): update debian:12.11-slim docker digest to e5865e6 (#355)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-16 17:28:13 +02:00
renovate[bot] c2de027b49 chore(deps): update mcr.microsoft.com/windows/servercore:ltsc2025 docker digest to 4c8150b (#356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-16 11:36:49 +02:00
Eligio Mariño e642c38317 ci: parse json before output (#354) 2025-06-14 17:58:29 +02:00
verified-commit[bot] 233c2178d6 chore(release): prepare for 3.32.4 2025-06-14 14:11:55 +00:00
verified-commit[bot] ba54de256a chore(release): update flutter dependencies in version.json for 3.32.4 (#353)
Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2025-06-14 16:11:39 +02:00
Eligio Mariño 6090f0667a ci: split release workflow into jobs (#352) 2025-06-14 15:25:44 +02:00
verified-commit[bot] 150bb4ecea chore(release): prepare for 3.32.3 2025-06-12 21:46:58 +00:00
verified-commit[bot] 69b7f74fb6 chore(release): update flutter dependencies in version.json for 3.32.3 (#351)
Automated changes by
[create-pull-request](https://github.com/peter-evans/create-pull-request)
GitHub action

Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2025-06-12 23:46:42 +02:00
verified-commit[bot] 74248a1094 chore(release): update flutter dependencies in version.json for 3.32.2 (#350)
Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
Co-authored-by: Eligio Mariño <22875166+gmeligio@users.noreply.github.com>
2025-06-12 07:49:15 +02:00
Eligio Mariño 6b9e03009d ci: add VERSION_MANIFEST to tag workflow (#349) 2025-06-06 09:16:32 +02:00
verified-commit[bot] f8c0636810 chore(release): prepare for 3.32.2 2025-06-05 20:38:47 +00:00
verified-commit[bot] a32d4abcb9 chore(release): update flutter dependencies in version.json for 3.32.2 (#348)
Co-authored-by: verified-commit[bot] <180343340+verified-commit[bot]@users.noreply.github.com>
2025-06-05 19:17:21 +02:00
renovate[bot] 8ed6bdbb8b chore(deps): update github-actions (#346)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-01 11:48:11 +02:00
Eligio Mariño 9dba4d7096 ci: split into tag.yml and changelog.yml workflows (#347) 2025-06-01 11:24:27 +02:00
17 changed files with 436 additions and 639 deletions
+13 -20
View File
@@ -27,20 +27,7 @@ jobs:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Login to Docker Hub
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Setup CUE
uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0
with:
repo: cue-lang/cue
tag: v0.13.0
digest: 59ba96137da07cd2cdd2e17ec33af81f850126f022f25dd96516f0b42071b6a9
- name: Read environment variables from version.json
- name: Read environment variables from the version manifest
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
@@ -61,10 +48,16 @@ jobs:
type=raw,value=${{ env.FLUTTER_VERSION }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to Docker Hub
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Build image and push to local Docker daemon
uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
file: android.Dockerfile
load: true
@@ -90,7 +83,7 @@ jobs:
# TODO: Parallelize testing and vulnerability scanning
- name: Scan with Docker Scout
id: docker-scout
uses: docker/scout-action@381b657c498a4d287752e7f2cfb2b41823f566d9 # v1.17.1
uses: docker/scout-action@aceeb83b88f2ae54376891227858dda7af647183 # v1.18.1
with:
command: compare, recommendations
# Use the Docker Hub image that is the first tag in the metadata
@@ -105,7 +98,7 @@ jobs:
# debug: true
# verbose-debug: true
validate_version:
validate_version_files:
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
@@ -154,9 +147,9 @@ jobs:
- name: Setup NodeJS
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
cache: 'npm'
cache: npm
cache-dependency-path: docs/src/package-lock.json
node-version-file: docs/src/package.json
node-version: lts/*
- name: Update documentation
working-directory: docs/src
+61
View File
@@ -0,0 +1,61 @@
on:
push:
branches:
- main
paths:
- config/version.json
workflow_dispatch:
jobs:
changelog:
runs-on: ubuntu-24.04
env:
IMAGE_REPOSITORY_NAME: flutter-android
VERSION_MANIFEST: config/version.json
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
# TODO: Fetch only a few commits after using --unreleased in git-cliff
# Fetch all commits to use as input for the changelog generation
fetch-depth: 0
# Fetch all tags to use as input for the changelog generation
fetch-tags: true
- name: Setup git-cliff
uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0
with:
repo: orhun/git-cliff
tag: v2.8.0
digest: 17da092783079c63a0fb14c24fbfa0d3b589e225c6ef01c93111e39cecbc88e8
- name: Read environment variables from the version manifest
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
IMAGE_REPOSITORY_NAME: ${{ env.IMAGE_REPOSITORY_NAME }}
VERSION_MANIFEST: ${{ env.VERSION_MANIFEST }}
with:
script: |
const script = require('./script/setEnvironmentVariables.js')
return await script({ core })
- name: Update changelog
run: |
git-cliff -v --tag ${{ env.FLUTTER_VERSION }} --github-repo ${{ github.repository }} --output changelog.md
- name: Generate authentication token with GitHub App to trigger Actions
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
id: app-token
with:
app-id: ${{ secrets.VERIFIED_COMMIT_ID }}
private-key: ${{ secrets.VERIFIED_COMMIT_KEY }}
repositories: ${{ github.event.repository.name }}
owner: ${{ github.repository_owner }}
- name: Commit and push changelog
uses: grafana/github-api-commit-action@b1d81091e8480dd11fcea8bc1f0ab977a0376ca5 # v1.0.0
with:
commit-message: "chore(release): prepare for ${{ env.FLUTTER_VERSION }}"
stage-all-files: true
token: ${{ steps.app-token.outputs.token }}
+6 -51
View File
@@ -2,6 +2,8 @@ on:
push:
branches:
- main
paths-ignore:
- changelog.md
workflow_dispatch:
# Read-only permissions by default
@@ -34,7 +36,7 @@ jobs:
tag: v0.13.0
digest: 59ba96137da07cd2cdd2e17ec33af81f850126f022f25dd96516f0b42071b6a9
- name: Read environment variables from version.json
- name: Read environment variables from the version manifest
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
@@ -55,10 +57,10 @@ jobs:
type=raw,value=${{ env.FLUTTER_VERSION }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Build image and push to local Docker daemon
uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
file: android.Dockerfile
load: true
@@ -80,51 +82,4 @@ jobs:
with:
image: ${{ fromJSON(steps.metadata.outputs.json).tags[0] }}
config: test/android.yml
create_git_tag:
permissions:
# Allow to write contents to push tags
contents: write
needs: test_image
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Generate authentication token with GitHub App to trigger Actions
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
id: app-token
with:
app-id: ${{ secrets.VERIFIED_COMMIT_ID }}
private-key: ${{ secrets.VERIFIED_COMMIT_KEY }}
repositories: ${{ github.event.repository.name }}
owner: ${{ github.repository_owner }}
- name: Setup CUE
uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0
with:
repo: cue-lang/cue
tag: v0.13.0
digest: 59ba96137da07cd2cdd2e17ec33af81f850126f022f25dd96516f0b42071b6a9
- name: Read environment variables from version.json
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
IMAGE_REPOSITORY_NAME: ${{ env.IMAGE_REPOSITORY_NAME }}
VERSION_MANIFEST: ${{ env.VERSION_MANIFEST }}
with:
script: |
const script = require('./script/setEnvironmentVariables.js')
return await script({ core })
- name: Create Tag for a New Flutter Version
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
OLD_FLUTTER_VERSION: ${{ vars.FLUTTER_VERSION }}
NEW_FLUTTER_VERSION: ${{ env.FLUTTER_VERSION }}
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
const script = require('./script/createGitTag.js')
await script({ core, context, github })
+129 -79
View File
@@ -1,20 +1,21 @@
on:
push:
tags:
- '*'
- '*'
workflow_dispatch:
# Read-only permissions by default
permissions:
contents: read
env:
FLUTTER_VERSION: ${{ github.ref_name }}
jobs:
release_android:
permissions:
# Allow to write packages to push the container image to the Github Container Registry
packages: write
# Allow to write security events to upload the results to code-scanning dashboard.
security-events: write
runs-on: ubuntu-24.04
env:
IMAGE_REPOSITORY_NAME: flutter-android
@@ -24,43 +25,7 @@ jobs:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Generate authentication token with GitHub App to trigger Actions
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
id: app-token
with:
app-id: ${{ secrets.VERIFIED_COMMIT_ID }}
private-key: ${{ secrets.VERIFIED_COMMIT_KEY }}
repositories: ${{ github.event.repository.name }}
owner: ${{ github.repository_owner }}
- name: Login to Docker Hub
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Login to Quay.io
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
- name: Setup CUE
uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0
with:
repo: cue-lang/cue
tag: v0.13.0
digest: 59ba96137da07cd2cdd2e17ec33af81f850126f022f25dd96516f0b42071b6a9
- name: Read environment variables from version.json
- name: Read environment variables from the version manifest
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
@@ -83,10 +48,30 @@ jobs:
type=raw,value=${{ env.FLUTTER_VERSION }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to Docker Hub
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Login to Quay.io
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
- name: Build image and push it to registries
uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
file: android.Dockerfile
push: true
@@ -103,6 +88,27 @@ jobs:
android_ndk_version=${{ env.ANDROID_NDK_VERSION }}
cmake_version=${{ env.CMAKE_VERSION }}
update_description:
runs-on: ubuntu-24.04
needs: release_android
env:
IMAGE_REPOSITORY_NAME: flutter-android
VERSION_MANIFEST: config/version.json
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Read environment variables from the version manifest
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
IMAGE_REPOSITORY_NAME: ${{ env.IMAGE_REPOSITORY_NAME }}
VERSION_MANIFEST: ${{ env.VERSION_MANIFEST }}
with:
script: |
const script = require('./script/setEnvironmentVariables.js')
return await script({ core })
- name: Update Docker Hub description
uses: peter-evans/dockerhub-description@432a30c9e07499fd01da9f8a49f0faf9e0ca5b77 # v4.0.2
with:
@@ -112,54 +118,98 @@ jobs:
short-description: ${{ github.event.repository.description }}
readme-filepath: readme.md
record_image:
permissions:
# Allow to write code scanning results to GitHub's code scanning dashboard
security-events: write
runs-on: ubuntu-24.04
needs: release_android
env:
IMAGE_REPOSITORY_NAME: flutter-android
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Login to Docker Hub
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Record image in Docker Scout environment
id: docker-scout-environment
uses: docker/scout-action@381b657c498a4d287752e7f2cfb2b41823f566d9 # v1.17.1
uses: docker/scout-action@aceeb83b88f2ae54376891227858dda7af647183 # v1.18.1
with:
command: environment, cves
# Use the Docker Hub image that is the first tag in the metadata
image: registry://${{ fromJson(steps.metadata.outputs.json).tags[0] }}
image: registry://${{ github.repository_owner }}/${{ env.IMAGE_REPOSITORY_NAME }}:${{ env.FLUTTER_VERSION }}
environment: prod
only-fixed: true
organization: ${{ secrets.DOCKER_HUB_USERNAME }}
sarif-file: sarif.json
- name: Upload the results to GitHub's code scanning dashboard
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
sarif_file: sarif.json
set_bootstrap_image:
runs-on: ubuntu-24.04
needs: release_android
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Generate authentication token with GitHub App to trigger Actions
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
id: app-token
with:
app-id: ${{ secrets.VERIFIED_COMMIT_ID }}
private-key: ${{ secrets.VERIFIED_COMMIT_KEY }}
repositories: ${{ github.event.repository.name }}
owner: ${{ github.repository_owner }}
- name: Update bootstrap image tag in environment variable
run: gh variable set FLUTTER_VERSION --body "${{ env.FLUTTER_VERSION }}"
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16
create_github_release:
permissions:
# Allow to create releases and upload assets to them
contents: write
runs-on: ubuntu-24.04
needs: release_android
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
sarif_file: sarif.json
# TODO: Fetch only a few commits after using --unreleased in git-cliff
# Fetch all commits to use as input for the changelog generation
fetch-depth: 0
# Fetch all tags to use as input for the changelog generation
fetch-tags: true
# TODO: Use kaniko for building and pushing after slowness is solved
# TODO: https://github.com/GoogleContainerTools/kaniko/issues/970
# TODO: https://github.com/GoogleContainerTools/kaniko/issues/875
# TODO: Use kaniko for building and pushing after pushing to Docker daemon is solved, to be able to test Docker image, with the following issues
# TODO: https://github.com/GoogleContainerTools/kaniko/issues/1331
# - name: Build image and push it to registries
# uses: int128/kaniko-action@v1
# with:
# push: true
# cache: true
# cache-repository: ${{ steps.ecr-cache.outputs.repository-uri }}
# tags: ${{ steps.metadata.outputs.tags }}
# labels: ${{ steps.metadata.outputs.labels }}
# build-args: |
# flutter_version=${{ env.FLUTTER_VERSION }}
# android_build_tools_version=${{ env.ANDROID_BUILD_TOOLS_VERSION }}
# android_platform_versions=${{ env.ANDROID_PLATFORM_VERSIONS }}
# kaniko-args: |
# --skip-unused-stages=true
# --use-new-run=true
# --snapshotMode=redo
# target: android
# executor: gcr.io/kaniko-project/executor:latest
# TODO: https://github.com/snok/container-retention-policy
# TODO: Push a build image before the final image
# TODO: Run basic tests with build image
# TODO: Push final image only if tests pass https://redhat-cop.github.io/ci/publishing-images.html
- name: Setup git-cliff
uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0
with:
repo: orhun/git-cliff
tag: v2.8.0
digest: 17da092783079c63a0fb14c24fbfa0d3b589e225c6ef01c93111e39cecbc88e8
- name: Get the tag details
id: get-tag-details
run: |-
# Store the changelog in a temporary directory to not pollute the working directory
mkdir -p "${{ runner.temp }}/git-cliff"
changelog_file="${{ runner.temp }}/git-cliff/changelog.md"
echo "changelog_file=${changelog_file}" >>$GITHUB_OUTPUT
git-cliff -v --latest --strip all --no-exec --github-repo "${{ github.repository }}" --output "$changelog_file"
- name: Create Github release
env:
GH_TOKEN: ${{ github.token }}
run: |-
gh release create "${{ env.FLUTTER_VERSION }}" \
--title="${{ env.FLUTTER_VERSION }}" \
--notes-file="${{ steps.get-tag-details.outputs.changelog_file }}"
+2 -2
View File
@@ -39,7 +39,7 @@ jobs:
persist-credentials: false
- name: Run analysis
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
with:
results_file: results.sarif
results_format: sarif
@@ -70,6 +70,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@28deaeda66b76a05916b6923827895f2b14ab387 # v3.28.16
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
sarif_file: results.sarif
+48
View File
@@ -0,0 +1,48 @@
on:
push:
branches:
- main
paths:
- changelog.md
workflow_dispatch:
jobs:
create_git_tag:
runs-on: ubuntu-24.04
env:
IMAGE_REPOSITORY_NAME: flutter-android
VERSION_MANIFEST: config/version.json
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Generate authentication token with GitHub App to trigger Actions
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
id: app-token
with:
app-id: ${{ secrets.VERIFIED_COMMIT_ID }}
private-key: ${{ secrets.VERIFIED_COMMIT_KEY }}
repositories: ${{ github.event.repository.name }}
owner: ${{ github.repository_owner }}
- name: Read environment variables from the version manifest
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
IMAGE_REPOSITORY_NAME: ${{ env.IMAGE_REPOSITORY_NAME }}
VERSION_MANIFEST: ${{ env.VERSION_MANIFEST }}
with:
script: |
const script = require('./script/setEnvironmentVariables.js')
return await script({ core })
- name: Create Tag for a New Flutter Version
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
OLD_FLUTTER_VERSION: ${{ vars.FLUTTER_VERSION }}
NEW_FLUTTER_VERSION: ${{ env.FLUTTER_VERSION }}
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
const script = require('./script/createGitTag.js')
await script({ core, context, github })
+82 -28
View File
@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-24.04
outputs:
new_version: ${{ steps.update_flutter_version.outputs.result }}
version_artifact_id: ${{ steps.upload-version.outputs.artifact-id }}
flutter_version_artifact_id: ${{ steps.upload-version.outputs.artifact-id }}
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -60,6 +60,8 @@ jobs:
pull-requests: write
needs: update_flutter_version
if: ${{ needs.update_flutter_version.outputs.new_version == 'true' }}
outputs:
version_artifact_id: ${{ steps.upload-version.outputs.artifact-id }}
runs-on: ubuntu-24.04
container:
image: ghcr.io/${{ github.repository_owner }}/flutter-android:${{ vars.FLUTTER_VERSION }}
@@ -69,12 +71,6 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
# TODO: Fetch only a few commits after using --unreleased in git-cliff
# Fetch all commits to use as input for the changelog generation
fetch-depth: 0
# Fetch all tags to use as input for the changelog generation
fetch-tags: true
# TODO: Workaround because actions/download-artifact can't overwrite existing files
# Check if this workaround can be removed after the following issues are fixed:
@@ -86,20 +82,11 @@ jobs:
- name: Download artifact with the new Flutter version
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
artifact-ids: ${{ needs.update_flutter_version.outputs.version_artifact_id }}
artifact-ids: ${{ needs.update_flutter_version.outputs.flutter_version_artifact_id }}
path: config
# Download to the configured path instead of separated directories by artifact id
merge-multiple: true
- name: Generate authentication token with GitHub App to trigger Actions
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
id: app-token
with:
app-id: ${{ secrets.VERIFIED_COMMIT_ID }}
private-key: ${{ secrets.VERIFIED_COMMIT_KEY }}
repositories: ${{ github.event.repository.name }}
owner: ${{ github.repository_owner }}
- name: Copy Flutter version into version manifest and export FLUTTER_* environment variables
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
@@ -136,6 +123,35 @@ jobs:
run: |
rm -rf test_app
- name: Upload artifact with the updated version.json
id: upload-version
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: version.json
path: config/version.json
validate_config_version:
needs: update_android_version
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# TODO: Workaround because actions/download-artifact can't overwrite existing files
# Check if this workaround can be removed after the following issues are fixed:
# https://github.com/actions/download-artifact/issues/225
# https://github.com/actions/download-artifact/issues/138
- name: Delete version.json
run: rm config/version.json
- name: Download artifact with the new Flutter version
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
artifact-ids: ${{ needs.update_android_version.outputs.version_artifact_id }}
path: config
# Download to the configured path instead of separated directories by artifact id
merge-multiple: true
- name: Setup CUE
uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0
with:
@@ -146,12 +162,41 @@ jobs:
- name: Validate version.json with CUE
run: cue vet config/version.cue -d '#Version' config/version.json
update_docs_and_create_pr:
needs:
- update_flutter_version
- update_android_version
- validate_config_version
runs-on: ubuntu-24.04
env:
IMAGE_REPOSITORY_NAME: flutter-android
VERSION_MANIFEST: config/version.json
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# TODO: Workaround because actions/download-artifact can't overwrite existing files
# Check if this workaround can be removed after the following issues are fixed:
# https://github.com/actions/download-artifact/issues/225
# https://github.com/actions/download-artifact/issues/138
- name: Delete flutter_version.json and version.json
run: |-
rm config/flutter_version.json config/version.json
- name: Download artifact with the new Flutter version
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
artifact-ids: ${{ needs.update_flutter_version.outputs.flutter_version_artifact_id }},${{ needs.update_android_version.outputs.version_artifact_id }}
path: config
# Download to the configured path instead of separated directories by artifact id
merge-multiple: true
- name: Setup NodeJS
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
cache: 'npm'
cache: npm
cache-dependency-path: docs/src/package-lock.json
node-version-file: docs/src/package.json
node-version: lts/*
- name: Update documentation
working-directory: docs/src
@@ -159,21 +204,30 @@ jobs:
npm ci --prefer-offline
npm run build
- name: Setup git-cliff
uses: jaxxstorm/action-install-gh-release@6096f2a2bbfee498ced520b6922ac2c06e990ed2 # v2.1.0
- name: Read environment variables from the version manifest
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
IMAGE_REPOSITORY_NAME: ${{ env.IMAGE_REPOSITORY_NAME }}
VERSION_MANIFEST: ${{ env.VERSION_MANIFEST }}
with:
repo: orhun/git-cliff
tag: v2.8.0
digest: 17da092783079c63a0fb14c24fbfa0d3b589e225c6ef01c93111e39cecbc88e8
- name: Update changelog
run: |
git-cliff -v --tag ${{ env.FLUTTER_VERSION }} --github-repo ${{ github.repository }} --output changelog.md
script: |
const script = require('./script/setEnvironmentVariables.js')
return await script({ core })
- name: Create commit message variable
run: |
echo "COMMIT_MESSAGE=chore(release): update flutter dependencies in version.json for ${{ env.FLUTTER_VERSION }}" >> $GITHUB_ENV
- name: Generate authentication token with GitHub App to trigger Actions
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
id: app-token
with:
app-id: ${{ secrets.VERIFIED_COMMIT_ID }}
private-key: ${{ secrets.VERIFIED_COMMIT_KEY }}
repositories: ${{ github.event.repository.name }}
owner: ${{ github.repository_owner }}
# TODO: Generate changelog for the new flutter version, that will be the new tag
- name: Create pull request if there are changes
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
+1 -1
View File
@@ -33,7 +33,7 @@ jobs:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Read environment variables from version.json
- name: Read environment variables from the version manifest
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
+1 -1
View File
@@ -1,4 +1,4 @@
FROM debian:12.11-slim@sha256:90522eeb7e5923ee2b871c639059537b30521272f10ca86fdbbbb2b75a8c40cd AS flutter
FROM debian:12.11-slim@sha256:2424c1850714a4d94666ec928e24d86de958646737b1d113f5b2207be44d37d8 AS flutter
SHELL ["/bin/bash", "-euxo", "pipefail", "-c"]
+58
View File
@@ -2,6 +2,64 @@
All notable changes to this project will be documented in this file.
## [3.32.8] - 2025-07-29
### 🐛 Bug Fixes
- *(deps)* Update dependency cross-env to v10 (#367)
### ⚙️ Miscellaneous Tasks
- *(release)* Update flutter dependencies in version.json for 3.32.8 (#365)
## [3.32.7] - 2025-07-17
### ⚙️ Miscellaneous Tasks
- Build image path to solve "skip output since it may contain secret" (#362)
- *(release)* Update flutter dependencies in version.json for 3.32.7 (#364)
## [3.32.6] - 2025-07-13
### ⚙️ Miscellaneous Tasks
- *(release)* Update flutter dependencies in version.json for 3.32.6 (#361)
## [3.32.5] - 2025-06-26
### ⚙️ Miscellaneous Tasks
- Parse json before output (#354)
- *(release)* Update flutter dependencies in version.json for 3.32.5 (#357)
## [3.32.4] - 2025-06-14
### ⚙️ Miscellaneous Tasks
- Split release workflow into jobs (#352)
- *(release)* Update flutter dependencies in version.json for 3.32.4 (#353)
## [3.32.3] - 2025-06-12
### ⚙️ Miscellaneous Tasks
- Add VERSION_MANIFEST to tag workflow (#349)
- *(release)* Update flutter dependencies in version.json for 3.32.2 (#350)
- *(release)* Update flutter dependencies in version.json for 3.32.3 (#351)
## [3.32.2] - 2025-06-05
### ⚙️ Miscellaneous Tasks
- Split into tag.yml and changelog.yml workflows (#347)
- *(release)* Update flutter dependencies in version.json for 3.32.2 (#348)
## [3.32.1] - 2025-05-30
### ⚙️ Miscellaneous Tasks
- *(release)* Update flutter dependencies in version.json for 3.32.1 (#345)
## [3.32.0] - 2025-05-23
### ⚙️ Miscellaneous Tasks
+2 -2
View File
@@ -1,7 +1,7 @@
{
"flutter": {
"channel": "stable",
"commit": "b25305a8832cfc6ba632a7f87ad455e319dccce8",
"version": "3.32.1"
"commit": "edada7c56edf4a183c1735310e123c7f923584f1",
"version": "3.32.8"
}
}
+3 -3
View File
@@ -1,8 +1,8 @@
{
"flutter": {
"channel": "stable",
"commit": "b25305a8832cfc6ba632a7f87ad455e319dccce8",
"version": "3.32.1"
"commit": "edada7c56edf4a183c1735310e123c7f923584f1",
"version": "3.32.8"
},
"android": {
"platforms": [
@@ -27,6 +27,6 @@
}
},
"fastlane": {
"version": "2.227.2"
"version": "2.228.0"
}
}
+16 -435
View File
@@ -9,7 +9,7 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"cross-env": "^7.0.3",
"cross-env": "^10.0.0",
"mdx-to-md": "^0.5.0",
"react": "^19.1.0",
"react-dom": "^19.1.0",
@@ -29,6 +29,12 @@
"node": ">=6.9.0"
}
},
"node_modules/@epic-web/invariant": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz",
"integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==",
"license": "MIT"
},
"node_modules/@esbuild-plugins/node-resolve": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@esbuild-plugins/node-resolve/-/node-resolve-0.2.2.tgz",
@@ -44,431 +50,6 @@
"esbuild": "*"
}
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
"integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
"cpu": [
"ppc64"
],
"license": "MIT",
"optional": true,
"os": [
"aix"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
"integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
"cpu": [
"arm"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
"integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
"integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"android"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
"integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
"integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
"integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
"integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
"integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
"cpu": [
"arm"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
"integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
"integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
"cpu": [
"ia32"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
"integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
"cpu": [
"loong64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
"integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
"cpu": [
"mips64el"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
"integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
"cpu": [
"ppc64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
"integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
"cpu": [
"riscv64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
"integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
"cpu": [
"s390x"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
"integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
"integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
"integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
"integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
"integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
"integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"sunos"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
"integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
"integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
"cpu": [
"ia32"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
"integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"peer": true,
"engines": {
"node": ">=18"
}
},
"node_modules/@fal-works/esbuild-plugin-global-externals": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz",
@@ -890,20 +471,20 @@
}
},
"node_modules/cross-env": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
"integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.0.0.tgz",
"integrity": "sha512-aU8qlEK/nHYtVuN4p7UQgAwVljzMg8hB4YK5ThRqD2l/ziSnryncPNn7bMLt5cFYsKVKBh8HqLqyCoTupEUu7Q==",
"license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.1"
"@epic-web/invariant": "^1.0.0",
"cross-spawn": "^7.0.6"
},
"bin": {
"cross-env": "src/bin/cross-env.js",
"cross-env-shell": "src/bin/cross-env-shell.js"
"cross-env": "dist/bin/cross-env.js",
"cross-env-shell": "dist/bin/cross-env-shell.js"
},
"engines": {
"node": ">=10.14",
"npm": ">=6",
"yarn": ">=1"
"node": ">=20"
}
},
"node_modules/cross-spawn": {
+1 -4
View File
@@ -14,14 +14,11 @@
"author": "",
"license": "ISC",
"dependencies": {
"cross-env": "^7.0.3",
"cross-env": "^10.0.0",
"mdx-to-md": "^0.5.0",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"remark-gfm": "^4.0.1",
"remark-toc": "^9.0.0"
},
"volta": {
"node": "22.16.0"
}
}
+12 -12
View File
@@ -23,10 +23,10 @@ The images includes the minimum tools to run Flutter and build apps. The version
## Features
* Installed Flutter SDK 3.32.1.
* Installed Flutter SDK 3.32.8.
* Analytics disabled by default, opt-in if `ENABLE_ANALYTICS` environment variable is passed when running the container.
* Rootless user `flutter:flutter`, with permissions to run on Github workflows and GitLab CI.
* Cached Fastlane gem 2.227.2.
* Cached Fastlane gem 2.228.0.
* Minimal image with predownloaded SDKs and tools ready to run `flutter` commands for the Android platform.
Predownloaded SDKs and tools in Android:
@@ -40,15 +40,15 @@ Predownloaded SDKs and tools in Android:
| Registry | flutter-android |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Docker Hub | [gmeligio/flutter-android:3.32.1](https://hub.docker.com/r/gmeligio/flutter-android) |
| GitHub Container Registry | [ghcr.io/gmeligio/flutter-android:3.32.1](https://github.com/gmeligio/flutter-docker-image/pkgs/container/flutter-android) |
| Quay | [quay.io/gmeligio/flutter-android:3.32.1](https://quay.io/repository/gmeligio/flutter-android) |
| Docker Hub | [gmeligio/flutter-android:3.32.8](https://hub.docker.com/r/gmeligio/flutter-android) |
| GitHub Container Registry | [ghcr.io/gmeligio/flutter-android:3.32.8](https://github.com/gmeligio/flutter-docker-image/pkgs/container/flutter-android) |
| Quay | [quay.io/gmeligio/flutter-android:3.32.8](https://quay.io/repository/gmeligio/flutter-android) |
On the terminal:
```bash
# From GitHub Container Registry
docker run --rm -it ghcr.io/gmeligio/flutter-android:3.32.1 bash
docker run --rm -it ghcr.io/gmeligio/flutter-android:3.32.8 bash
```
On a workflow in GitHub Actions:
@@ -58,7 +58,7 @@ jobs:
build:
runs-on: ubuntu-22.04
container:
image: ghcr.io/gmeligio/flutter-android:3.32.1
image: ghcr.io/gmeligio/flutter-android:3.32.8
steps:
- name: Checkout
uses: actions/checkout@v2
@@ -70,7 +70,7 @@ On a `.gitlab-ci.yml` in GitLab CI:
```yaml
build:
image: ghcr.io/gmeligio/flutter-android:3.32.1
image: ghcr.io/gmeligio/flutter-android:3.32.8
script:
- flutter build apk
```
@@ -91,20 +91,20 @@ bundle exec fastlane
Every new tag on the flutter stable channel gets built. The tag is composed of the Flutter version used to build the image:
* Docker image: gmeligio/flutter-android:3.32.1
* Flutter version: 3.32.1
* Docker image: gmeligio/flutter-android:3.32.8
* Flutter version: 3.32.8
## Building Locally
The android.Dockerfile expects a few arguments:
* `flutter_version <string>`: The version of Flutter to use when building. Example: 3.32.1
* `flutter_version <string>`: The version of Flutter to use when building. Example: 3.32.8
* `android_build_tools_version <string>`: The version of the Android SDK Build Tools to install. Example: 34.0.0
* `android_platform_versions <list>`: The versions of the Android SDK Platforms to install, separated by spaces. Example: 35
```bash
# Android
docker build --target android --build-arg flutter_version=3.32.1 --build-arg fastlane_version=2.227.2 --build-arg android_build_tools_version=34.0.0 --build-arg android_platform_versions="35" -t android-test .
docker build --target android --build-arg flutter_version=3.32.8 --build-arg fastlane_version=2.228.0 --build-arg android_build_tools_version=34.0.0 --build-arg android_platform_versions="35" -t android-test .
```
## Roadmap
View File
+1 -1
View File
@@ -1,6 +1,6 @@
# escape=`
FROM mcr.microsoft.com/windows/servercore:ltsc2025@sha256:c6b2b26058a096cb3f627ed03d0be66bea262c89222c988b516e63ae68f3ea72 as flutter
FROM mcr.microsoft.com/windows/servercore:ltsc2025@sha256:e4d4b91f739636a7288d0189be0c5d61dccfd719e3d42af3ae591f77e41e58d5 as flutter
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]