name: build-and-deploy on: push: branches: [main] workflow_dispatch: env: HARBOR: harbor.wace.me PROJECT: dev-pilots APP: jskim jobs: deploy: runs-on: ubuntu-24.04 steps: - name: tools run: | export DEBIAN_FRONTEND=noninteractive apt-get update -qq apt-get install -y ca-certificates curl gnupg git >/dev/null install -m0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list apt-get update -qq apt-get install -y docker-ce-cli docker-compose-plugin >/dev/null - name: checkout run: | rm -rf src && git clone --depth 1 --branch "$GITHUB_REF_NAME" http://oauth2:${{ github.token }}@gitea:3000/${GITHUB_REPOSITORY}.git src - name: build run: | cd src && docker build -t $HARBOR/$PROJECT/$APP:latest . - name: push env: HUSER: ${{ secrets.HARBOR_USER }} HSECRET: ${{ secrets.HARBOR_SECRET }} run: | echo "$HSECRET" | docker login $HARBOR -u "$HUSER" --password-stdin docker push $HARBOR/$PROJECT/$APP:latest - name: deploy env: DATABASE_URL: ${{ secrets.DATABASE_URL }} run: | cd src && docker compose -f deploy/docker-compose.yml up -d --pull always --force-recreate