mirror of
https://github.com/esphome/esphome.git
synced 2026-08-22 22:26:21 +00:00
[ci] Name release runs after the version or dev tag they build (#18110)
This commit is contained in:
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
name: Nightly Dev Release
|
||||||
|
|
||||||
|
# Works out the dated dev tag and starts the release workflow with it, so that
|
||||||
|
# the release run is named after the tag it builds. A workflow run name is
|
||||||
|
# fixed when the run starts and cannot read a file or the current date.
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 2 * * *"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read # actions/checkout to read the version from esphome/const.py
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
trigger:
|
||||||
|
name: Start release build
|
||||||
|
if: github.repository == 'esphome/esphome'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read # actions/checkout to read the version from esphome/const.py
|
||||||
|
actions: write # gh workflow run starts release.yml
|
||||||
|
steps:
|
||||||
|
- name: Check out the repository
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
|
- name: Start the release workflow
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
run: |
|
||||||
|
VERSION=$(sed -n -E "s/^__version__\s+=\s+\"(.+)\"$/\1/p" esphome/const.py)
|
||||||
|
if [[ -z "$VERSION" ]]; then
|
||||||
|
echo "::error::Could not read __version__ from esphome/const.py"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
TAG="${VERSION}$(date --utc '+%Y%m%d')"
|
||||||
|
echo "Starting release build for ${TAG}"
|
||||||
|
gh workflow run release.yml --ref "${GITHUB_REF_NAME}" --field tag="${TAG}"
|
||||||
@@ -1,12 +1,23 @@
|
|||||||
---
|
---
|
||||||
name: Publish Release
|
name: Publish Release
|
||||||
|
|
||||||
|
# Releases (production and beta) are named after the version they publish.
|
||||||
|
# Dev builds are named after the dated dev tag, which is passed in by the
|
||||||
|
# nightly workflow because a run name cannot compute it itself.
|
||||||
|
run-name: ${{ github.event.inputs.tag || github.event.release.tag_name || format('Manual build ({0})', github.ref_name) }}
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description: >-
|
||||||
|
Tag to build. Only supported on dev, where the nightly workflow
|
||||||
|
uses it. Leave empty to build the version from esphome/const.py
|
||||||
|
with today's date appended.
|
||||||
|
required: false
|
||||||
|
default: ""
|
||||||
release:
|
release:
|
||||||
types: [published]
|
types: [published]
|
||||||
schedule:
|
|
||||||
- cron: "0 2 * * *"
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read # actions/checkout for all jobs; deploy jobs add their own scopes when they need to write
|
contents: read # actions/checkout for all jobs; deploy jobs add their own scopes when they need to write
|
||||||
@@ -23,6 +34,8 @@ jobs:
|
|||||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Get tag
|
- name: Get tag
|
||||||
id: tag
|
id: tag
|
||||||
|
env:
|
||||||
|
INPUT_TAG: ${{ github.event.inputs.tag }}
|
||||||
# yamllint disable rule:line-length
|
# yamllint disable rule:line-length
|
||||||
run: |
|
run: |
|
||||||
if [[ "${{ github.event_name }}" = "release" ]]; then
|
if [[ "${{ github.event_name }}" = "release" ]]; then
|
||||||
@@ -34,12 +47,23 @@ jobs:
|
|||||||
ENVIRONMENT="production"
|
ENVIRONMENT="production"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
TAG=$(cat esphome/const.py | sed -n -E "s/^__version__\s+=\s+\"(.+)\"$/\1/p")
|
|
||||||
today="$(date --utc '+%Y%m%d')"
|
|
||||||
TAG="${TAG}${today}"
|
|
||||||
BRANCH=${GITHUB_REF#refs/heads/}
|
BRANCH=${GITHUB_REF#refs/heads/}
|
||||||
|
# The nightly workflow passes the finished tag so that the run name
|
||||||
|
# matches what is built. Without it, work it out here.
|
||||||
|
TAG="${INPUT_TAG}"
|
||||||
|
if [[ -n "$TAG" && "$BRANCH" != "dev" ]]; then
|
||||||
|
echo "::error::The tag input is only supported on dev. A build from ${BRANCH} has to use the tag worked out here, which carries the branch name, so that it cannot publish over the dev, beta, latest or stable images."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ -z "$TAG" ]]; then
|
||||||
|
TAG=$(cat esphome/const.py | sed -n -E "s/^__version__\s+=\s+\"(.+)\"$/\1/p")
|
||||||
|
today="$(date --utc '+%Y%m%d')"
|
||||||
|
TAG="${TAG}${today}"
|
||||||
|
if [[ "$BRANCH" != "dev" ]]; then
|
||||||
|
TAG="${TAG}-${BRANCH}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
if [[ "$BRANCH" != "dev" ]]; then
|
if [[ "$BRANCH" != "dev" ]]; then
|
||||||
TAG="${TAG}-${BRANCH}"
|
|
||||||
BRANCH_BUILD="true"
|
BRANCH_BUILD="true"
|
||||||
ENVIRONMENT=""
|
ENVIRONMENT=""
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user