diff --git a/.github/workflows/publish-and-deploy.yaml b/.github/workflows/publish-and-deploy.yaml new file mode 100644 index 0000000..7b242b0 --- /dev/null +++ b/.github/workflows/publish-and-deploy.yaml @@ -0,0 +1,52 @@ +name: Publish Docker Image + +on: + push: + branches: + - meshdb + +jobs: + push_to_registry: + name: Push Docker Image to Docker Hub + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Log in to Docker Hub + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: willnilges/meshdb-line-of-sight + + - name: Build and push Docker image + uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + deploy_to_grandsvc: + name: Deploy to grandsvc + needs: push_to_registry + runs-on: ubuntu-latest + steps: + - name: Install SSH key + uses: shimataro/ssh-key-action@d4fffb50872869abe2d9a9098a6d9c5aa7d16be4 # v2 + with: + key: ${{ secrets.GRANDSVC_KEY }} + name: id_ed25519 # optional + known_hosts: ${{ secrets.GRANDSVC_KNOWN_HOSTS }} + #config: ${{ secrets.CONFIG }} # ssh_config; optional + if_key_exists: fail # replace / ignore / fail; optional (defaults to fail) + - name: Pull new Docker image + # Not a huge fan of this GITHUB_REF shenanigans + run: ssh ${{ secrets.GRANDSVC_SSH_TARGET }} "cd network-map-${{ github.ref_name }} && git pull --config core.sshCommand='ssh -i '${{ secrets.GRANDSVC_DEPLOY_KEY_PATH }} && docker compose pull && docker compose up -d" diff --git a/docker-compose.yml b/docker-compose.yml index 2e5fa41..4b6d182 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,7 @@ version: '3.8' services: los: container_name: los + image: willnilges/meshdb-line-of-sight:meshdb build: . environment: - NODE_ENV=production