GNU/Linux >> Linux の 問題 >  >> Linux

GitHub アクションを使用して CI/CD ワークフローをセットアップする

GitHub アクションを使用して CI/CD ワークフローをセットアップおよび構成し、ソース コードをリモート サーバーにデプロイします。

このガイドでは、プッシュが行われた後にサーバーへの自動デプロイを行うように GitHub アクションを構成する方法を学習します。サーバーで認証するための SSH キーをセットアップします。

前提条件

このガイドに従って、新しいユーザーを作成し、GitHub がサーバーとの安全な接続を確立するために必要な SSH キーを構成します。

上記の手順を完了したら、GitHub に進んでアクションを構成できます。

上記の設定から、次の詳細に注意してください。

<オール>
  • ユーザー名 :adduser を使用して作成した新しいユーザー コマンド
  • ホスト名 :これはサーバーの IP アドレスです。
  • 秘密鍵 :このキーは ssh-keygen を使用して自動的に作成されます 指図。キーが -----BEGIN RSA PRIVATE KEY----- で始まる RSA 形式であることを確認してください .
  • これら 3 つの詳細は、GitHub からサーバーに接続するために必要です。

    秘密の設定

    GitHub アカウントにログインし、リポジトリに移動します。

    設定>> シークレット に移動します .

    [新しいリポジトリ シークレット] をクリックします .

    名前に SSH_HOST を追加します 値に IP アドレス を入力します

    [シークレットを追加] をクリックします .

    もう一度 [新しいリポジトリ シークレット] をクリックします .

    名前に SSH_USERNAME を追加します 値にユーザー名を入力します 前提条件セクションに記載されている投稿で作成されたものです。

    [シークレットを追加] をクリックします .

    もう一度 [新しいリポジトリ シークレット] をクリックします .

    名前に SSH_KEY を追加します 値に秘密鍵を入力します 前提条件セクションに記載されている投稿で作成されたものです。

    [シークレットを追加] をクリックします .

    これで、以下に示すようにシークレットが作成されます。

    シークレットが配置されたら、アクションをセットアップできます。

    アクション ワークフローの開始

    [アクション] をクリックします。 タブ

    デフォルトで構成できるワークフローのリストが表示されます。

    [自分でワークフローをセットアップ] をクリックできます。

    ここにいくつかのデフォルト設定が表示されます。

    アクション ワークフローの構成

    ワークフロー ファイルには、必要に応じて名前を付けることができます。名前を deploy.yml とします .

    デフォルトで含まれていたすべてのワークフローを削除できます。

    以下のワークフローをコピーして追加してください。

    name: Identifier Name
    on:
      push:
        branches: [ branch-name ]
    
    jobs:
      deploy:    
        runs-on: ubuntu-latest
        steps:
          - uses: actions/[email protected]
          - name: Deploy source-code
            uses: appleboy/[email protected]
            env:
              HOST: ${{ secrets.SSH_HOST }}
              USERNAME: ${{ secrets.SSH_USERNAME }}
              PORT: 22
              KEY: ${{ secrets.SSH_KEY }}
            with:
              source: "*"
              target: "/path/in/your/server"

    上記のコードは、speck ブランチへのプッシュが行われると、サーバーへのデプロイを実行します。

    リポジトリのルート ロケーションにあるすべてのソース コードをデプロイします。特定のフォルダーを展開する必要がある場合、ソース ディレクティブで構成できるのは自分だけです。

    ユーザーがサーバー上で展開を実行する権限を持っていることを確認してください。

    たとえば、www-data ユーザーを使用して実行する Nginx または Apache Web サーバーを使用している場合は、以下に示すように権限を設定し、権限をリセットする必要があります。

    name: Identifier Name
    on:
      push:
        branches: [ branch-name ]
    
    jobs:
      deploy:    
        runs-on: ubuntu-latest
        steps:
          - name: Reset Permissions before deployment
            uses: appleboy/[email protected]
            with:
              host: ${{ secrets.SSH_HOST }}
              username: ${{ secrets.SSH_USERNAME }}
              key: ${{ secrets.SSH_KEY }}
              port: 22
              script: |
                sudo chmod -R 755 /path/in/your/server
                sudo chown -R username:username /path/in/your/server
                sudo setfacl -R -m u:www-data:rwx /path/in/your/server 
    
          - uses: actions/[email protected]
          - name: Deploy source-code
            uses: appleboy/[email protected]
            env:
              HOST: ${{ secrets.SSH_HOST }}
              USERNAME: ${{ secrets.SSH_USERNAME }}
              PORT: 22
              KEY: ${{ secrets.SSH_KEY }}
            with:
              source: "*"
              target: "/path/in/your/server"
    
          - name: Reset Permissions after deployment
            uses: appleboy/[email protected]
            with:
              host: ${{ secrets.SSH_HOST }}
              username: ${{ secrets.SSH_USERNAME }}
              key: ${{ secrets.SSH_KEY }}
              port: 22
              script: |
                sudo chmod -R 755 /path/in/your/server
                sudo chown -R www-data:www-data /path/in/your/server
                sudo setfacl -R -m u:username:rwx /path/in/your/server

    上記の展開構成では、展開用のフォルダーに対するフル アクセスと、ユーザー www-data の構成アクセス権を持つようにユーザーを構成します。 Apache と Nignx で使用されます。

    完了したら、[コミットを開始] をクリックします [Commit new file] をクリックしてセットアップを完了します。

    これで、speicifc ブランチへのプッシュが行われるたびに実行されるようにデプロイが構成されました。

    結論

    これで、CI/CD の GitHub アクション ワークフローをセットアップおよび構成する方法を学習しました。

    御時間ありがとうございます。問題やフィードバックに直面した場合は、下にコメントを残してください。


    Linux
    1. 文字列を含む名前のすべてのファイルを検索

    2. 変な名前のファイルを削除するには?

    3. 異なるサイズのドライブを使用した ZFS 初心者セットアップ

    1. Linuxではfindをfdに置き換えます

    2. Nginxを使用したリバースプロキシ:ステップバイステップのセットアップガイド

    3. 長い名前の Linux mv ファイル

    1. RsyslogとMySQLを使用してLogAnalyzerをセットアップする方法

    2. ランチャーを使用してKubernetesクラスターをセットアップする

    3. 3つの連続した行をスワップとマージしますか?