質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

GitHub Enterprise

GitHub Enterpriseは、GitHub社が開発している企業向けのソフトウェア開発プラットフォームです。GitHubとほぼ同じ機能を持ち、クローズな環境でGitHubを構築することができます。

CI(継続的インテグレーション)

CI(継続的インテグレーション)は、アプリ開発においてビルドとテストを繰り返すことで品質改善と納期短縮を図る手法です。JenkinsやTravis CIなどの専用ツールを利用してプロセスを自動化・半自動化して効率的に実施します。

Q&A

解決済

1回答

2504閲覧

【Github Actions】ワークフローの実行時間を削減したい

Jake5

総合スコア32

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

GitHub Enterprise

GitHub Enterpriseは、GitHub社が開発している企業向けのソフトウェア開発プラットフォームです。GitHubとほぼ同じ機能を持ち、クローズな環境でGitHubを構築することができます。

CI(継続的インテグレーション)

CI(継続的インテグレーション)は、アプリ開発においてビルドとテストを繰り返すことで品質改善と納期短縮を図る手法です。JenkinsやTravis CIなどの専用ツールを利用してプロセスを自動化・半自動化して効率的に実施します。

0グッド

0クリップ

投稿2021/04/15 14:25

リモートリポジトリのmaster/developブランチにコードをpushすることによって、それぞれのブランチに対応するディレクトリに自動でFTPデプロイできるワークフローを作成しました。
ワークフロー自体は問題なく動くのですが、実行に3分ほどかかってしまうため冗長なコードまとめることで、実行時間を少しでも削減したいと考えております。(仮想環境のスペック変更は検討しておりません)
if:でmaster/developに分岐後、env:REMOTE_DIR:以外は同じことが書かれているためこの辺りをまとめたいです。

他に実行時間を削減する方法も含めて、コードを共通化する方法をご教示いただけると幸いです。

workflow

1on: 2 push: 3name: Deploy 4jobs: 5 runs-on: ubuntu-latest 6 steps: 7 - uses: actions/checkout@v2 8 - name: FTP-Deploy-For-Master-Branch 9 if: github.ref == 'refs/heads/master' 10 uses: SamKirkland/FTP-Deploy-Action@2.0.0 11 with: 12 branch: master 13 env: 14 FTP_SERVER: ${{ secrets.FTP_SERVER }} 15 FTP_USERNAME: ${{ secrets.FTP_USERNAME }} 16 FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }} 17 LOCAL_DIR: ./ 18 REMOTE_DIR: /dir_for_master 19 20 - uses: actions/checkout@v2 21 - name: FTP-Deploy-For-Dev-Branch 22 if: github.ref == 'refs/heads/develop' 23 uses: SamKirkland/FTP-Deploy-Action@2.0.0 24 with: 25 branch: develop 26 env: 27 FTP_SERVER: ${{ secrets.FTP_SERVER }} 28 FTP_USERNAME: ${{ secrets.FTP_USERNAME }} 29 FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }} 30 LOCAL_DIR: ./ 31 REMOTE_DIR: /dir_for_dev

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ワークフローの実行時間を削減したい

1. アップロードサイズの削減

LOCAL_DIR: ./ っとなっており、全てのファイルをアップロードしているようですので数を減らす、各ファイルサイズを減らす事で実行時間の削減が可能かと思います。
例としては以下が考えられるかと思います。

  • 必要なファイルのみ対象とする

フォルダを指定
変更があるファイルのみ

  • 圧縮

ワークフロー内で圧縮した状態でアップロードする

2. Actionのバージョンアップ

以下を見ると4.0.0が最新のようですので、もしかしたら速度改善がされているかもしれません。

https://github.com/marketplace/actions/ftp-deploy
https://github.com/SamKirkland/FTP-Deploy-Action

その他

  • コードを共通化する方法

Actionのドキュメントをみてもそれっぽい記載がないので難しいのではないでしょうか。
そもそも、共通化してはいけない部分なきがします。

投稿2021/04/16 07:02

編集2021/04/16 07:04
yamap55

総合スコア1376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Jake5

2021/04/18 03:13

ご回答いただきありがとうございます。 バージョンを上げるだけで速度が大幅に改善されましたm(._.)m コードの共通化は難しいのですね。 こちらですが、 >LOCAL_DIR: ./ っとなっており、全てのファイルをアップロードしているようですので数を減らす、各ファイルサイズを減らす事で実行時間の削減が可能かと思います。 アップロード自体はデフォルトの設定で差分のみ行われているようですが、差分を確認する際にあらかじめ決められたディレクトリ内でファイル探査?を行わせた方が実行時間が減るという認識で合っていますでしょうか? こちらに関しては、 >ワークフロー内で圧縮した状態でアップロードする 圧縮してアップするオプションはなさそうでした。ただ、速度改善の施策として非常に参考になりますm(._.)m
yamap55

2021/04/19 05:27

ワークフロー(記載されているyaml)のみでの改善を行う方法を求めているという事でしょうか? その通りであれば、質問文に記載をしておいた方が良いかと思います。 ログの提示がないため想定でしかありませんが、アップロードに時間がかかっているため、根本解決をするにはアップロードサイズ(ファイル)を減らすか、速度を上げる以外の解決策はありません。
Jake5

2021/04/19 17:56

ワークフロー内のみで速度改善は行うものだと思っていました。 誤解させてしまったのであれば申し訳ありません。 速度改善に関してはActionのバージョンアップにより、大幅に改善されたので問題ありませんm(._.)m ただこちらのご回答に関しまして、 >LOCAL_DIR: ./ っとなっており、全てのファイルをアップロードしているようですので数を減らす、各ファイルサイズを減らす事で実行時間の削減が可能かと思います。 LOCAL_DIR: ./と指定してもログを確認したところ差分のみアップロードされているようです。 ディレクトリを絞ることにより、さらに速度改善が期待できるという理解で正しいでしょうか? 質問内容と少しずれているかもしれませんが、ご教示いただけると幸いです。
yamap55

2021/04/19 23:46

> LOCAL_DIR: ./と指定してもログを確認したところ差分のみアップロードされているようです。 > ディレクトリを絞ることにより、さらに速度改善が期待できるという理解で正しいでしょうか? 少なくても差分を調査する時間は削減されるので遅くなることはないかと思います。
Jake5

2021/04/21 07:15

承知しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問