Ympäristömuuttujien tutkiminen
Ympäristömuuttujat ovat välttämättömiä joustavien ja ylläpidettävien GitHub Actions -työnkulkujen luomisessa. Niiden avulla voit määrittää käyttäytymistä, siirtää tietoja vaiheiden välillä ja mukauttaa työnkulkuja eri ympäristöihin ilman arvojen kovakoodausta.
Ympäristömuuttujien ymmärtäminen GitHub Actionsissa
Ympäristömuuttujien avulla voit tallentaa ja käyttää määritystietoja työnkuluissasi. Ne voidaan asettaa eri laajuuksiin ja käyttää koko automaatioputkessa johdonmukaisen ja turvallisen kokoonpanon hallinnan takaamiseksi.
Muuttujien vaikutusalueet ja hierarkia
GitHub Actions tukee ympäristömuuttujia useilla tasoilla:
Työnkulun taso: Käytettävissä kaikissa työnkulun töissä Työtaso: Käytettävissä tietyn työn kaikissa vaiheissa
Vaihetaso: Käytettävissä vain kyseiselle vaiheelle
name: Multi-level Environment Variables
# Workflow-level variables
env:
NODE_VERSION: "20"
BUILD_CONFIGURATION: "Release"
jobs:
build:
runs-on: ubuntu-latest
# Job-level variables
env:
DATABASE_NAME: "production_db"
API_TIMEOUT: "30000"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Run tests with custom config
run: npm test
# Step-level variables
env:
TEST_ENVIRONMENT: "ci"
LOG_LEVEL: "debug"
Sisäiset GitHub-ympäristömuuttujat
GitHub tarjoaa automaattisesti lukuisia ympäristömuuttujia, joissa on tietoja työnkulun kontekstista:
Olennaiset sisäänrakennetut muuttujat
| Muuttuja | Description | Esimerkkiarvo |
|---|---|---|
GITHUB_WORKFLOW |
Työnkulun nimi | "CI Pipeline" |
GITHUB_ACTION |
Toimen yksilöllinen tunniste | "__actions_checkout" |
GITHUB_REPOSITORY |
Arkiston nimi (omistaja/säilö) | "microsoft/vscode" |
GITHUB_REF |
Haaran tai tunnisteen viite | "refs/heads/main" |
GITHUB_SHA |
Vahvista SHA, joka käynnisti työnkulun | "ffac537e6cbb..." |
GITHUB_ACTOR |
Työnkulun käynnistäneen käyttäjän käyttäjätunnus | "octocat" |
GITHUB_EVENT_NAME |
Työnkulun käynnistänyt tapahtuma | "push" |
RUNNER_OS |
Juoksijan käyttöjärjestelmä | "Linux" |
Kehittyneet sisäiset muuttujat
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Display workflow context
run: |
echo "Workflow: $GITHUB_WORKFLOW"
echo "Repository: $GITHUB_REPOSITORY"
echo "Branch: ${GITHUB_REF#refs/heads/}"
echo "Commit: $GITHUB_SHA"
echo "Actor: $GITHUB_ACTOR"
echo "Event: $GITHUB_EVENT_NAME"
echo "Runner OS: $RUNNER_OS"
Tärkeitä nimeämissääntöjä:
- Sisäiset muuttujat käyttävät
GITHUB_etuliitettä - Et voi luoda omia muuttujia,
GITHUB_joiden etuliite on - Muuttujien nimissä kirjainkoolla on merkitystä useimmissa yhteyksissä
Käytännön ympäristön muuttujakuviot
Määritysten hallinta
name: Environment-specific Deployment
env:
# Global configuration
APP_NAME: "my-awesome-app"
DOCKER_REGISTRY: "ghcr.io"
jobs:
deploy-staging:
if: github.ref == 'refs/heads/develop'
runs-on: ubuntu-latest
env:
ENVIRONMENT: "staging"
API_URL: "https://api.staging.example.com"
DATABASE_TIER: "basic"
steps:
- name: Deploy to staging
run: |
echo "Deploying $APP_NAME to $ENVIRONMENT"
echo "API URL: $API_URL"
docker build -t $DOCKER_REGISTRY/$APP_NAME:$GITHUB_SHA .
deploy-production:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
env:
ENVIRONMENT: "production"
API_URL: "https://api.example.com"
DATABASE_TIER: "premium"
steps:
- name: Deploy to production
run: |
echo "Deploying $APP_NAME to $ENVIRONMENT"
echo "API URL: $API_URL"
docker build -t $DOCKER_REGISTRY/$APP_NAME:latest .
Dynaamisen muuttujan luonti
steps:
- name: Generate build metadata
id: metadata
run: |
BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
BUILD_NUMBER=$GITHUB_RUN_NUMBER
VERSION_TAG=${GITHUB_REF#refs/tags/}
echo "BUILD_DATE=$BUILD_DATE" >> $GITHUB_ENV
echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITHUB_ENV
echo "VERSION_TAG=$VERSION_TAG" >> $GITHUB_ENV
- name: Use generated variables
run: |
echo "Build Date: $BUILD_DATE"
echo "Build Number: $BUILD_NUMBER"
echo "Version: $VERSION_TAG"
Usean alustan kokoonpano
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: ubuntu-latest
BUILD_COMMAND: "make build-linux"
PACKAGE_EXT: ".deb"
- os: windows-latest
BUILD_COMMAND: "msbuild /p:Configuration=Release"
PACKAGE_EXT: ".msi"
- os: macos-latest
BUILD_COMMAND: "xcodebuild -configuration Release"
PACKAGE_EXT: ".dmg"
runs-on: ${{ matrix.os }}
env:
BUILD_COMMAND: ${{ matrix.BUILD_COMMAND }}
PACKAGE_EXT: ${{ matrix.PACKAGE_EXT }}
steps:
- name: Build application
run: ${{ env.BUILD_COMMAND }}
Ympäristömuuttujien suojauksen parhaat käytännöt
Arkaluonteisten tietojen käsittely
# DON'T: Store secrets in plain environment variables
env:
DATABASE_PASSWORD: 'super-secret-password' # Visible in logs!
# DO: Use GitHub Secrets for sensitive data
env:
DATABASE_HOST: 'db.example.com'
DATABASE_PORT: '5432'
DATABASE_USER: 'app_user'
DATABASE_PASSWORD: ${{ secrets.DATABASE_PASSWORD }} # Secure!
Ympäristömuuttujien validointi
steps:
- name: Validate required environment variables
run: |
required_vars=("API_URL" "DATABASE_HOST" "ENVIRONMENT")
for var in "${required_vars[@]}"; do
if [ -z "${!var}" ]; then
echo "ERROR: Required environment variable $var is not set"
exit 1
else
echo "OK: $var is set"
fi
done
Edistyneet tekniikat
Ehdolliset ympäristömuuttujat
steps:
- name: Set environment-specific variables
run: |
if [ "$GITHUB_REF" = "refs/heads/main" ]; then
echo "LOG_LEVEL=info" >> $GITHUB_ENV
echo "CACHE_TTL=3600" >> $GITHUB_ENV
elif [ "$GITHUB_REF" = "refs/heads/develop" ]; then
echo "LOG_LEVEL=debug" >> $GITHUB_ENV
echo "CACHE_TTL=300" >> $GITHUB_ENV
else
echo "LOG_LEVEL=warn" >> $GITHUB_ENV
echo "CACHE_TTL=60" >> $GITHUB_ENV
fi
Ympäristömuuttujien mallit
env:
APP_VERSION: ${{ github.ref_name }}
BUILD_ID: ${{ github.run_number }}
FULL_VERSION: ${{ github.ref_name }}-build.${{ github.run_number }}
CONTAINER_TAG: ${{ github.repository }}:${{ github.ref_name }}
Ympäristömuuttujat ovat tehokas työkalu joustavien, ylläpidettävien ja turvallisten GitHub Actions -työnkulkujen luomiseen. Käytä niitä strategisesti välttääksesi kovakoodattuja arvoja ja mahdollistaaksesi helpon konfiguraation hallinnan eri ympäristöissä.
Täydellinen dokumentaatio ympäristömuuttujista on kohdassa Ympäristömuuttujat GitHub Actionsissa.