name: Build, Push & Deploy Angular App on: push: branches: - main # Optional: führe auch bei Tag-Releases ein Deployment durch tags: - '*' jobs: build: name: 🏗️ Build Docker Image runs-on: docker steps: - name: Checkout Repository uses: actions/checkout@v3 - name: Install Docker client run: | apk add --no-cache docker-cli bash - name: Build Docker Image run: | chmod +x ./docker/build.sh cd docker ./build.sh "${{ env.IMAGE_NAME }}" "${{ env.TAG }}" env: IMAGE_NAME: angular-web-app TAG: ${{ github.ref_name == 'main' && 'latest' || github.ref_name }} push: name: ⬆️ Push Image to Gitea Registry runs-on: docker needs: build steps: - name: Checkout Repository uses: actions/checkout@v3 - name: Push Image run: | apk add --no-cache bash docker-cli cd docker chmod +x ./push-to-gitea.sh export GITEA_REGISTRY="${{ env.GITEA_REGISTRY }}" export GITEA_USER="${{ secrets.CI_REGISTRY_USER }}" export GITEA_TOKEN="${{ secrets.CI_REGISTRY_PASSWORD }}" ./push-to-gitea.sh "${{ env.IMAGE_NAME }}" "${{ env.TAG }}" env: IMAGE_NAME: angular-web-app TAG: ${{ github.ref_name == 'main' && 'latest' || github.ref_name }} GITEA_REGISTRY: gitea.moz-tech.de deploy: name: 🚀 Deploy to Remote Server runs-on: docker needs: push if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/') steps: - name: Prepare environment run: apk add --no-cache openssh-client docker-cli - name: Deploy via SSH run: | echo "${{ secrets.DEPLOY_KEY }}" > /tmp/deploy_key.pem chmod 600 /tmp/deploy_key.pem ssh -i /tmp/deploy_key.pem -o StrictHostKeyChecking=no \ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} <<'EOF' docker login gitea.moz-tech.de -u "${{ secrets.CI_REGISTRY_USER }}" -p "${{ secrets.CI_REGISTRY_PASSWORD }}" docker pull gitea.moz-tech.de/${{ secrets.CI_REGISTRY_USER }}/angular-web-app:latest docker stop angular-web-app || true docker rm angular-web-app || true docker run -d --name angular-web-app -p 80:80 gitea.moz-tech.de/${{ secrets.CI_REGISTRY_USER }}/angular-web-app:latest EOF