GitHub アクションを使用して CI/CD ワークフローをセットアップおよび構成し、ソース コードをリモート サーバーにデプロイします。
このガイドでは、プッシュが行われた後にサーバーへの自動デプロイを行うように GitHub アクションを構成する方法を学習します。サーバーで認証するための SSH キーをセットアップします。
前提条件
このガイドに従って、新しいユーザーを作成し、GitHub がサーバーとの安全な接続を確立するために必要な SSH キーを構成します。
上記の手順を完了したら、GitHub に進んでアクションを構成できます。
上記の設定から、次の詳細に注意してください。
<オール>adduser
を使用して作成した新しいユーザー コマンド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 アクション ワークフローをセットアップおよび構成する方法を学習しました。
御時間ありがとうございます。問題やフィードバックに直面した場合は、下にコメントを残してください。