Codeblox Blog

SQL Server em Linux no Github Actions

Guilherme
07/09/2021

Caso já tenha precisado executar testes de integração sobre um SQL Server em um workflow/pipeline Linux no GitHub Actions ou no Azure DevOps, deve ter percebido que ele não vem instalado nesses serviços.

Infelizmente o LocalDB, versão light do SQL Server voltada para desenvolvimento, só existe para Windows. Este sim já vem instalado nos hosts Windows do GitHub Actions e Azure DevOps, podendo ser usado facilmente nos testes.

Mas existe uma saída. Basta executar a instação do SQL Server direto no seu fluxo de trabalho, antes da execução dos testes:

name: Testes
on:
  workflow_dispatch:
jobs:
  testes:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - name: Instalar Sql Server
      run: |
         wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
         sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
         sudo apt-get update
         sudo apt-get install -y mssql-server
         sudo MSSQL_SA_PASSWORD='Senh@Aqu1' MSSQL_PID=developer /opt/mssql/bin/mssql-conf -n setup accept-eula         
    - name: Testar aplicação
      run: dotnet test

Lembrando que é preciso ajustar a string de conexão dos testes para utilizar o usuário SA e a senha definida no trecho MSSQL_SA_PASSWORD='Senh@Aqu1' (esta senha precisa conter letra maiúscula, minúscula, dígito e caracter especial).

Exemplo (considerando um DbContext de EF que tenha um construtor que recebe a Connection String):

var db = new Db($"Data Source=localhost;Initial Catalog=Tests-{Guid.NewGuid()};User Id=SA;Password=Senh@Aqu1;");
github
devops
banco de dados


Guilherme M. Abdo
Guilherme M. Abdo
Desenvolvedor fullstack .Net/Angular/Azure/GitHub