diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..8a30ae6 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,85 @@ +name: Docker + +on: + # schedule: + # - cron: '0 10 1 * *' + push: + branches: [ master ] + # Publish semver tags as releases. + tags: [ '*.*.*' ] + pull_request: + branches: [ master ] + +env: + # github.repository as / + IMAGE_NAME: byjg/easy-haproxy + + +jobs: + Test: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - run: pip install -r requirements.txt + - run: pytest -s tests/ + + Build: + runs-on: ubuntu-latest + needs: Test + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Log into registry + if: github.event_name != 'pull_request' || github.event.inputs.push == 'true' + uses: docker/login-action@v1 + with: + registry: ${{ secrets.DOCKER_REGISTRY }} + username: ${{ secrets.DOCKER_REGISTRY_USER }} + password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} + + # Extract metadata (tags, labels) for Docker + # https://github.com/docker/metadata-action + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v3 + with: + images: ${{ secrets.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }} + + # Build and push Docker image with Buildx (don't push on PR) + # https://github.com/docker/build-push-action + - name: Build and push Docker image + uses: docker/build-push-action@v2 + with: + context: . + file: Dockerfile + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' || github.event.inputs.push == 'true' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + Documentation: + runs-on: 'ubuntu-latest' + needs: Build + if: github.ref == 'refs/heads/master' + env: + DOC_GITHUB_TOKEN: '${{ secrets.DOC_TOKEN }}' + steps: + - uses: actions/checkout@v2 + - run: curl https://opensource.byjg.com/add-doc.sh | bash /dev/stdin devops docker-easy-haproxy \ No newline at end of file diff --git a/.gitignore b/.gitignore index d2768a5..835d304 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ venv .docker_data __pycache__ -.pytest_cache \ No newline at end of file +.pytest_cache +*.pyc \ No newline at end of file diff --git a/README.md b/README.md index 8f040f2..e4ddde5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Easy HAProxy +[![Opensource ByJG](https://img.shields.io/badge/opensource-byjg-success.svg)](http://opensource.byjg.com) +[![Build Status](https://github.com/byjg/docker-easy-haproxy/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/byjg/docker-easy-haproxy/actions/workflows/build.yml) + This Docker image will create dynamically the `haproxy.cfg` based on the labels defined in docker containers or from a simple Yaml instead docker @@ -240,3 +243,5 @@ docker build -t byjg/easy-haproxy . ``` +---- +[Open source ByJG](http://opensource.byjg.com)