# name of the workflow. # this is optional. name: Interview Cloud Actions # events that will trigger this workflow. # here, we only have "pull_request", so the workflow will run # whenever we create a pull request. # other examples: [push] and [pull_request, push] on: pull_request: push: branches: - main # each workflow must have at least one job. # jobs run in parallel by default (we can change that). # each job groups together a series of steps to accomplish a purpose. jobs: # name of the job ruffLint: # the platform or OS that the workflow will run on. runs-on: ubuntu-latest # series of steps to finish the job. steps: # name of the step. # steps run sequentially. # this is optionale - name: checkout # each step can either have "uses" or "run". # "uses" run an action written somewhere other than this workflow . # usually from the community. # this action checks out the repo code to the runner (instance) # running the action uses: actions/checkout@v3 # another step. # this step runs a bash (Ubuntu's default shell) command - name: install ruff run: pip install ruff - name: Lint run: ruff check ./*/*.py --ignore E402 Dockerhub: runs-on: ubuntu-latest needs: ruffLint # will only run if linter is successful if: ${{ github.ref == 'refs/heads/main' || github.event.pull_request.merged == true }} # Runs if it's a push to 'main' or a merged PR to 'main' steps: - name: checkout uses: actions/checkout@v3 - name: Login to Dockerhub # log into docker hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} # Using secret for Docker username password: ${{ secrets.DOCKER_PASSWORD }} # Using secret for Docker password id: docker-login - name: build container image # build the container run: docker compose build --no-cache id: docker-build - name: Upload to Dockerhub run: docker push darkicewolf50/uofcbajacloud:latest if: ${{ steps.docker-login.outcome == 'success' && steps.docker-build.outcome == 'success' }}