Variaveis de ambiente são aquelas variaveis em seu código que são dinamicas. Exemplo do porquê usar variaveis de ambiente com a senha de um db:

Como adicionar isso no workflow:

name: Deployment
on:  
	push:    
		branches:      
			- main      
			- dev
env:   
	MONGODB_DB_NAME: action-demo

Isso implica que o MONGO_DB_NAME estará disponivel para todos os jobs no valor de “action-demo” a não ser que um job sobrescreva a variavel.

Também é possivel definir variaveis de ambiente a nivel de job.

Exemplo:

jobs:  
	test:    
		env:      
			MONGODB_CLUSTER_ADDRESS: cluster.net  
			MONGODB_USERNAME: actions_example
			MONGODB_PASSWORD: hash123xyz
			PORT:8080
		runs-on: ubuntu-latest    
		steps:      
			- name: Get Code        
				uses: actions/checkout@v3   
			- name: npm start & npx wait-on <http://127.0.0.1>:$PORT #exemplo de como a variavel de ambiente pode ser usada dentro do workflow linuzl
			- name: Output information        
				run: |
					echo "MONGODB_USERNAME: ${{ env.MONGODB_USERNAME }}"  

Nesse caso, poderia ser definido um banco especifico para casos de testes.

Porém, definir as variaveis diretamente no código vai contra todas as boas práticas de segurança na programação. Para isso o github oferece o SECRETS.

Repository Secrets

No seu repositório, vá em Settings → Security → Secrets and Variables→ Actions → New repository Secret

Depois de criado você consegue atualizar a variavel, mas não consegue ver seu valor.

image.png