-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Schema validation errors, but the Extension reports no problemsΒ #6025
Copy link
Copy link
Open
Labels
kind/bugSomething isn't workingSomething isn't working
Description
Bug report info
act version: 0.2.84
GOOS: windows
GOARCH: amd64
NumCPU: 20
Docker host: tcp://127.0.0.1:2375
Sockets found:
Config files:
C:\Users\JVA\AppData\Local\act\actrc:
-P ubuntu-latest=catthehacker/ubuntu:act-latest
-P ubuntu-22.04=catthehacker/ubuntu:act-22.04
-P ubuntu-20.04=catthehacker/ubuntu:act-20.04
-P ubuntu-18.04=catthehacker/ubuntu:act-18.04
Build info:
Go version: go1.24.0
Module path: github.com/nektos/act
Main version: v0.2.84+dirty
Main path: github.com/nektos/act
Main checksum:
Build settings:
-buildmode: exe
-compiler: gc
-trimpath: true
CGO_ENABLED: 0
GOARCH: amd64
GOOS: windows
GOAMD64: v1
vcs: git
vcs.revision: 5668308bac0d256c8a4c3aa1467d2ebcb55bc717
vcs.time: 2025-02-01T14:37:09Z
vcs.modified: true
Docker Engine:
Engine version: 29.3.0
Engine runtime: runc
Cgroup version: 2
Cgroup driver: systemd
Storage driver: overlayfs
Registry URI: https://index.docker.io/v1/
OS: Arch Linux
OS type: linux
OS version:
OS arch: x86_64
OS kernel: 6.6.87.2-microsoft-standard-WSL2
OS CPU: 20
OS memory: 31923 MB
Security options:
name=seccomp,profile=builtin
name=cgroupns
Command used with act
act --workflows ".github/workflows/release-published.yml" --secret-file "" --var-file "" --input-file "" --eventpath "" --container-daemon-socket "tcp://127.0.0.1:2375" --artifact-server-path "./artifacts"Describe issue
When running the above command, I get the following output:
Using docker host 'tcp://127.0.0.1:2375', and daemon socket 'tcp://127.0.0.1:2375'
Error: workflow is not valid. 'release-published.yml': Line: 17 Column 3: Failed to match permissions-mapping: Line: 20 Column 3: Unknown Property artifact-metadata
Line: 17 Column 3: Failed to match permission-level-shorthand-read-all: Line: 17 Column 3: Expected a scalar got mapping
Line: 17 Column 3: Failed to match permission-level-shorthand-write-all: Line: 17 Column 3: Expected a scalar got mapping
Line: 217 Column 5: Failed to match job-factory: Line: 258 Column 9: Failed to match run-step: Line: 259 Column 9: Unknown Property uses
Line: 260 Column 9: Unknown Property with
Line: 258 Column 9: Failed to match regular-step: Line: 261 Column 23: Unknown Function Call case
Line: 217 Column 5: Failed to match workflow-job: Line: 218 Column 5: Unknown Property runs-on
Line: 220 Column 5: Unknown Property environment
Line: 225 Column 5: Unknown Property steps
Actions YAML Schema Validation Error detected:
For more information, see: https://nektosact.com/usage/schema.html
Release Published Delivery #3 exited with exit code 1.
I checked the schema URL and I am using the Local actions extension, but it does not report any problems for the file. I've attached the pipeline in question.
Link to GitHub repository
No response
Workflow content
name: Release Published Delivery
on:
release:
types:
- published
concurrency:
group: release-published-${{ github.event.release.tag_name }}
cancel-in-progress: false
env:
DOTNET_VERSION: '9.0.x'
SOLUTION_PATH: src/IGC.Transit.slnx
permissions:
contents: write
actions: read
checks: write
artifact-metadata: read
packages: write
jobs:
release-setup:
name: Validate Release Context
runs-on: ubuntu-latest
if: ${{ !github.event.release.prerelease }}
outputs:
version: ${{ steps.version.outputs.version }}
assembly_version: ${{ steps.version.outputs.assembly_version }}
release_tag: ${{ steps.version.outputs.release_tag }}
release_commit: ${{ steps.version.outputs.release_commit }}
steps:
- name: Checkout released tag commit
uses: actions/checkout@v4
with:
fetch-depth: 1
ref: refs/tags/${{ github.event.release.tag_name }}
- name: Parse and validate release version
id: version
run: |
RELEASE_TAG="${{ github.event.release.tag_name }}"
VERSION_FROM_TAG="${RELEASE_TAG#v}"
if [[ ! "$VERSION_FROM_TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Release tag must be semantic version format vX.Y.Z or X.Y.Z. Got: ${RELEASE_TAG}" >&2
exit 1
fi
MAJOR=$(grep 'major:' version.yaml | awk '{print $2}')
MINOR=$(grep 'minor:' version.yaml | awk '{print $2}')
PATCH=$(grep 'patch:' version.yaml | awk '{print $2}')
VERSION_FROM_FILE="${MAJOR}.${MINOR}.${PATCH}"
if [[ "$VERSION_FROM_TAG" != "$VERSION_FROM_FILE" ]]; then
echo "Release tag version (${VERSION_FROM_TAG}) does not match version.yaml (${VERSION_FROM_FILE})." >&2
exit 1
fi
ASSEMBLY_VERSION="${VERSION_FROM_FILE}.0"
RELEASE_COMMIT=$(git rev-parse HEAD)
echo "release_tag=${RELEASE_TAG}" >> $GITHUB_OUTPUT
echo "release_commit=${RELEASE_COMMIT}" >> $GITHUB_OUTPUT
echo "version=${VERSION_FROM_FILE}" >> $GITHUB_OUTPUT
echo "assembly_version=${ASSEMBLY_VERSION}" >> $GITHUB_OUTPUT
{
echo "## Release Context"
echo "- Release tag: ${RELEASE_TAG}"
echo "- Checked out commit: ${RELEASE_COMMIT}"
echo "- Version: ${VERSION_FROM_FILE}"
echo "- Assembly Version: ${ASSEMBLY_VERSION}"
} >> $GITHUB_STEP_SUMMARY
build:
name: Restore, Build, Test, and Pack
runs-on: ubuntu-latest
needs: release-setup
steps:
- name: Checkout released tag commit
uses: actions/checkout@v4
with:
fetch-depth: 1
ref: refs/tags/${{ needs.release-setup.outputs.release_tag }}
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json', '**/Directory.Packages.props') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore dependencies
run: dotnet restore ${{ env.SOLUTION_PATH }}
- name: Build solution
run: |
dotnet build ${{ env.SOLUTION_PATH }} \
--configuration Release \
--no-restore \
-p:Version=${{ needs.release-setup.outputs.version }} \
-p:AssemblyVersion=${{ needs.release-setup.outputs.assembly_version }} \
-p:FileVersion=${{ needs.release-setup.outputs.assembly_version }}
- name: Run tests
run: |
dotnet test ${{ env.SOLUTION_PATH }} \
--configuration Release \
--no-build \
--verbosity normal \
--logger "trx" \
|| true
- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
if: (!cancelled())
with:
files: src/IGC.*.Tests/**/*.trx
- name: Pack IGC.Transit.BLL NuGet package
run: |
dotnet pack src/IGC.Transit.BLL/IGC.Transit.BLL.csproj \
--configuration Release \
--no-build \
--output ./packages \
-p:PackageVersion=${{ needs.release-setup.outputs.version }} \
-p:Version=${{ needs.release-setup.outputs.version }} \
-p:AssemblyVersion=${{ needs.release-setup.outputs.assembly_version }} \
-p:FileVersion=${{ needs.release-setup.outputs.assembly_version }}
- name: Upload NuGet package artifact
uses: actions/upload-artifact@v4
with:
name: IGC.Transit.BLL-${{ needs.release-setup.outputs.version }}-nupkg
path: ./packages/*.nupkg
retention-days: 90
publish-dotnet:
name: Publish and Package .NET Artifacts
runs-on: ubuntu-latest
needs: [release-setup, build]
strategy:
matrix:
include:
- project_name: IGC.Transit.Api
project_path: src/IGC.Transit.Api/IGC.Transit.Api.csproj
runtime: linux-x64
- project_name: IGC.Transit.Api
project_path: src/IGC.Transit.Api/IGC.Transit.Api.csproj
runtime: win-x64
- project_name: IGC.Transit.Workers
project_path: src/IGC.Transit.Workers/IGC.Transit.Workers.csproj
runtime: linux-x64
- project_name: IGC.Transit.Workers
project_path: src/IGC.Transit.Workers/IGC.Transit.Workers.csproj
runtime: win-x64
steps:
- name: Checkout released tag commit
uses: actions/checkout@v4
with:
fetch-depth: 1
ref: refs/tags/${{ needs.release-setup.outputs.release_tag }}
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json', '**/Directory.Packages.props') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore dependencies
run: dotnet restore ${{ env.SOLUTION_PATH }}
- name: Publish ${{ matrix.project_name }} (${{ matrix.runtime }})
run: |
OUTPUT_DIR="./publish/${{ matrix.project_name }}-${{ matrix.runtime }}"
dotnet publish ${{ matrix.project_path }} \
--configuration Release \
--runtime ${{ matrix.runtime }} \
--self-contained false \
--output "$OUTPUT_DIR" \
-p:Version=${{ needs.release-setup.outputs.version }} \
-p:AssemblyVersion=${{ needs.release-setup.outputs.assembly_version }} \
-p:FileVersion=${{ needs.release-setup.outputs.assembly_version }}
rm -f "$OUTPUT_DIR/appsettings.Development.json"
- name: Zip ${{ matrix.project_name }} (${{ matrix.runtime }})
run: |
mkdir -p ./release-assets
ASSET_NAME="${{ matrix.project_name }}-${{ needs.release-setup.outputs.version }}-${{ matrix.runtime }}.zip"
cd ./publish
zip -r "../release-assets/${ASSET_NAME}" "${{ matrix.project_name }}-${{ matrix.runtime }}"
- name: Upload packaged .NET artifact (${{ matrix.project_name }} ${{ matrix.runtime }})
uses: actions/upload-artifact@v4
with:
name: release-asset-${{ matrix.project_name }}-${{ matrix.runtime }}
path: ./release-assets/*.zip
retention-days: 90
publish-docker:
name: Publish Docker Images
runs-on: ubuntu-latest
needs: release-setup
environment:
name: Production
strategy:
matrix:
container: [api, worker]
steps:
- name: Checkout released tag commit
uses: actions/checkout@v4
with:
fetch-depth: 1
ref: refs/tags/${{ needs.release-setup.outputs.release_tag }}
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: |
ghcr.io/${{ github.repository_owner }}/transit-${{ matrix.container }}
tags: |
type=schedule
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}},value=${{ needs.release-setup.outputs.version }}
type=semver,pattern={{major}}.{{minor}},value=${{ needs.release-setup.outputs.version }}
type=semver,pattern={{major}},value=${{ needs.release-setup.outputs.version }}
type=sha
type=raw,value=latest
- name: Build and publish ${{ matrix.container }} docker
uses: docker/build-push-action@v6
with:
build-args: |
VERSION=${{ needs.release-setup.outputs.version }}
ASSEMBLY_VERSION=${{ needs.release-setup.outputs.assembly_version }}
APP_NAME=${{ format('IGC.Transit.{0}', case(matrix.container == 'api', 'Api', matrix.container == 'worker', 'Workers', 'Api')) }}
ENVIRONMENT=Production
context: .
file: ./docker/Dockerfile
target: ${{ matrix.container }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
publish-nuget:
name: Publish NuGet Package
runs-on: ubuntu-latest
needs: [release-setup, build]
steps:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Download NuGet package artifact
uses: actions/download-artifact@v4
with:
name: IGC.Transit.BLL-${{ needs.release-setup.outputs.version }}-nupkg
path: ./nuget
- name: NuGet setup
run: |
dotnet nuget add source --name github "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" --username ${{ github.actor }} --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text
- name: Publish NuGet Package
run: |
for nupkg in ./nuget/*.nupkg; do
echo "Publishing $nupkg to GitHub Packages"
dotnet nuget push "$nupkg" --source github --skip-duplicate
done
upload-release-assets:
name: Upload Assets to Published Release
runs-on: ubuntu-latest
needs: [release-setup, publish-dotnet, publish-nuget, publish-docker]
steps:
- name: Download NuGet package artifact
uses: actions/download-artifact@v4
with:
name: IGC.Transit.BLL-${{ needs.release-setup.outputs.version }}-nupkg
path: ./release-assets
- name: Download packaged .NET artifacts
uses: actions/download-artifact@v4
with:
pattern: release-asset-*
merge-multiple: true
path: ./release-assets
- name: List release assets
run: ls -la ./release-assets
- name: Upload assets to GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release upload "${{ needs.release-setup.outputs.release_tag }}" \
./release-assets/*.nupkg \
./release-assets/*.zip \
--clobberRelevant log output
Handling container host and socket
Using docker host 'tcp://127.0.0.1:2375', and daemon socket 'tcp://127.0.0.1:2375'
Loading environment from d:\repos\IGC.Transit\.env
Conditional GET for notices etag=6bd2730d-d9d9-4c84-8568-57551142e957
Loading action inputs from
Loading secrets from
Loading vars from
Evaluated matrix inclusions: map[]
Loading workflow 'd:\repos\IGC.Transit\.github\workflows\release-published.yml'
Reading workflow 'd:\repos\IGC.Transit\.github\workflows\release-published.yml'
Error: workflow is not valid. 'release-published.yml': Line: 17 Column 3: Failed to match permissions-mapping: Line: 20 Column 3: Unknown Property artifact-metadata
Line: 17 Column 3: Failed to match permission-level-shorthand-read-all: Line: 17 Column 3: Expected a scalar got mapping
Line: 17 Column 3: Failed to match permission-level-shorthand-write-all: Line: 17 Column 3: Expected a scalar got mapping
Line: 217 Column 5: Failed to match job-factory: Line: 258 Column 9: Failed to match run-step: Line: 259 Column 9: Unknown Property uses
Line: 260 Column 9: Unknown Property with
Line: 258 Column 9: Failed to match regular-step: Line: 261 Column 23: Unknown Function Call case
Line: 217 Column 5: Failed to match workflow-job: Line: 218 Column 5: Unknown Property runs-on
Line: 220 Column 5: Unknown Property environment
Line: 225 Column 5: Unknown Property steps
Actions YAML Schema Validation Error detected:
For more information, see: https://nektosact.com/usage/schema.html
Release Published Delivery #4 exited with exit code 1.Additional information
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
kind/bugSomething isn't workingSomething isn't working