3
0

Github Actionsでデプロイに失敗する。

Posted at

はじめに

Github Actionsの備忘録
ディレクトリの場所がよくわからなくなりがちなのでメモする。

問題

Github Actionsを走らせると下記のような状態によくなる。
ビルドがうまく出来ているように見えるが、デプロイがうまくいっていない。
image.png

エラーメッセージ

エラーメッセージを見ると下記の通りだった。

ビルド時にファイルをZip化することには成功しているものの、artifactのアップロードの際にパス指定がうまくいかなかったみたいだった。
結局なにもアップロードされないために、artifactがないよという状態だった。

ビルド時のウォーニング

Warning: No files were found with the provided path: release.zip

デプロイ時のエラー

Error: Unable to find any artifacts for the associated workflow

コード

コードをよく見てみる。
今回のファイルはトップディレクトリではなくその下のbackendというディレクトリにてビルドを行っていた。
そのため、working-directoryとしてbackendというディレクトリを指定していたのだが、これに関連したミスをしていた。

workflow.yml
(略)
build:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./backend
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Python version
        uses: actions/setup-python@v1
        with:
          python-version: ${{ env.PYTHON_VERSION }}

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate
      - name: Install dependencies
        run: pip install -r requirements.txt

      # Optional: Add step to run tests here

      - name: Zip artifact for deployment
        run: zip release.zip ./* -r

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v3
        with:
          name: python-app
          path: |
            release.zip
            !venv/
  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-function.outputs.webapp-url }}

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: python-app

      - name: Unzip artifact for deployment
        run: unzip release.zip
(略)

解決

artifactのアップロード部分について下記のように修正した。

Before

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v3
        with:
          name: python-app
          path: |
            release.zip
            !venv/

After

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v3
        with:
          name: python-app
          path: |
            ./backend/release.zip
            !venv/

Zip化したファイルに対してworking-directoryで指定したパスを付加した。

修正後ちゃんとデプロイまでうまくいった
image.png

ビルド時のデフォルトのworking-directoryを指定したので、ビルドのステップであればどんなときでもデフォルトのワーキングディレクトリで作業してもらっているのかと思いきや、落とし穴だった。
もっと精進する次第です(´;ω;`)

以上でございました。

3
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
3
0