Githubアクションを使用した


Githubアクションを使用した


「GitHubアクションを使用して、リポジトリ内のソフトウェア開発ワークフローを自動化、カスタマイズ、実行します.」Githubアクションドキュメントページの紹介です.どのように、これは不可解に関連しますか?Ansibleはコードです、そして、そのため、Gitイベントに基づいてそれを展開するワークフローを構築できます.リポジトリにプッシュまたはプル要求など.

アクションを作成する


Githubアクションは、ジョブを作成し、ワークフローをカスタマイズするために結合する個々のタスクです.を使うDocker container Action , あなたがプッシュ要求をプッシュまたはマージたびに実行可能に実行する独自の作成されます.
アクションディレクトリを作成します.
mkdir .github/actions/ansible
新規作成Dockerfile .
FROM  <DockerHub-UserName>/ansible-in-containers

COPY ./entrypoint.sh /entrypoint.sh

ENTRYPOINT ["bash","/entrypoint.sh"]
コピーするentrypoint.sh アクション・ディレクトリへのスクリプト.
#BASH
Copy entrypoint.sh .github/actions/ansible

#POWERSHELL
Copy-Item entrypoint.sh .github/actions/ansible
クリエイトaction.yml 新しいディレクトリで.
name: 'Ansible'
description: 'Runs an Ansible playbook'
inputs:
  playbook:
    description: 'Ansible playbook to run'
    required: true
    default: playbook.yml
  inventory:
    description: 'Ansible inventory to use'
    required: true
    default: localhost
runs:
  using: 'docker'
  image: 'Dockerfile'
  args:
    - ${{ inputs.playbook }}
    - ${{ inputs.inventory }}
名前と説明は、アクションが何であるか、そして、それが何をするかに文脈を与えます.入力はDockerコンテナーアクションで使用されるパラメーターを定義します.PlayBookとInventoryは、このアクションの入力を必要とします.なぜなら、エントリポイント引数が空になっているからですansible-command は失敗します.各入力もデフォルト値を持っています.
魔法が起こる実行セクションの中で.Dockerに使用する設定は、dockerコンテナアクションとしてアクションタイプを指定するものです.イメージをDockerFileに設定すると、アクションによって使用されるコンテナをビルドするには、アクションディレクトリにDockerFileローカルを使用するように指示します.そして、イメージが造られたあと、argsは通過されます、そして、アクションはコンテナを走らせます.

ワークフローを作成する


ワークフローは、ビルド、テスト、およびリリースを調整するカスタム自動化されたプロセスです.ワークフローを使用して、すべての可用性ファイルをリントし、その後、実行可能なDockerコンテナアクションを実行します.
クリエイトworkflow ディレクトリ
mkdir .github/workflows
クリエイトdeploy_ansible.yml ワークフローファイル.
name: deploy ansible

on:
  push:
    branches:
    - master
  pull_request:
    branches:
    - master

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: checkout repo
      uses: actions/checkout@v2
    - name: Lint Ansible Playbook
      uses: ansible/ansible-lint-action@master
      with:
        targets: ""
  deployAnsible:
    needs: build
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - uses: ./.github/actions/ansible
      with: 
        playbook: playbook.yml
        inventory: localhost
上記の操作によって、生成可能なワークフローが生成されます.これは、リポジトリのマスターブランチに行われたプッシュまたはプル要求があるときにのみ起動されます.一度ワークフローが2つの仕事をキックオフされます.第一にbuild ジョブラン.ビルドは、実行可能なlintコマンドラインユーティリティをすべて実行するansible lintと呼ばれる公共のgithubアクションを実行します.あるいは、あなたの倉庫のYAMLファイル.実現可能なlintが成功するなら、2番目の仕事は引き起こされます.扱いにくいDockerコンテナアクションの実行deployAnsible コンテナに引数として与えられた値を使用します.次にコンテナはansible-playbook 引数with リスト.
つだけのことは、あなたの変更を押してください.Githubは、中でファイルを見つけます...Githubディレクトリに基づいて動作とワークフローを作成します.対応するディレクトリのYMLドキュメント.それを1分または2分、次にあなたのリポジトリGitHub.com , アクションタブの下のアクションの結果を確認します.

結論


これで、Dockerコンテナの中で、どのようにビルドを実行し、実行し、展開できるかを学びました.コンテナはもはや開発者のみアプリケーションを実行するために使用されます.また、どのようにsysadminsは、技術者をdeved、およびsresのコードとしてインフラストラクチャを展開します.コンテナを自分で使用すると、利点を最初に手が表示されます.コンテナは、あなたのチームのための一貫した開発の経験を提供し、パイプライン、リリース可能な環境のバージョンイメージ、増加した移植性、および柔軟性.コンテナは、Webアプリケーションだけでなく、インフラストラクチャの未来です.あなたがそれらについて学ぶ必要があるまで待機しないでください、今日開始、今開始します.
完全なブログ記事を読んでください."Using Ansible in Containers" on duffney.io