Test Linux Binaries after they're built in CI (Cont'd) #598
This file contains 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: [ master ] | |
pull_request: | |
branches: [ master ] | |
jobs: | |
test: | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Crystal | |
uses: crystal-lang/install-crystal@v1 | |
with: | |
crystal: 1.13.2 | |
- name: Install dependencies | |
run: shards install | |
- name: Install coverage.py | |
run: "pip install --upgrade pip && pip install coverage && pip install pytest" | |
- name: Run tests | |
run: crystal spec --verbose --order random --error-on-warnings | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Crystal | |
uses: crystal-lang/install-crystal@v1 | |
with: | |
crystal: 1.13.2 | |
- name: Install dependencies | |
run: shards install | |
- name: Run linter | |
run: bin/ameba | |
coverage: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Crystal | |
uses: crystal-lang/install-crystal@v1 | |
with: | |
crystal: 1.13.2 | |
- run: make build | |
- name: Install kcov | |
run: | | |
sudo apt-get update | |
sudo apt-get install kcov | |
- name: Install coverage.py | |
run: "pip install --upgrade pip && pip install coverage && pip install pytest" | |
- name: Generate coverage | |
run: bin/crkcov --kcov-args --exclude-pattern=/usr/include,/usr/lib,lib/,spec/ --coverage-dir ${{ github.workspace }}/coverage | |
- name: Capture and export coverage report file as variable | |
run: | | |
COVERAGE_FILE=$(find ${{ github.workspace }}/coverage -name "*.xml" | grep cobertura.xml) | |
echo "COVERAGE_FILE=$COVERAGE_FILE" >> $GITHUB_ENV | |
- name: Report coverage | |
env: | |
COVERALLS_REPO_TOKEN: ${{ github.token }} | |
run: | | |
cd coverage | |
../bin/coveralls report --measure --base-path src/coverage_reporter/ | |
- name: List contents of coverage/ directory | |
run: ls -la coverage/ | |
- name: List contents of coverage/ directory | |
run: ls -la ${{ github.workspace }}/coverage/ | |
- name: Upload coverage report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-report | |
path: ${{ env.COVERAGE_FILE }} | |
retention-days: 5 | |
- name: Create coverage summary | |
run: | | |
echo "Coverage Summary" > coverage_summary.txt | |
echo "Date: $(date)" >> coverage_summary.txt | |
echo "Commit: ${{ github.sha }}" >> coverage_summary.txt | |
# Add more relevant info from your coverage report | |
- name: Upload coverage summary | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-summary | |
path: coverage_summary.txt | |
retention-days: 5 | |
- name: List uploaded artifacts | |
run: ls -la coverage/ | |
- name: Debug uploaded artifact | |
run: | | |
echo "Artifact URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts/" | |
- name: Display Workflow ID | |
run: | | |
curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
"https://api.github.com/repos/${{ github.repository }}/actions/workflows" \ | |
| jq '.workflows[] | select(.name == "ci") | .id' | |