Files
firezone/.github/workflows/publish-release.yml
dependabot[bot] 7688dd1862 build(deps): bump docker/login-action from 3.4.0 to 3.6.0 (#10838)
Bumps [docker/login-action](https://github.com/docker/login-action) from
3.4.0 to 3.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/login-action/releases">docker/login-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.6.0</h2>
<ul>
<li>Add <code>registry-auth</code> input for raw authentication to
registries by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/887">docker/login-action#887</a></li>
<li>Bump <code>@​aws-sdk/client-ecr</code> to 3.890.0 in <a
href="https://redirect.github.com/docker/login-action/pull/882">docker/login-action#882</a>
<a
href="https://redirect.github.com/docker/login-action/pull/890">docker/login-action#890</a></li>
<li>Bump <code>@​aws-sdk/client-ecr-public</code> to 3.890.0 in <a
href="https://redirect.github.com/docker/login-action/pull/882">docker/login-action#882</a>
<a
href="https://redirect.github.com/docker/login-action/pull/890">docker/login-action#890</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.62.1 to 0.63.0 in
<a
href="https://redirect.github.com/docker/login-action/pull/883">docker/login-action#883</a></li>
<li>Bump brace-expansion from 1.1.11 to 1.1.12 in <a
href="https://redirect.github.com/docker/login-action/pull/880">docker/login-action#880</a></li>
<li>Bump undici from 5.28.4 to 5.29.0 in <a
href="https://redirect.github.com/docker/login-action/pull/879">docker/login-action#879</a></li>
<li>Bump tmp from 0.2.3 to 0.2.4 in <a
href="https://redirect.github.com/docker/login-action/pull/881">docker/login-action#881</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v3.5.0...v3.6.0">https://github.com/docker/login-action/compare/v3.5.0...v3.6.0</a></p>
<h2>v3.5.0</h2>
<ul>
<li>Support dual-stack endpoints for AWS ECR by <a
href="https://github.com/Spacefish"><code>@​Spacefish</code></a> <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/874">docker/login-action#874</a>
<a
href="https://redirect.github.com/docker/login-action/pull/876">docker/login-action#876</a></li>
<li>Bump <code>@​aws-sdk/client-ecr</code> to 3.859.0 in <a
href="https://redirect.github.com/docker/login-action/pull/860">docker/login-action#860</a>
<a
href="https://redirect.github.com/docker/login-action/pull/878">docker/login-action#878</a></li>
<li>Bump <code>@​aws-sdk/client-ecr-public</code> to 3.859.0 in <a
href="https://redirect.github.com/docker/login-action/pull/860">docker/login-action#860</a>
<a
href="https://redirect.github.com/docker/login-action/pull/878">docker/login-action#878</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.57.0 to 0.62.1 in
<a
href="https://redirect.github.com/docker/login-action/pull/870">docker/login-action#870</a></li>
<li>Bump form-data from 2.5.1 to 2.5.5 in <a
href="https://redirect.github.com/docker/login-action/pull/875">docker/login-action#875</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v3.4.0...v3.5.0">https://github.com/docker/login-action/compare/v3.4.0...v3.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5e57cd1181"><code>5e57cd1</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/890">#890</a>
from docker/dependabot/npm_and_yarn/aws-sdk-dependenc...</li>
<li><a
href="97e31439e8"><code>97e3143</code></a>
chore: update generated content</li>
<li><a
href="3a0796b57f"><code>3a0796b</code></a>
build(deps): bump the aws-sdk-dependencies group with 2 updates</li>
<li><a
href="5b7b28b1cc"><code>5b7b28b</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/882">#882</a>
from docker/dependabot/npm_and_yarn/aws-sdk-dependenc...</li>
<li><a
href="abc9fb3154"><code>abc9fb3</code></a>
chore: update generated content</li>
<li><a
href="d468688814"><code>d468688</code></a>
build(deps): bump the aws-sdk-dependencies group with 2 updates</li>
<li><a
href="a99b2f88fc"><code>a99b2f8</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/883">#883</a>
from docker/dependabot/npm_and_yarn/docker/actions-to...</li>
<li><a
href="0d7fae8057"><code>0d7fae8</code></a>
chore: update generated content</li>
<li><a
href="9832253cb7"><code>9832253</code></a>
build(deps): bump <code>@​docker/actions-toolkit</code> from 0.62.1 to
0.63.0</li>
<li><a
href="09e05bbdf6"><code>09e05bb</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/881">#881</a>
from docker/dependabot/npm_and_yarn/tmp-0.2.4</li>
<li>Additional commits viewable in <a
href="74a5d14239...5e57cd1181">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/login-action&package-manager=github_actions&previous-version=3.4.0&new-version=3.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-14 00:44:22 +00:00

220 lines
8.3 KiB
YAML

name: Publish release
run-name: Triggered by ${{ github.actor }}
on:
workflow_dispatch:
inputs:
release_name:
description: "Existing release name to publish"
required: true
release:
types:
- published
concurrency:
group: "publish-production-${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: false
jobs:
publish-docker-images:
if: >-
${{
startsWith(inputs.release_name || github.event.release.name, 'gateway') ||
startsWith(inputs.release_name || github.event.release.name, 'headless-client')
}}
runs-on: ubuntu-24.04
permissions:
# Needed to upload artifacts to a release
packages: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Login to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set variables
id: set-variables
env:
release_name: ${{ inputs.release_name || github.event.release.name }}
GH_TOKEN: ${{ github.token }}
run: |
set -xe
if [[ "$release_name" =~ gateway* ]]; then
ARTIFACT=gateway
VERSION=${release_name#gateway-}
elif [[ "$release_name" =~ headless* ]]; then
ARTIFACT=client
VERSION=${release_name#headless-client-}
else
echo "Shouldn't have gotten here. Exiting."
exit 1
fi
MAJOR_VERSION="${VERSION%%.*}"
MAJOR_MINOR_VERSION="${VERSION%.*}"
sha=$(gh release view "${release_name}" --json targetCommitish -q '.targetCommitish')
# shellcheck disable=SC2129 # individual env exports are cleaner
echo "artifact=$ARTIFACT" >> "$GITHUB_OUTPUT"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "major_version=$MAJOR_VERSION" >> "$GITHUB_OUTPUT"
echo "major_minor_version=$MAJOR_MINOR_VERSION" >> "$GITHUB_OUTPUT"
echo "sha=$sha" >> "$GITHUB_OUTPUT"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Pull and push
run: |
set -xe
SOURCE_TAG=ghcr.io/firezone/${{ steps.set-variables.outputs.artifact }}:${{ steps.set-variables.outputs.sha }}
docker buildx imagetools create \
-t ghcr.io/firezone/${{ steps.set-variables.outputs.artifact }}:${{ steps.set-variables.outputs.version }} \
-t ghcr.io/firezone/${{ steps.set-variables.outputs.artifact }}:${{ steps.set-variables.outputs.version }}-${{ steps.set-variables.outputs.sha }} \
-t ghcr.io/firezone/${{ steps.set-variables.outputs.artifact }}:${{ steps.set-variables.outputs.major_version }} \
-t ghcr.io/firezone/${{ steps.set-variables.outputs.artifact }}:${{ steps.set-variables.outputs.major_minor_version }} \
-t ghcr.io/firezone/${{ steps.set-variables.outputs.artifact }}:latest \
$SOURCE_TAG
publish-clients-to-winget:
name: Publish ${{ matrix.identifier }} to winget
runs-on: windows-latest
strategy:
matrix:
include:
- identifier: Firezone.Client.GUI
tag_prefix: gui-client
- identifier: Firezone.Client.Headless
tag_prefix: headless-client
steps:
- id: get-version
run: |
version=${{ inputs.release_name || github.event.release.name }}
version=${version#${{ matrix.tag_prefix }}-}
echo "version=$version" >> "$GITHUB_OUTPUT"
shell: bash
- uses: vedantmgoyal9/winget-releaser@19e706d4c9121098010096f9c495a70a7518b30f # main
if: ${{ startsWith((inputs.release_name || github.event.release.name), matrix.tag_prefix) }}
with:
identifier: ${{ matrix.identifier }}
version: ${{ steps.get-version.outputs.version }}
token: ${{ secrets.WINGET_TOKEN }}
release-notes-url: https://firezone.dev/changelog
release-tag: ${{ inputs.release_name || github.event.release.tag_name || github.ref_name }}
create-publish-pr:
runs-on: ubuntu-latest
strategy:
matrix:
include:
# TODO: This hack is needed because the macOS client isn't tagged as `apple-client`.
- tag_prefix: gateway
component: gateway
- tag_prefix: gui-client
component: gui-client
- tag_prefix: headless-client
component: headless-client
- tag_prefix: macos-client
component: apple-client
- tag_prefix: android-client
component: android-client
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
token: ${{ secrets.RELEASE_PR_BOT_GITHUB_TOKEN }}
- uses: ./.github/actions/setup-gpg
id: setup-gpg
if: ${{ startsWith(inputs.release_name || github.event.release.name, matrix.tag_prefix) }}
with:
key: ${{ secrets.RELEASE_PR_BOT_GPG_KEY }}
email: github-bot@firezone.dev
- if: ${{ startsWith(inputs.release_name || github.event.release.name, matrix.tag_prefix) }}
run: |
set -x
# Extract version from release name
version=${{ inputs.release_name || github.event.release.name }}
version=${version#${{ matrix.tag_prefix }}-}
# Configure git
git config --local user.email "github-bot@firezone.dev"
git config --local user.name "Firezone Bot"
git config --local user.signingkey "${{ steps.setup-gpg.outputs.key_id }}"
git config --local commit.gpgsign true
# Create the PR
scripts/create-publish-pr.sh ${{ matrix.component }} "$version"
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_PR_BOT_GITHUB_TOKEN }}
RELEASE_PR_BOT_GPG_KEY: "${{ secrets.RELEASE_PR_BOT_GPG_KEY }}"
create-sentry-release:
name: create_${{ matrix.component }}_sentry_release
runs-on: ubuntu-24.04
strategy:
matrix:
# TODO: This hack is needed because the macOS client isn't tagged as `apple-client`.
include:
- component: gateway
projects: gateway
- component: gui-client
projects: gui-client
- component: headless-client
projects: headless-client
- component: macos-client
projects: apple-client
- component: android-client
projects: android-client
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
- uses: ./.github/actions/create-sentry-release
if: ${{ startsWith(github.event.release.name, matrix.component) }}
with:
component: ${{ matrix.component }}
projects: ${{ matrix.projects }}
sentry_token: ${{ secrets.SENTRY_AUTH_TOKEN }}
promote-deb-packages:
runs-on: ubuntu-24.04
strategy:
matrix:
include:
- tag_prefix: gateway
deb_name: firezone-gateway
- tag_prefix: gui-client
deb_name: firezone-client-gui
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
- uses: ./.github/actions/setup-azure-cli
- name: Copy preview archive to import-stable
if: ${{ startsWith(inputs.release_name || github.event.release.name, matrix.tag_prefix) }}
run: |
set -e
# Extract version from release name
version=${{ inputs.release_name || github.event.release.name }}
version=${version#${{ matrix.tag_prefix }}-}
# Copy `.deb`s to `import-stable`
az storage blob copy start-batch \
--destination-container apt \
--source-container apt \
--pattern "pool-preview/${{ matrix.deb_name }}_$version*" \
--destination-path import-stable \
--connection-string "${{ secrets.AZURERM_ARTIFACTS_CONNECTION_STRING }}"
regenerate-apt-index:
needs: promote-deb-packages
uses: ./.github/workflows/_apt.yml
secrets: inherit