LoginSignup
daigo01090118
@daigo01090118 (daigo ikeda)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

github actionの環境変数について

github actionを使ってciをしているのですが、rpecの結果がローカルだとパスしてリモートだとエラーになります。
原因としては新しくメールの送信設定を追加して、envを用いてパスワードや送信元のアドレスを表示しているからだと思います。

  config.action_mailer.smtp_settings = {
    port:                 587,
    address:              'smtp.gmail.com',
    domain:               'smtp.gmail.com',
    user_name:            ENV["GMAIL_ADDRESS"],
    password:             ENV["GMAIL_2FACTOR_PASSWORD"],
    authentication:       'plain',
    enable_starttls_auto: true
  }

試したこととしては、$GITHUB_ENVに(name: value)として追加してみたのですが結果は変わらず。

name: Test Rspec

on:
  pull_request:
    branches: [ master ]

jobs:
  run_spec:
    name: Run Test
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

    steps:
    - uses: actions/checkout@v2
    - name: Set up Ruby 2.6.5
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: 2.6.5
    - name: Test with Rspec
      run: |
        echo "ENV["GMAIL_ADDRESS"]=${{ secrets.GMAIL_ADDRESS }}" >> $GITHUB_ENV
        echo "ENV["GMAIL_2FACTOR_PASSWORD"]=${{ secrets.GMAIL_2FACTOR_PASSWORD }}" >> $GITHUB_ENV
        gem install bundler
        bundle config set --local path vendor/bundle  --jobs 4 --retry 3
        bundle install --jobs 4 --retry 3
        bundle exec rspec
    - name: Slack Notification
      uses: rtCamp/action-slack-notify@v2
      env:
        SLACK_CHANNEL: my-portfolio
        SLACK_COLOR: ${{job.status}}
        SLACK_USERNAME: ${{ github.actor }}
        SLACK_TITLE: rspecが実行されました
        SLACK_MESSAGE: 結果を確認してください
        SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}

ワークフローのエラーとしては、こんな感じになっています。
多分このenvのところが原因なんじゃないかと思っているのですが、対処方がわかりません。
公式を見て、環境変数の使い方を見てみても求めているものじゃなかったので困っています、
すいませんが回答よろしくお願いします。

     ArgumentError:
       SMTP From address may not be blank: nil
     # ./spec/models/post_product_spec.rb:37:in `block (2 levels) in <main>'
0

1Answer

こんな感じではないですかね?

env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      GMAIL_ADDRESS: ${{ secrets.GMAIL_ADDRESS}}
      GMAIL_2FACTOR_PASSWORD: ${{ secrets.GMAIL_2FACTOR_PASSWORD}}

    steps:
    - uses: actions/checkout@v2
    - name: Set up Ruby 2.6.5
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: 2.6.5
    - name: Test with Rspec
      run:
        gem install bundler
        bundle config set --local path vendor/bundle  --jobs 4 --retry 3
        bundle install --jobs 4 --retry 3

0

Comments

  1. @daigo01090118

    Questioner
    質問クローズするの忘れてました!
    自分もそれ試したら上手くいったんで進めました!
    回答ありがとうございます!

Your answer might help someone💌