Traffine I/O

Bahasa Indonesia

2023-03-06

Variabel Lingkungan dalam GitHub Actions

Pengantar

Variabel lingkungan dan rahasia adalah komponen penting dalam GitHub Actions yang memungkinkan pengembang mengelola konfigurasi dan data sensitif dengan aman. Dalam artikel ini, saya akan menjelajahi cara mengelola variabel lingkungan secara efektif dan menangani data sensitif dengan rahasia di GitHub Actions.

Mengelola Variabel Lingkungan

Variabel lingkungan adalah cara yang kuat untuk mengonfigurasi alur kerja GitHub Actions Anda. Mereka memungkinkan Anda untuk menyimpan dan mengelola nilai dinamis yang dapat digunakan kembali di seluruh alur kerja Anda, membuat kode Anda lebih bersih dan efisien. Dalam bab ini, saya akan membahas detail tentang mendefinisikan, menggunakan, dan mengelola variabel lingkungan dalam GitHub Actions.

Mendefinisikan Variabel Lingkungan

Variabel lingkungan dapat didefinisikan pada berbagai level dalam alur kerja GitHub Actions Anda:

Level Alur Kerja

Definisikan variabel lingkungan untuk seluruh alur kerja dengan mengatur kata kunci env pada level akar file YAML. Variabel-variabel ini akan tersedia untuk semua pekerjaan dan langkah dalam alur kerja.

yaml
env:
  API_BASE_URL: https://api.example.com
  NODE_ENV: production

jobs:
  build: ...

Level Pekerjaan

Definisikan variabel lingkungan yang spesifik untuk pekerjaan tertentu dengan mengatur kata kunci env dalam definisi pekerjaan. Variabel-variabel ini akan tersedia untuk semua langkah dalam pekerjaan tetapi tidak untuk pekerjaan lain.

yaml
jobs:
  build:
    env:
      API_BASE_URL: https://api.example.com
      NODE_ENV: production
    ...

Level Langkah

Definisikan variabel lingkungan untuk satu langkah dengan mengatur kata kunci env dalam definisi langkah. Variabel-variabel ini hanya akan tersedia dalam konteks langkah tersebut.

yaml
jobs:
  build:
    steps:
      - name: Run API tests
        env:
          API_BASE_URL: https://api.example.com
          NODE_ENV: test
        run: npm run test-api

Menggunakan Variabel Lingkungan dalam Langkah Alur Kerja

Setelah Anda mendefinisikan variabel lingkungan Anda, Anda dapat menggunakannya dalam langkah alur kerja Anda dengan merujuk pada konteks env. Untuk melakukannya, gunakan sintaks ${{ env.NAMA_VARIABEL }}.

yaml
jobs:
  build:
    steps:
      - name: Install dependencies
        run: npm ci

      - name: Run tests
        env:
          API_BASE_URL: https://api.example.com
        run: API_URL=${{ env.API_BASE_URL }} npm test

Variabel Lingkungan dalam Strategi Matriks

Strategi matriks adalah fitur yang kuat dalam GitHub Actions yang memungkinkan Anda membuat beberapa pekerjaan dengan konfigurasi yang berbeda menggunakan definisi alur kerja tunggal. Anda dapat menggunakan variabel lingkungan untuk memarameterkan pekerjaan matriks Anda, membuatnya mudah digunakan kembali dalam alur kerja yang sama dengan konfigurasi yang berbeda.

yaml
jobs:
  build:
    strategy:
      matrix:
        node_version: [12, 14, 16]
        os: [ubuntu-latest, windows-latest, macos-latest]

    runs-on: $ {{ matrix.os }}
    env:
      NODE_VERSION: $ {{ matrix.node_version }}

    steps:
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: $ {{ env.NODE_VERSION }}

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        run: npm test

Variabel Lingkungan Bawaan di GitHub Actions

GitHub Actions menyediakan seperangkat variabel lingkungan bawaan yang dapat Anda gunakan dalam alur kerja Anda tanpa harus mendefinisikannya sendiri. Variabel-variabel ini menyediakan informasi tentang repositori, konteks runner, dan data lain yang berguna. Beberapa variabel lingkungan bawaan yang sering digunakan antara lain:

  • GITHUB_REPOSITORY: Nama pemilik dan repositori. Misalnya, octocat/Hello-World.
  • GITHUB_SHA: SHA commit yang memicu jalannya alur kerja.
  • GITHUB_REF: Ref cabang atau tag yang memicu jalannya alur kerja.
  • GITHUB_WORKSPACE: Jalur direktori direktori kerja GitHub.

Untuk menggunakan variabel lingkungan bawaan ini, rujuk mereka dengan konteks env, seperti yang Anda lakukan dengan variabel lingkungan kustom:

yaml
jobs:
  build:
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Print repository information
        run: |
          echo "Repository: ${{ env.GITHUB_REPOSITORY }}"
          echo "Commit SHA: ${{ env.GITHUB_SHA }}"
          echo "Ref: ${{ env.GITHUB_REF }}"
          echo "Workspace directory: ${{ env.GITHUB_WORKSPACE }}"

Menangani Data Sensitif dengan Rahasia

Dalam banyak kasus, alur kerja memerlukan akses ke data sensitif seperti kunci API, kredensial, dan token. GitHub Actions menyediakan cara yang aman untuk mengelola data ini menggunakan rahasia. Rahasia adalah variabel lingkungan yang terenkripsi yang dirancang untuk menyimpan informasi sensitif dengan aman. Dalam bab ini, saya akan membahas cara membuat, mengelola, dan menggunakan rahasia dalam alur kerja GitHub Actions Anda.

Membuat dan Mengelola Rahasia

Rahasia dapat dibuat dan dikelola baik pada level repositori maupun organisasi. Untuk membuat rahasia baru untuk repositori Anda, ikuti langkah-langkah berikut:

  1. Arahkan ke halaman utama repositori GitHub Anda.
  2. Klik tab "Settings".
  3. Di bilah sisi kiri, klik ""Secrets and variables" > "Actions".
  4. Klik tombol "New repository secret".
  5. Masukkan nama rahasia dan nilai yang sesuai, lalu klik "Add secret".

Untuk membuat rahasia pada level organisasi, ikuti langkah serupa, tetapi mulailah dengan menavigasi ke halaman pengaturan organisasi.

Mengakses Rahasia dalam Alur Kerja

Untuk mengakses rahasia dalam alur kerja GitHub Actions Anda, gunakan konteks secrets. Sintaksnya adalah ${{ secrets.NAMA_RAHASIA }}. Berikut adalah contoh penggunaan rahasia untuk otentikasi dengan API:

yaml
jobs:
  deploy:
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Deploy to production
        env:
          API_KEY: ${{ secrets.PRODUCTION_API_KEY }}
        run: |
          curl -X POST -H "Authorization: Bearer ${{ env.API_KEY }}" https://api.example.com/deploy

Keep in mind that secrets are not exposed in logs and cannot be accessed in forked repositories. This is a security measure to protect your sensitive data.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!