Skip to content
Latchkey

Release zip workflow (dvd-dev/hilo)

The Release zip workflow from dvd-dev/hilo, explained and optimized by Latchkey.

C

CI health: C - fair

Point runs-on at Latchkey and get run de-duplication, job timeouts, SHA-pinned actions, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: dvd-dev/hilo.github/workflows/release_zip.ymlLicense MITView source

What it does

This is the Release zip workflow from the dvd-dev/hilo repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
---
name: "Release zip"

on:
  push:
    tags:
      - "v*.*.*"

jobs:
  release:
    name: "Publish new release"
    runs-on: ubuntu-latest
    steps:
      - name: "Checkout the repository"
        uses: "actions/checkout@v7"

      - working-directory: ./custom_components
        run: |
          echo "package=$(ls -F | grep \/$ | sed -n "s/\///g;1p")" >> $GITHUB_ENV
          echo "release_version=$(git describe --tags | sed s/v//)" >> $GITHUB_ENV
      - working-directory: ./custom_components
        run: |
          echo "basedir=$(pwd)/${{ env.package }}" >> $GITHUB_ENV

      - name: "Setup Git"
        if: env.release_version != '' && success()
        run: |
          git config --global user.name "release"
          git config --global user.email "release@GitHub"

      - name: "Zip component dir"
        if: env.release_version != '' && success()
        working-directory: ./custom_components/${{ env.package }}
        run: |
          zip ${{ env.package }}.zip -r ./

      - name: "Release"
        if: env.release_version != '' && success()
        uses: softprops/action-gh-release@v3.0.1
        with:
          files: ${{ env.basedir }}/${{ env.package }}.zip

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

---
name: "Release zip"
 
on:
  push:
    tags:
      - "v*.*.*"
 
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  release:
    timeout-minutes: 30
    name: "Publish new release"
    runs-on: latchkey-small
    steps:
      - name: "Checkout the repository"
        uses: "actions/checkout@v7"
 
      - working-directory: ./custom_components
        run: |
          echo "package=$(ls -F | grep \/$ | sed -n "s/\///g;1p")" >> $GITHUB_ENV
          echo "release_version=$(git describe --tags | sed s/v//)" >> $GITHUB_ENV
      - working-directory: ./custom_components
        run: |
          echo "basedir=$(pwd)/${{ env.package }}" >> $GITHUB_ENV
 
      - name: "Setup Git"
        if: env.release_version != '' && success()
        run: |
          git config --global user.name "release"
          git config --global user.email "release@GitHub"
 
      - name: "Zip component dir"
        if: env.release_version != '' && success()
        working-directory: ./custom_components/${{ env.package }}
        run: |
          zip ${{ env.package }}.zip -r ./
 
      - name: "Release"
        if: env.release_version != '' && success()
        uses: softprops/action-gh-release@v3.0.1
        with:
          files: ${{ env.basedir }}/${{ env.package }}.zip
 

What changed

1 third-party action is referenced by a movable tag. Pin it to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.

This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow