backend_general.yml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. name: Backend
  2. on:
  3. push:
  4. branches: [ main ]
  5. pull_request:
  6. branches: [ main ]
  7. jobs:
  8. test:
  9. name: Test
  10. runs-on: ubuntu-latest
  11. services:
  12. postgres:
  13. image: postgres:12
  14. env:
  15. POSTGRES_USER: postgres
  16. POSTGRES_PASSWORD: password
  17. POSTGRES_DB: postgres
  18. ports:
  19. - 5433:5432
  20. env:
  21. SQLX_VERSION: 0.5.7
  22. SQLX_FEATURES: postgres
  23. steps:
  24. - name: Checkout repository
  25. uses: actions/checkout@v2
  26. - name: Cache dependencies
  27. id: cache-dependencies
  28. uses: actions/cache@v2
  29. with:
  30. path: |
  31. ~/.cargo/registry
  32. ~/.cargo/git
  33. target
  34. key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
  35. - name: Install stable toolchain
  36. uses: actions-rs/toolchain@v1
  37. with:
  38. profile: minimal
  39. toolchain: stable
  40. override: true
  41. - name: Cache sqlx-cli
  42. uses: actions/cache@v2
  43. id: cache-sqlx
  44. with:
  45. path: |
  46. ~/.cargo/bin/sqlx
  47. ~/.cargo/bin/cargo-sqlx
  48. key: ${{ runner.os }}-sqlx-${{ env.SQLX_VERSION }}-${{ env.SQLX_FEATURES }}
  49. - name: Install sqlx-cli
  50. uses: actions-rs/cargo@v1
  51. if: steps.cache-sqlx.outputs.cache-hit == false
  52. with:
  53. command: install
  54. args: >
  55. sqlx-cli
  56. --force
  57. --version=${{ env.SQLX_VERSION }}
  58. --features=${{ env.SQLX_FEATURES }}
  59. --no-default-features
  60. --locked
  61. - name: Migrate database
  62. working-directory: backend/
  63. run: |
  64. sudo apt-get install libpq-dev -y
  65. SKIP_DOCKER=true POSTGRES_PORT=5433 ./scripts/init_database.sh
  66. - name: Check sqlx-data.json is up-to-date
  67. working-directory: backend/
  68. run: |
  69. cargo sqlx prepare --check -- --bin backend
  70. - name: Run cargo test
  71. working-directory: backend/
  72. run: cargo test
  73. fmt:
  74. name: Rustfmt
  75. runs-on: ubuntu-latest
  76. steps:
  77. - uses: actions/checkout@v2
  78. - uses: actions-rs/toolchain@v1
  79. with:
  80. toolchain: stable
  81. override: true
  82. - run: rustup component add rustfmt
  83. working-directory: backend/
  84. - run: cargo fmt --all -- --check
  85. working-directory: backend/
  86. clippy:
  87. name: Clippy
  88. runs-on: ubuntu-latest
  89. services:
  90. postgres:
  91. image: postgres:12
  92. env:
  93. POSTGRES_USER: postgres
  94. POSTGRES_PASSWORD: password
  95. POSTGRES_DB: postgres
  96. ports:
  97. - 5433:5432
  98. env:
  99. SQLX_VERSION: 0.5.7
  100. SQLX_FEATURES: postgres
  101. steps:
  102. - name: Checkout repository
  103. uses: actions/checkout@v2
  104. - name: Install stable toolchain
  105. uses: actions-rs/toolchain@v1
  106. with:
  107. toolchain: stable
  108. components: clippy
  109. override: true
  110. - name: Cache sqlx-cli
  111. uses: actions/cache@v2
  112. id: cache-sqlx
  113. with:
  114. path: |
  115. ~/.cargo/bin/sqlx
  116. key: ${{ runner.os }}-sqlx-${{ env.SQLX_VERSION }}-${{ env.SQLX_FEATURES }}
  117. - name: Install sqlx-cli
  118. uses: actions-rs/cargo@v1
  119. if: steps.cache-sqlx.outputs.cache-hit == false
  120. with:
  121. command: install
  122. args: >
  123. sqlx-cli
  124. --force
  125. --version=${{ env.SQLX_VERSION }}
  126. --features=${{ env.SQLX_FEATURES }}
  127. --no-default-features
  128. --locked
  129. - name: Migrate database
  130. working-directory: backend/
  131. run: |
  132. sudo apt-get install libpq-dev -y
  133. SKIP_DOCKER=true POSTGRES_PORT=5433 ./scripts/init_database.sh
  134. - run: rustup component add clippy
  135. working-directory: backend/
  136. - run: cargo clippy -- -D warnings
  137. working-directory: backend/