Merge pull request #60 from vbalalian/cicd-integration #10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Integration and Deployment | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: [master] | |
jobs: | |
build-and-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Build and run tests | |
run: | | |
docker-compose -f compose.test.yaml up --build -d | |
docker-compose -f compose.test.yaml run web_scraper pytest | |
docker-compose -f compose.test.yaml run api pytest | |
- name: Clean up | |
run: docker-compose -f compose.test.yaml down | |
deploy: | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
needs: build-and-test | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Build Docker images | |
run: docker-compose build | |
- name: Login to Docker Hub | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | |
- name: Build and Push Web Scraper Image | |
if: contains(github.event.head_commit.modified, '.web_scraping/') | |
run: | | |
docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/roman-coins-data-pipeline:web_scraper-${{ github.sha }} ./web_scraping | |
docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/roman-coins-data-pipeline:web_scraper-latest ./web_scraping | |
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/roman-coins-data-pipeline:web_scraper-${{ github.sha }} | |
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/roman-coins-data-pipeline:web_scraper-latest | |
- name: Build and Push API Image | |
if: contains(github.event.head_commit.modified, '.api/') | |
run: | | |
docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/roman-coins-data-pipeline:api-${{ github.sha }} ./api | |
docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/roman-coins-data-pipeline:api-latest ./api | |
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/roman-coins-data-pipeline:api-${{ github.sha }} | |
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/roman-coins-data-pipeline:api-latest |