Skip to content

Commit

Permalink
Merge pull request #198 from Homebrew/actionlint
Browse files Browse the repository at this point in the history
  • Loading branch information
carlocab authored Oct 31, 2024
2 parents b44a616 + 96457e1 commit c4dc5ee
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 3 deletions.
10 changes: 10 additions & 0 deletions .github/actions/sync/shared-config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ def git(*args)
rubocop_yaml = ".rubocop.yml"
dependabot_yaml = ".github/dependabot.yml"
docs_workflow_yaml = ".github/workflows/docs.yml"
actionlint_workflow_yaml = ".github/workflows/actionlint.yml"
vale_ini = ".vale.ini"

target_gemfile_lock = target_directory_path/"Gemfile.lock"
Expand Down Expand Up @@ -98,6 +99,10 @@ def git(*args)
rubydoc.brew.sh
ruby-macho
].freeze
custom_actionlint_repos = %w[
brew
homebrew-core
]
rejected_docs_basenames = %w[
_config.yml
CNAME
Expand All @@ -116,6 +121,7 @@ def git(*args)
rubocop_yaml,
dependabot_yaml,
deprecated_lock_threads,
actionlint_workflow_yaml,
".github/workflows/stale-issues.yml",
].each do |path|
target_path = target_directory_path/path
Expand Down Expand Up @@ -166,6 +172,10 @@ def git(*args)
next unless docs_path.directory?

FileUtils.cp homebrew_docs_workflow_yaml, target_path
when actionlint_workflow_yaml
next if custom_actionlint_repos.include?(repository_name)

FileUtils.cp actionlint_workflow_yaml, target_path
when vale_ini
next if custom_docs_repos.include?(repository_name)

Expand Down
81 changes: 81 additions & 0 deletions .github/workflows/actionlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# This file is synced from the `.github` repository, do not modify it directly.
name: Workflow Syntax

on:
push:
branches:
- main
paths:
- '.github/workflows/*.ya?ml'
pull_request:
paths:
- '.github/workflows/*.ya?ml'

defaults:
run:
shell: bash -xeuo pipefail {0}

concurrency:
group: "actionlint-${{ github.ref }}"
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

env:
HOMEBREW_DEVELOPER: 1
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_ENV_HINTS: 1

permissions: {}

jobs:
workflow_syntax:
if: github.repository_owner == 'Homebrew'
runs-on: ubuntu-latest
steps:
- name: Set up Homebrew
id: setup-homebrew
uses: Homebrew/actions/setup-homebrew@master
with:
core: false
cask: false
test-bot: false

- name: Install tools
run: brew install actionlint shellcheck zizmor

- uses: actions/checkout@v4
with:
persist-credentials: false

- run: zizmor --format sarif . >results.sarif

- name: Upload SARIF file
uses: actions/upload-artifact@v4
with:
name: results.sarif
path: results.sarif

- name: Set up actionlint
run: echo "::add-matcher::$(brew --repository)/.github/actionlint-matcher.json"

- run: actionlint

upload_sarif:
needs: workflow_syntax
# We want to always upload this even if `actionlint` failed.
if: always() && !contains(fromJSON('[["cancelled", "skipped"]]'), needs.workflow_syntax.result)
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
steps:
- name: Download SARIF file
uses: actions/download-artifact@v4
with:
name: results.sarif
path: results.sarif

- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
category: zizmor
12 changes: 9 additions & 3 deletions .github/workflows/sync-shared-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@ jobs:
id: detect_changes
env:
HOMEBREW_GPG_PASSPHRASE: ${{ secrets.BREWTESTBOT_GPG_SIGNING_SUBKEY_PASSPHRASE }}
run: ./.github/actions/sync/shared-config.rb 'target/${{ matrix.repo }}' '/home/linuxbrew/.linuxbrew/Homebrew'
TARGET: target/${{ matrix.repo }}
run: ./.github/actions/sync/shared-config.rb "${TARGET}" '/home/linuxbrew/.linuxbrew/Homebrew'

- name: Create pull request
if: github.ref == 'refs/heads/master' && steps.detect_changes.outputs.pull_request == 'true'
Expand All @@ -118,12 +119,14 @@ jobs:
-X GET \
--header 'Accept: application/vnd.github+json' \
--header 'X-GitHub-Api-Version: 2022-11-28' \
/repos/{owner}/{repo}/pulls \
"/repos/${GH_REPO}/pulls" \
-f head=Homebrew:sync-shared-config \
-f state=open |
jq --exit-status 'length == 0'
then
git push --set-upstream --force origin sync-shared-config
# We don't want backticks to be expanded.
# shellcheck disable=SC2016
gh pr create --head sync-shared-config --title "Synchronize shared configuration" --body 'This pull request was created automatically by the [`sync-shared-config`](https://github.com/Homebrew/.github/blob/HEAD/.github/actions/sync/shared-config.rb) workflow.'
else
git fetch origin sync-shared-config
Expand All @@ -141,4 +144,7 @@ jobs:
if: always()
steps:
- name: Result
run: ${{ needs.sync.result == 'success' }}
env:
RESULT: ${{ needs.sync.result }}
run: |
[[ "${RESULT}" == success ]]

0 comments on commit c4dc5ee

Please sign in to comment.