name: Create release and push production server image to dockerhub on: push: branches: - main jobs: Build-docker-and-push: name: Build the production docker container image and push it to dockerhub runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - uses: docker/build-push-action@v5 with: push: true context: . file: ./docker/prod/Dockerfile tags: ${{ secrets.DOCKERHUB_USERNAME }}/pico-web-server:latest Release: name: Make github release runs-on: ubuntu-latest needs: Build-docker-and-push steps: - uses: actions/checkout@v4 - uses: rymndhng/release-on-push-action@master env: GITHUB_TOKEN: ${{ secrets.TOKEN_GITHUB }} with: bump_version_scheme: norelease # PR must have one of these labels: release:major, release:minor, release:patch Deploy-kubernetes: name: Deploy kubernetes cluster locally to an action runs-on: ubuntu-latest needs: Build-docker-and-push steps: - uses: medyagh/setup-minikube@master - name: Pull (release) docker image run: | docker pull ${{ secrets.DOCKERHUB_USERNAME }}/pico-web-server:latest - name: Checkout previous uses: actions/checkout@v2 with: fetch-depth: 2 - run: git checkout HEAD^ - name: Minikube deploy run: | kubectl apply -f kubernetes/ kubectl rollout status deployment/pico-web-server-deployment - name: Minikube use run: | minikube service list - name: Checkout current run: git checkout main - name: Minikube update run: | kubectl apply -f kubernetes/ kubectl rollout status deployment/pico-web-server-deployment - name: Minikube use run: | minikube service list - name: Minikube stop run: | minikube stop