# Configuration Variables

GitHub Actions’da **Configuration Variables (Konfigürasyon Değişkenleri)**, “**non-sensitive**” (hassas olmayan) değerleri saklamak ve bunları Workflow’larında kullanmak için geliştirilmiş bir özelliktir. Yani bu değişkenler, “Secrets” gibi gizli/şifreli saklanmıyor; fakat yine de tanımlanan değişkenlere pratik şekilde erişebilmeni sağlıyor.

### 1) Configuration Variables Nedir?

* **Amaç**: API URL, sürüm numarası, dosya yolları gibi **hassas olmayan** değerleri global veya environment bazında saklayıp, Workflow’larda tekrar tekrar kullanmak.
* **Farkı ne?**

  * **Secrets**: Gizli/saklanması gereken şifre, token gibi veriler. `secrets.*` context’iyle erişilir ve log’larda maskelenir.
  * **Configuration Variables**: Düz metin, hassas olmayan ayarlar. `vars.*` context’iyle erişilir, maskelenme gibi bir ihtiyaç yok.

### 2) “vars” Context

Workflow içinde şöyle kullanabilirsin:

```yaml
steps:
  - name: Print variable
    run: echo "App ID: ${{ vars.APP_ID_EXAMPLE }}"
```

* `vars.APP_ID_EXAMPLE`, GitHub arayüzünden ya da CLI’dan ayarladığın bir değişkenin değerini döndürür.

**Önemli Not**: Bu değişkeni tanımlarken hassas değer koyarsan, log’larda olduğu gibi görünecektir (maskelenmez). Çünkü bu “non-sensitive” kullanım içindir.

### 3) Nasıl Tanımlanır?

GitHub, CLI (komut satırı) ya da web arayüzünden değişken ekleme/düzenleme işini destekliyor:

1. **GitHub CLI (“gh variable set …”)**
   * Örnek komutlar:

```yaml
# Mevcut repo için bir değişken ekle
gh variable set MYVARIABLE

# Değeri doğrudan ver
gh variable set MYVARIABLE --body "example_value"

# .env dosyasından çoklu değişken yükle
gh variable set -f .env

# Organization-level variable
gh variable set MYVARIABLE --org myOrg
```

**Web Arayüzünden**

* Repo “Settings” → “Secrets and variables” → “Actions” menüsünde “Variables” sekmesi bulunur.
* “New Repository Variable” diyerek isim ve değer girersin.
* Organization ya da Environment düzeyinde de benzer menüler vardır.

### 4) Neden Secrets Değil de Vars?

* **Sensitive (gizli) data** → `secrets` kullan
* **Non-sensitive** (herhangi bir URL, sürüm numarası, config) → `vars` kullan

Bu sayede parolalarla sıradan ayarları karıştırmadan, hem daha düzenli hem de güvenlik açısından doğru yaklaşımı benimsersin.

```yaml
name: Use Config Variable
on: [push]

jobs:
  demo:
    runs-on: ubuntu-latest
    steps:
      - name: Print Config
        run: |
          echo "My Config: ${{ vars.MY_CONFIG_VAR }}"
```

* Burada “`MY_CONFIG_VAR`” adlı bir değişkeni (örneğin “<https://api.example.com/v1”>) sakladığını varsayalım.
* Workflow’da `$MY_CONFIG_VAR`’ın değerini doğrudan görebilirsin (maskelenmez).

#### Özet

* **Configuration Variables** → Hassas olmayan değerler için “vars” context.
* **Tanımlama** → Web arayüzünden veya GitHub CLI ile (`gh variable set …`).
* **Düzeyler** → Repo / Environment / Organization.
* **Fark**: Secrets’lar şifreli ve maskelenir, Vars ise düz metin; dolayısıyla güvenli bilgileri asla Vars’ta tutmamalısın.

Bu şekilde, GitHub Actions içinde bir yandan gizli verileri “Secrets” ile yönetirken, diğer yandan “Vars” ile konfigürasyon ayarlarını kolayca paylaşabilirsin.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://note.onurbolatoglu.com/github-actions/configuration-variables.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
