diff --git a/.github/workflows/build-and-push.yaml b/.github/workflows/build-and-push.yaml new file mode 100644 index 0000000..39e3926 --- /dev/null +++ b/.github/workflows/build-and-push.yaml @@ -0,0 +1,32 @@ +--- +name: Build and Push Docker Container + +on: + workflow_dispatch: + pull_request: + branches: [ $default_branch ] + push: + +env: + github_runner: ubuntu-latest + container_name: gh-cli + docker_file: ubuntu20.Dockerfile + docker_tags: ghcr.io/gunnarwustl/gh-cli:ubuntu20 + +jobs: + diff_check: + runs-on: ubuntu-latest + steps: + - name: Diff Check + uses: ./.github/workflows/steps/diff-check.yaml + with: + container_name: ${{ env.container_name }} + docker_file: ${{ env.docker_file }} + + build_push: + runs-on: ubuntu-latest + steps: + - name: Build and Push + uses: ./.github/workflows/steps/docker-build.yaml + with: + push_image_bool: true diff --git a/.github/workflows/steps/diff-check.yaml b/.github/workflows/steps/diff-check.yaml new file mode 100644 index 0000000..05cee18 --- /dev/null +++ b/.github/workflows/steps/diff-check.yaml @@ -0,0 +1,19 @@ +--- +name: Diff Check + +jobs: + diff_check: + runs-on: ubuntu-latest + outputs: + ${{ container_name }}: ${{ steps.filter.outputs.${{ container_name }} }} + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Examine Paths and Files + uses: dorny/paths-filter@v2 + id: filter + with: + filters: | + ${{ container_name }}: + - ${{ docker_file }} diff --git a/.github/workflows/steps/docker-build.yaml b/.github/workflows/steps/docker-build.yaml new file mode 100644 index 0000000..b03e6f2 --- /dev/null +++ b/.github/workflows/steps/docker-build.yaml @@ -0,0 +1,26 @@ +--- +name: Build ${{ container_name }} + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Container Repository Login + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup BuildKit + uses: docker/setup-buildx-action@v2 + + - name: Build and Push Container + uses: docker/build-push-action@v3 + with: + file: ${{ docker_file }} + tags: ${{ docker_tags }} + push: ${{ push_image_bool }}