name: Deploy everything on: push: branches: - main env: CONTAINER_REGISTRY: registry.digitalocean.com/declared DOMAIN: decla.red jobs: build-error-pages: runs-on: ubuntu-latest steps: - name: Checkout current branch with lfs uses: actions/checkout@main with: lfs: true - name: Setup auth tokens run: | # Docker Hub docker login -u ${{ secrets.DOCKER_TOKEN }} -p ${{ secrets.DOCKER_TOKEN }} $CONTAINER_REGISTRY - name: Build and push error pages run: | docker build . -t $CONTAINER_REGISTRY/declared-error-pages docker push $CONTAINER_REGISTRY/declared-error-pages working-directory: error-pages build-ingress: runs-on: ubuntu-latest needs: - build-error-pages steps: - name: Checkout current branch with lfs uses: actions/checkout@main with: lfs: true - name: Setup auth tokens run: | # Docker Hub docker login -u ${{ secrets.DOCKER_TOKEN }} -p ${{ secrets.DOCKER_TOKEN }} $CONTAINER_REGISTRY - name: Build and push ingress run: | docker build . -t $CONTAINER_REGISTRY/declared-ingress docker push $CONTAINER_REGISTRY/declared-ingress working-directory: ingress build-frontend: runs-on: ubuntu-latest needs: - build-error-pages steps: - name: Checkout current branch with lfs uses: actions/checkout@main with: lfs: true - name: Setup auth tokens run: | # Docker Hub docker login -u ${{ secrets.DOCKER_TOKEN }} -p ${{ secrets.DOCKER_TOKEN }} $CONTAINER_REGISTRY - name: Build and push frontend run: | docker build . -t $CONTAINER_REGISTRY/declared-frontend docker push $CONTAINER_REGISTRY/declared-frontend working-directory: frontend deploy: runs-on: ubuntu-latest needs: - build-frontend - build-ingress steps: - name: Checkout current branch with lfs uses: actions/checkout@main with: lfs: true - name: Setup auth tokens run: | # SSH key mkdir ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519 chmod 400 ~/.ssh/id_ed25519 ssh -o StrictHostKeyChecking=no root@$DOMAIN uptime - name: Stack up run: | DOCKER_HOST=ssh://root@$DOMAIN docker stack up declared -c docker-compose.yml working-directory: infrastructure