From 90feff2bfcbdb5586a459c2350a4172a4423668e Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Wed, 13 Mar 2024 22:06:46 +0100 Subject: ci: deploy the built Docker image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miquel Sabaté Solà --- .github/workflows/ci.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to '.github') diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54baa0e..e024ff9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,3 +54,35 @@ jobs: run: | bin/rails test bin/rails test:system + + deploy: + runs-on: ubuntu-latest + needs: [lint, test] + if: github.event_name == 'push' + steps: + - uses: actions/checkout@v2 + + - name: Build production Docker image + run: | + docker build --tag ${{ secrets.REGISTRY_HOST }}/${{ secrets.REGISTRY_USERNAME }}/operum:main . + + - name: Push Docker image + run: | + # The login is done with the default docker password storage, which is + # not the safest around, but it will be removed by a subsequent logout + # later on. + docker login -u "${{ secrets.REGISTRY_USERNAME }}" -p "${{ secrets.REGISTRY_PASSWORD }}" ${{ secrets.REGISTRY_HOST }} + docker push ${{ secrets.REGISTRY_HOST }}/${{ secrets.REGISTRY_USERNAME }}/operum:main + docker logout ${{ secrets.REGISTRY_HOST }} + + # The server provides a small script named `service-restart` which will do + # the right thing to pull the new image of the desired service and re-run + # it. + - name: Restart service with the new code + uses: garygrossgarten/github-action-ssh@release + with: + command: infra-restart operum + host: ${{ secrets.REMOTE_HOST }} + username: ${{ secrets.REMOTE_USERNAME }} + passphrase: ${{ secrets.REMOTE_PASSPHRASE }} + privateKey: ${{ secrets.PRIVATE_KEY}} -- cgit v1.2.3