From 9c3894f24e016fb140a52cfc1e81bc6989c4cc78 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Tue, 24 Oct 2023 16:10:37 -0600 Subject: [PATCH] Update workflow to verify fmt To support this, I refactored the actions to use a composite action so that all checks could run with the same setup. Signed-off-by: Jonathon Anderson --- .github/actions/prepare/action.yml | 26 +++++++++ .github/workflows/check.yml | 87 ++++++++++++++++++++++++++++++ .github/workflows/lint.yaml | 39 -------------- .github/workflows/test.yml | 44 --------------- 4 files changed, 113 insertions(+), 83 deletions(-) create mode 100644 .github/actions/prepare/action.yml create mode 100644 .github/workflows/check.yml delete mode 100644 .github/workflows/lint.yaml delete mode 100644 .github/workflows/test.yml diff --git a/.github/actions/prepare/action.yml b/.github/actions/prepare/action.yml new file mode 100644 index 00000000..70c18db1 --- /dev/null +++ b/.github/actions/prepare/action.yml @@ -0,0 +1,26 @@ +name: 'Prepare Warewulf' +description: 'Prepare environment and Warewulf source code for testing and building' +inputs: + go-version: + required: true + +runs: + using: "composite" + steps: + - name: Install gpgme (dependency) + run: sudo apt-get install libgpgme-dev + shell: bash + + - name: Setup go ${{ inputs.go-version }} + uses: actions/setup-go@v3 + with: + go-version: ${{ inputs.go-version }} + cache: true + + - name: Configure Warewulf + run: make config + shell: bash + + - name: Prepare vendor directory + run: make vendor + shell: bash diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 00000000..0eb19693 --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,87 @@ +--- +name: check + +on: + push: + branches: + - main + - development + paths-ignore: + - 'docs/**' + pull_request: + branches: + - main + - development + paths-ignore: + - 'docs/**' + +jobs: + lint: + runs-on: ubuntu-latest + strategy: + matrix: + go-version: ['1.18', '1.19', '1.20'] + steps: + - name: Checkout Warewulf + uses: actions/checkout@v3 + - uses: ./.github/actions/prepare + with: + go-version: ${{ matrix.go-version }} + - name: Check Warewulf code with golang linter (golang ${{ matrix.go-version }}) + run: make lint + + vet: + runs-on: ubuntu-latest + strategy: + matrix: + go-version: ['1.18', '1.19', '1.20'] + steps: + - name: Checkout Warewulf + uses: actions/checkout@v3 + - uses: ./.github/actions/prepare + with: + go-version: ${{ matrix.go-version }} + - name: Vet Warewulf code (golang ${{ matrix.go-version }}) + run: make vet + + fmt: + runs-on: ubuntu-latest + strategy: + matrix: + go-version: ['1.18', '1.19', '1.20'] + steps: + - name: Checkout Warewulf + uses: actions/checkout@v3 + - uses: ./.github/actions/prepare + with: + go-version: ${{ matrix.go-version }} + - name: Check Warewulf code for formatting (golang ${{ matrix.go-version }}) + run: test "$(make -s fmt | wc -l)" == 0 + + testsuite: + runs-on: ubuntu-latest + strategy: + matrix: + go-version: ['1.18', '1.19', '1.20'] + steps: + - name: Checkout Warewulf + uses: actions/checkout@v3 + - uses: ./.github/actions/prepare + with: + go-version: ${{ matrix.go-version }} + - name: Run the test suite (golang ${{ matrix.go-version }}) + run: make test + + build: + runs-on: ubuntu-latest + strategy: + matrix: + go-version: ['1.18', '1.19', '1.20'] + steps: + - name: Checkout Warewulf + uses: actions/checkout@v3 + - uses: ./.github/actions/prepare + with: + go-version: ${{ matrix.go-version }} + - name: Build Warewulf (golang ${{ matrix.go-version }}) + run: make all diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml deleted file mode 100644 index 3c6eafee..00000000 --- a/.github/workflows/lint.yaml +++ /dev/null @@ -1,39 +0,0 @@ -on: - push: - branches: - - main - - development - pull_request: - branches: - - main - - development - paths-ignore: - - 'docs/**' - -name: golangci-lint - -jobs: - lint: - name: Lint - runs-on: ubuntu-latest - strategy: - matrix: # Pin go version to the one(s) below. - go: [ '1.17' ] - steps: - - uses: actions/checkout@v3 - - name: Create config - run: make config - - name: Setup go ${{ matrix.go }} - uses: actions/setup-go@v3 - with: - go-version: ${{ matrix.go }} - cache: true - - - name: Lint - uses: golangci/golangci-lint-action@v3 - with: - version: v1.46.2 - skip-build-cache: true - skip-pkg-cache: true - args: --build-tags "containers_image_openpgp containers_image_ostree" --timeout 5m --skip-dirs internal/pkg/staticfiles - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index dc9d8664..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,44 +0,0 @@ ---- -name: test - -on: - push: - branches: - - main - - development - paths-ignore: - - 'docs/**' - pull_request: - branches: - - main - - development - paths-ignore: - - 'docs/**' - -jobs: - - build: - runs-on: ubuntu-latest - strategy: - matrix: - go: [ '1.18', '1.19', '1.20' ] - steps: - - uses: actions/checkout@v3 - - - name: Install gpgme - run: sudo apt-get install libgpgme-dev - - - name: Setup go ${{ matrix.go }} - uses: actions/setup-go@v3 - with: - go-version: ${{ matrix.go }} - cache: true - - - name: Build with go ${{ matrix.go }} - run: make all - - - name: vet - run: make vet - - - name: test - run: make test