chore: achieve 100% coverage, remove avatar and templates (#11) #24
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 | |
| with: | |
| go-version-file: go.mod | |
| - name: Build | |
| run: go build ./... | |
| - name: Unit tests | |
| run: go test ./... -v -coverprofile=coverage.out -covermode=atomic | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: coverage.out | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 | |
| with: | |
| go-version-file: go.mod | |
| - name: golangci-lint | |
| uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9 | |
| with: | |
| version: latest | |
| npm-smoke-test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| node-version: 24 | |
| - name: Smoke test npm pack + install | |
| run: | | |
| cd npm | |
| npm pack | |
| mkdir /tmp/test-install && cd /tmp/test-install | |
| npm init -y | |
| npm install "$GITHUB_WORKSPACE"/npm/confluence-cf-*.tgz 2>&1 | tee install.log | |
| # postinstall will fail to download the binary (no matching release), | |
| # but it must not fail on MODULE_NOT_FOUND | |
| if grep -q "MODULE_NOT_FOUND" install.log; then | |
| echo "ERROR: install.js has missing Node.js dependencies" | |
| exit 1 | |
| fi | |
| pypi-smoke-test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 | |
| with: | |
| python-version: "3.12" | |
| - name: Smoke test pip build + install | |
| run: | | |
| pip install build==1.4.0 | |
| cd python && python -m build | |
| pip install dist/confluence_cf-*.whl 2>&1 | tee install.log | |
| # Verify the module imports cleanly (no missing dependencies) | |
| python -c "from confluence_cf import _get_binary_path; print('import ok')" | |
| docs-build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 | |
| with: | |
| go-version-file: go.mod | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6 | |
| with: | |
| node-version: 24 | |
| - name: Install website dependencies | |
| run: cd website && npm ci | |
| - name: Build docs | |
| run: make docs-build | |
| integration: | |
| runs-on: ubuntu-latest | |
| needs: [test, lint] | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 | |
| with: | |
| go-version-file: go.mod | |
| - name: Integration tests | |
| env: | |
| CF_BASE_URL: ${{ secrets.CF_BASE_URL }} | |
| CF_AUTH_TYPE: basic | |
| CF_AUTH_USER: ${{ secrets.CF_AUTH_USER }} | |
| CF_AUTH_TOKEN: ${{ secrets.CF_AUTH_TOKEN }} | |
| run: go test ./test/integration/ -v -timeout 120s |