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.
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.
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.
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 }}
.
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.
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:
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:
- Arahkan ke halaman utama repositori GitHub Anda.
- Klik tab "Settings".
- Di bilah sisi kiri, klik ""Secrets and variables" > "Actions".
- Klik tombol "New repository secret".
- 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:
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.