diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml new file mode 100644 index 0000000..7b7d190 --- /dev/null +++ b/.github/workflows/action.yml @@ -0,0 +1,218 @@ +# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json + +name: Action + +permissions: {} + +on: + pull_request: + branches: + - main + push: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + default: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + permissions: {} + name: Install Chainsaw and test presence in path + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install Chainsaw + uses: ./ + - name: Check install + run: chainsaw version + - name: Check root directory + shell: bash + run: | + if [[ $(git diff --stat) != '' ]]; then + echo 'should be clean' + exit 1 + else + exit 0 + fi + + verify: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + permissions: {} + name: Install Chainsaw with cosign verification and test presence in path + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install Cosign + uses: sigstore/cosign-installer@9614fae9e5c5eddabb09f90a270fcb487c9f7149 # v3.3.0 + - name: Install Chainsaw + uses: ./ + with: + verify: true + - name: Check install + run: chainsaw version + - name: Check root directory + shell: bash + run: | + if [[ $(git diff --stat) != '' ]]; then + echo 'should be clean' + exit 1 + else + exit 0 + fi + + release: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + permissions: {} + name: Install Chainsaw and test presence in path from GitHub + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install Chainsaw + uses: kyverno/action-install-chainsaw@main + - name: Check install + run: chainsaw version + - name: Check root directory + shell: bash + run: | + if [[ $(git diff --stat) != '' ]]; then + echo 'should be clean' + exit 1 + else + exit 0 + fi + + custom: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + permissions: {} + name: Install Chainsaw and test presence in path + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install Chainsaw + uses: ./ + with: + release: v0.0.3 + - name: Check install + run: chainsaw version + - name: Check root directory + shell: bash + run: | + if [[ $(git diff --stat) != '' ]]; then + echo 'should be clean' + exit 1 + else + exit 0 + fi + + wrong_version: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + permissions: {} + name: Try to install a wrong version + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install Chainsaw + uses: ./ + with: + release: honk + continue-on-error: true + + custom_dir: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + permissions: {} + name: Install Chainsaw and test presence in path + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install Chainsaw + uses: ./ + with: + install-dir: "$HOME/.chainsawtest" + - name: Check install + run: chainsaw version + - name: Check install dir + shell: bash + run: | + [[ $(dirname "$(which chainsaw)") == "$HOME/.chainsawtest" ]] + - name: Check root directory + shell: bash + run: | + [[ -z $(git diff --stat) ]] + + custom_dir_root: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + permissions: {} + name: Install Chainsaw and test presence in path with custom root dir + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Install Chainsaw + uses: ./ + with: + install-dir: /usr/bin + use-sudo: true + - name: Check install + run: chainsaw version + - name: Check install dir + shell: bash + run: | + [[ $(dirname "$(which chainsaw)") == /usr/bin ]] + - name: Check root directory + shell: bash + run: | + [[ -z $(git diff --stat) ]] + + main: + permissions: {} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - macos-latest + - ubuntu-latest + - windows-latest + go_version: + - '1.21' + name: Try to install with go ${{ matrix.go_version }} + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + with: + go-version: ${{ matrix.go_version }} + - name: Install Chainsaw + uses: ./ + with: + release: main + - name: Check install + run: chainsaw version + + required: + needs: + - default + - verify + - release + - custom + - wrong_version + - custom_dir + - custom_dir_root + - main + runs-on: ubuntu-latest + steps: + - run: echo "Required jobs success!"