diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index ab61bb2..70f2051 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -46,6 +46,7 @@ jobs: images: liamsgit.dev/LiamPietralla/code-snippets tags: | type=raw,value=latest + type=sha,value=${{ github.sha }} - name: Login to Registry uses: docker/login-action@v3 @@ -79,24 +80,13 @@ jobs: echo "$SSH_PRIVATE_KEY" > private.key sudo chmod 400 private.key - - name: Write Ansible Inventory To File - env: - APP_HOST: ${{ secrets.APP_HOST }} - run: | - echo "[app]" > hosts.ini - echo "$APP_HOST" >> hosts.ini + - name: Setup Nomad + uses: hashicorp/setup-nomad@main + with: + nomad_version: '1.10.5' - - name: Install Ansible + - name: Deploy Job to Nomad run: | - sudo apt-add-repository ppa:ansible/ansible -y - sudo apt-get update -y - sudo apt-get install ansible -y - - - name: Run Ansible Playbook to Configure Servers - run: | - export ANSIBLE_HOST_KEY_CHECKING=False # Disable host key checking - ansible-playbook infra/ansible/deploy-playbook.yml --private-key private.key --inventory hosts.ini + nomad job run -var="version=${{ github.sha }}" infra/nomad/code-snippets.nomad.hcl env: - APP_HOST: ${{ secrets.APP_HOST }} - REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} - REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} \ No newline at end of file + NOMAD_ADDR: ${{ secrets.NOMAD_ADDR }} diff --git a/infra/nomad/code-snippets.nomad.hcl b/infra/nomad/code-snippets.nomad.hcl new file mode 100644 index 0000000..ccbfea5 --- /dev/null +++ b/infra/nomad/code-snippets.nomad.hcl @@ -0,0 +1,46 @@ +job "code-snippets" { + datacenters = ["dc1"] + type = "service" + + variable "version" { + type = string + default = "latest" + } + + group "code-snippets" { + count = 1 + + network { + port "http" { + to = 80 + } + } + + task "code-snippets" { + driver = "docker" + + config { + image = "liamsgit.dev/LiamPietralla/code-snippets:${var.version}" + force_pull = true + ports = ["http"] + } + + service { + name = "code-snippets" + port = "http" + tags = [ + "traefik.enable=true", + "traefik.http.routers.code-snippets.rule=PathPrefix(`/`)", + "traefik.http.routers.code-snippets.entrypoints=p5003" + ] + + check { + type = "http" + path = "/" + interval = "10s" + timeout = "2s" + } + } + } + } +} \ No newline at end of file