From 33a11cff9da3dac115f715bad51ee3f74783db69 Mon Sep 17 00:00:00 2001 From: Ashish Bhatia Date: Sat, 9 Mar 2024 01:47:25 -0800 Subject: [PATCH] chore: add basic GitHub Actions --- .github/workflows/build-go.yaml | 57 ++++++++++++++++++++++++++ .github/workflows/format-go.yaml | 55 +++++++++++++++++++++++++ .github/workflows/lint-go.yaml | 61 ++++++++++++++++++++++++++++ .github/workflows/lint-markdown.yaml | 45 ++++++++++++++++++++ 4 files changed, 218 insertions(+) create mode 100644 .github/workflows/build-go.yaml create mode 100644 .github/workflows/format-go.yaml create mode 100644 .github/workflows/lint-go.yaml create mode 100644 .github/workflows/lint-markdown.yaml diff --git a/.github/workflows/build-go.yaml b/.github/workflows/build-go.yaml new file mode 100644 index 0000000..e32d05c --- /dev/null +++ b/.github/workflows/build-go.yaml @@ -0,0 +1,57 @@ +# Generated by Gabo (https://github.com/ashishb/gabo) +--- +name: Lint Go + +on: # yamllint disable-line rule:truthy + push: + branches: [main, master] + paths: + - "**.go" + - ".github/workflows/build-go.yaml" + pull_request: + branches: [main, master] + paths: + - "**.go" + - ".github/workflows/build-go.yaml" + + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + + # Run it locally with https://github.com/nektos/act + # act -j buildGo + buildGo: + runs-on: ubuntu-latest + timeout-minutes: 15 + + strategy: + matrix: + # Without quotes, 1.20 becomes 1.2! + go-version: ["1.22"] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Go ${{ matrix.go-version }} + uses: actions/setup-go@v4 + with: + go-version: ${{ matrix.go-version }} + + # Ref: https://github.com/actions/cache/blob/main/examples.md#go---modules + # Warning: This is Linux specific + - uses: actions/cache@v3 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + + - name: Build + working-directory: src/wp2hugo + run: make build_debug build_prod diff --git a/.github/workflows/format-go.yaml b/.github/workflows/format-go.yaml new file mode 100644 index 0000000..ff82516 --- /dev/null +++ b/.github/workflows/format-go.yaml @@ -0,0 +1,55 @@ +# Generated by Gabo (https://github.com/ashishb/gabo) +--- +name: Validate Go code formatting + +on: # yamllint disable-line rule:truthy + push: + branches: [main, master] + paths: + - "**.go" + - ".github/workflows/format-go.yaml" + pull_request: + branches: [main, master] + paths: + - "**.go" + - ".github/workflows/format-go.yaml" + + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + + validateCodeFormatGo: + runs-on: ubuntu-latest + timeout-minutes: 15 + + strategy: + matrix: + # Without quotes, 1.20 becomes 1.2! + go-version: ["1.22"] + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: Set up Go ${{ matrix.go-version }} + uses: actions/setup-go@v4 + with: + go-version: ${{ matrix.go-version }} + + # Ref: https://github.com/actions/cache/blob/main/examples.md#go---modules + # Warning: This is Linux specific + - uses: actions/cache@v3 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - name: Validate code formatting + run: | + gofmt -l . + test -z $(gofmt -l .) diff --git a/.github/workflows/lint-go.yaml b/.github/workflows/lint-go.yaml new file mode 100644 index 0000000..9c3b31d --- /dev/null +++ b/.github/workflows/lint-go.yaml @@ -0,0 +1,61 @@ +# Generated by Gabo (https://github.com/ashishb/gabo) +--- +name: Lint Go + +on: # yamllint disable-line rule:truthy + push: + branches: [main, master] + paths: + - "**.go" + - ".github/workflows/lint-go.yaml" + pull_request: + branches: [main, master] + paths: + - "**.go" + - ".github/workflows/lint-go.yaml" + + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + + # Run it locally with https://github.com/nektos/act + # act -j lintGo + lintGo: + runs-on: ubuntu-latest + timeout-minutes: 15 + + strategy: + matrix: + # Without quotes, 1.20 becomes 1.2! + go-version: ["1.22"] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Go ${{ matrix.go-version }} + uses: actions/setup-go@v4 + with: + go-version: ${{ matrix.go-version }} + + # Ref: https://github.com/actions/cache/blob/main/examples.md#go---modules + # Warning: This is Linux specific + - uses: actions/cache@v3 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + + - name: Run golangci-lint on src/wp2hugo + uses: golangci/golangci-lint-action@v3 + with: + # We use cache provided by "actions/setup-go@v4" + skip-cache: true + # Directory containing go.mod file + working-directory: "src/wp2hugo" diff --git a/.github/workflows/lint-markdown.yaml b/.github/workflows/lint-markdown.yaml new file mode 100644 index 0000000..64daaf6 --- /dev/null +++ b/.github/workflows/lint-markdown.yaml @@ -0,0 +1,45 @@ +# Generated by Gabo (https://github.com/ashishb/gabo) +--- +# Run this locally with act - https://github.com/nektos/act +# act -j lintMarkdown +name: Lint Markdown + +on: # yamllint disable-line rule:truthy + push: + branches: [main, master] + paths: + - '**.md' + - '.github/workflows/lint-markdown.yaml' + pull_request: + branches: [main, master] + paths: + - '**.md' + - '.github/workflows/lint-markdown.yaml' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + lintMarkdown: + runs-on: ubuntu-latest + timeout-minutes: 15 + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Ruby + # See https://github.com/ruby/setup-ruby#versioning + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.0 + + - name: Install dependencies + run: gem install mdl + + - name: Run tests + # Rule list: https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md + # Don't check for line length (MD013) + # Don't care about list ordering (MD029) + run: mdl --git-recurse --rules ~MD013,~MD029 .