refactor: Update Go echo server build process #5
Workflow file for this run
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: Tests | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- "main" | |
- "master" | |
- "dev" | |
- "develop" | |
- "feature/**" | |
- "bugfix/**" | |
- "hotfix/**" | |
- "support/**" | |
paths: | |
- "lib/**.dart" | |
- "test/**.dart" | |
- "example/**.dart" | |
- .github/workflows/*.yml | |
- "pubspec.yaml" | |
pull_request: | |
branches: | |
- "main" | |
- "master" | |
- "dev" | |
- "develop" | |
- "feature/**" | |
- "bugfix/**" | |
- "hotfix/**" | |
- "support/**" | |
paths: | |
- "lib/**.dart" | |
- "test/**.dart" | |
- "example/**.dart" | |
- .github/workflows/*.yml | |
- "pubspec.yaml" | |
jobs: | |
build-echo: | |
name: "Build Echo server" | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./ | |
container: | |
image: golang:1.22 | |
env: | |
echo-cache-name: echo | |
timeout-minutes: 5 | |
steps: | |
- name: 🚂 Get latest code | |
id: checkout | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: | | |
.github | |
tool/echo | |
- name: 📤 Restore Go echo server | |
id: cache-echo-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: | | |
~/build/bin/echo | |
key: ${{ runner.os }}-spinify-${{ env.echo-cache-name }}-${{ hashFiles('tool/echo/echo.go') }} | |
- name: 🦫 Build Go echo server | |
id: build-echo | |
if: steps.cache-echo-restore.outputs.cache-hit != 'true' | |
working-directory: ./tool/echo | |
run: | | |
mkdir -p ~/build/bin/ | |
go get | |
go build -o ~/build/bin/echo echo.go | |
- name: 📥 Save Go echo server | |
id: cache-echo-save | |
if: steps.cache-echo-restore.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v4 | |
with: | |
path: | | |
~/build/bin/echo | |
key: ${{ runner.os }}-spinify-${{ env.echo-cache-name }}-${{ hashFiles('tool/echo/echo.go') }} | |
- name: 💾 Upload Go echo server | |
id: upload-echo-server | |
uses: actions/upload-artifact@v4 | |
with: | |
name: echo-server | |
path: ~/build/bin/echo | |
compression-level: 6 | |
overwrite: true | |
retention-days: 1 | |
tests: | |
name: "Tests" | |
runs-on: ubuntu-latest | |
needs: build-echo | |
defaults: | |
run: | |
working-directory: ./ | |
container: | |
image: dart:stable | |
env: | |
pub-cache-name: pub | |
timeout-minutes: 15 | |
steps: | |
- name: 🚂 Get latest code | |
id: checkout | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: | | |
.github | |
pubspec.yaml | |
lib | |
test | |
analysis_options.yaml | |
- name: 📂 Download Echo server | |
uses: actions/download-artifact@v4 | |
with: | |
name: echo-server | |
path: ~/build/bin/echo | |
- name: 📤 Restore Pub modules | |
id: cache-pub-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: | | |
$PWD/.pub_cache/ | |
key: ${{ runner.os }}-spinify-${{ env.pub-cache-name }}-${{ hashFiles('**/pubspec.yaml') }} | |
- name: 🗄️ Export Pub cache directory | |
id: export-pub-cache | |
timeout-minutes: 1 | |
run: | | |
export PUB_CACHE=$PWD/.pub_cache/ | |
export PATH="$PATH":"$HOME/.pub-cache/bin" | |
- name: 👷 Install Dependencies | |
id: install-dependencies | |
timeout-minutes: 1 | |
run: dart pub get --no-example | |
- name: 📥 Save Pub modules | |
id: cache-pub-save | |
uses: actions/cache/save@v4 | |
with: | |
path: | | |
$PWD/.pub_cache/ | |
key: ${{ runner.os }}-spinify-${{ env.pub-cache-name }}-${{ hashFiles('**/pubspec.yaml') }} | |
#- name: 📢 Run Echo server | |
# id: run-echo-server | |
# timeout-minutes: 1 | |
# run: | | |
# ~/build/bin/echo & | |
# env: | |
# PORT: 8080 | |
- name: 🧪 Run tests | |
id: run-tests | |
timeout-minutes: 10 | |
run: | | |
dart pub global activate coverage | |
dart pub global run coverage:test_with_coverage -fb -o coverage -- \ | |
--platform vm --compiler=kernel --coverage=coverage \ | |
--reporter=github --file-reporter=json:coverage/tests.json \ | |
--timeout=10m --concurrency=12 --color \ | |
test/unit_test.dart | |
#- name: ⛔ Stop Go server | |
# timeout-minutes: 1 | |
# run: | | |
# kill $(lsof -t -i:8080) | |
- name: 🧹 Cleanup artifacts | |
id: cleanup-artifacts | |
if: always() | |
timeout-minutes: 1 | |
run: | | |
rm -rf ~/build | |
echo "Artifacts cleaned up." | |
#- name: 🔍 Format coverage | |
# id: format-coverage | |
# timeout-minutes: 1 | |
# run: | | |
# mv coverage/lcov.info coverage/lcov.base.info | |
# lcov -r coverage/lcov.base.info -o coverage/lcov.base.info "lib/src/protobuf/client.*.dart" "lib/**/*.g.dart" | |
# mv coverage/lcov.base.info coverage/lcov.info | |
# lcov --list coverage/lcov.info | |
- name: 📥 Upload coverage to Codecov | |
id: upload-coverage | |
timeout-minutes: 2 | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos |