Advanced GitHub Actions
CI/CDの基本を超えて、複雑なパイプライン、機密情報管理、環境分離を学びます。
1. Multi-Stage Workflows (マルチステージ)
ビルド、テスト、デプロイを依存関係のある「Job」として分割します。`needs` キーワードを使います。
- Artifacts: Job間でファイルを受け渡す (Build → Deploy)
- Environment: 本番環境と検証環境で承認フローやSecretを変える
# .github/workflows/deploy.ymlname: CD Pipeline
on: push: tags: ['v*'] # Run on version tags
jobs: build: runs-on: ubuntu-latest outputs: script-file: ${{ steps.publish.outputs.script }} steps: - uses: actions/checkout@v4 - name: Build run: npm run build
# Upload build artifact for next job - uses: actions/upload-artifact@v4 with: name: dist-files path: ./dist
deploy: needs: build # Depends on build job runs-on: ubuntu-latest environment: production # Uses 'production' environment secrets steps: - uses: actions/download-artifact@v4 with: name: dist-files
- name: Deploy to S3 env: AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }} run: aws s3 sync ./dist s3://my-bucket2. Matrix Builds
異なるOSやNode.jsバージョンの組み合わせで並列テストを実行します。
strategy: matrix: os: [ubuntu-latest, windows-latest] node: [18, 20]steps: - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }}3. Secrets & Variables
APIキーやパスワードは決してコードに含めてはいけません。GitHub Actions Secretsを使用します。
⚠️ Security Tip: `pull_request` イベントでSecretsを使う際は注意が必要です(外部からのPRで悪用されるリスク)。