From 7e26ccf5311d3c68a13b693c5e2b05c61e31f398 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Tue, 13 Aug 2024 14:27:49 +0300 Subject: feat!: Major workflow rename, reorder, restructure and README updates --- .github/workflows/cd.yml | 88 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 .github/workflows/cd.yml (limited to '.github/workflows/cd.yml') diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..2419fe2 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,88 @@ +name: Release and deploy new version +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 + + # This emulates deploying to an actual (remote) cluster by first setting up the cluster on older commit and then rolling out current one + Deploy-kubernetes: + name: Deploy kubernetes cluster locally to an action + runs-on: ubuntu-latest + needs: Build-docker-and-push + steps: + # Setup dependencies + - name: Install socat + run: sudo apt-get install -y socat + - uses: medyagh/setup-minikube@master + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + - name: Pull (release) docker image + run: | + docker pull ${{ secrets.DOCKERHUB_USERNAME }}/pico-web-server:latest + - name: Configure demo data + run: | + minikube cp ./demo/index.md /usr/share/demo/ + + # Setup old deployment + - name: Checkout previous commit + run: | + git checkout HEAD^ + # Deploy previous version + - name: Minikube deploy + run: | + kubectl apply -f kubernetes/ + kubectl rollout status deployment/pico-web-server-deployment + - name: Using cluster + run: | + kubectl get all + echo -ne 'demo@/' | socat STDIO TCP:$(minikube service pico-web-server-service --url | cut -d/ -f3-) + + # Setup current deployment + - name: Checkout current + run: | + git checkout main + # Deploy current version + - name: Minikube deploy + run: | + kubectl apply -f kubernetes/ + kubectl rollout status deployment/pico-web-server-deployment + - name: Using cluster + run: | + kubectl get all + echo -ne 'demo@/' | socat STDIO TCP:$(minikube service pico-web-server-service --url | cut -d/ -f3-) + + # End + - name: Minikube stop + run: | + minikube stop -- cgit v1.2.3