LoginSignup
0
0

GitHub Actions で一つのシークレットに複数の環境変数を定義して利用する

Posted at

背景

  • GitHub Actions で複数の環境変数を参照するスクリプトを実行したい
  • リポジトリシークレットで変数を定義し、ワークフローからも参照して利用可能だが量が増えると手間になる
  • できるだけ楽に管理したい

想定環境

  • pipenv を使って python スクリプトを実行する
  • 環境変数は .env ファイルで定義

手順

  1. リポジトリシークレットで一つの変数に複数の環境変数を定義
    VAR1=value1
    VAR2=value2
    VAR3=value3
    VAR4=value4
    VAR5=value5
    VAR6=value6
    VAR7=value7
    VAR8=value8
    VAR9=value9
    
  2. ワークフローでシークレットを .env ファイルに書き出す
      - name: setup environments
        run: |
          echo "${{ secrets.ENVIRONMENTS }}" > .env
    
  3. スクリプト内で環境変数を参照する処理を記述する
    import os
    print(os.getenv("VAR3")
    

ワークフローサンプル

name: PIPENV

on:
  workflow_dispatch:
  
jobs:
  build:
    runs-on: 任意の実行環境

    steps:
      - uses: actions/checkout@v3
       
      - name: install python
        uses: actions/setup-python@v5
        with:
          python-version: "v3.11.1"

      - name: install pipenv
        run: |
          python -m pip install --upgrade pip
          python -m pip install pipenv=="2023.4.29"

      - name: setup environments
        run: |
          echo "${{ secrets.ENVIRONMENTS }}" > .env
          cat .env

      - name: pipenv
        run: |
          pipenv run python -c "import os; print(os.getenv('VAR3'))"
実行結果(直接の出力はマスクされる)
Run echo "***
  echo "***
  ***
  ***
  ***
  ***
  ***
  ***
  ***
  ***" > .env
  cat .env
  shell: /usr/bin/bash -e {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.11.1/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.1/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.1/x64
    Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.1/x64
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.1/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.1/x64/lib
***
***
***
***
***
***
***
***
***
実行結果(スクリプトから参照しての出力は表示されてしまう)
Run pipenv run python -c "import os; print(os.getenv('VAR3'))"
Loading .env environment variables...
(略)
value3

まとめ・注意点

  • 一つのシークレットに対して複数の環境変数を定義できた
  • 基本的にはマスクしてくれるが、プログラムからの出力までには対応できないので、スクリプトからの出力処理には気をつける
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0