name: Docker on: push: branches: [ "main" ] # Publish semver tags as releases. tags: [ 'v*.*.*' ] pull_request: branches: [ "main" ] jobs: build: runs-on: ubuntu-latest permissions: contents: read packages: write env: EARTHLY_TOKEN: ${{ secrets.EARTHLY_TOKEN }} steps: - name: Checkout repository uses: actions/checkout@v4 - uses: earthly/actions-setup@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} version: "latest" # or pin to an specific version, e.g. "0.8.1" - name: Tailscale uses: tailscale/github-action@v2 with: oauth-client-id: ${{ secrets.TAILSCALE_CLIENT_ID }} oauth-secret: ${{ secrets.TAILSCALE_CLIENT_SECRET }} tags: tag:ci - name: Log into registry if: github.event_name != 'pull_request' uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Docker image if: github.event_name != 'pull_request' id: build-and-push run: | earthly --org me-2625 --sat alpha --ci --push +all - name: Build Docker image if: github.event_name == 'pull_request' id: build run: | earthly --org me-2625 --sat alpha --ci +all deploy: name: "Deploy xesite" needs: build runs-on: ubuntu-latest permissions: contents: read #if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - uses: azure/setup-kubectl@v4 - name: Save Civo kubeconfig run: | curl -sL https://civo.com/get | sh civo apikey add default $CIVO_TOKEN civo apikey current default civo kubernetes config --region phx1 aeacus --save --switch env: CIVO_TOKEN: ${{ secrets.CIVO_TOKEN }} - uses: dorny/paths-filter@v3 id: changes with: filters: | src: - 'cmd/**/*.go' - 'internal/**/*.go' - 'pb/*' - 'pb/**/*' - 'go.mod' - 'go.sum' - 'Earthfile' - 'manifest/**/*.yaml' - name: "Deploy" if: steps.changes.outputs.src == 'true' run: | kubectl apply -k manifest kubectl rollout restart -n default deploy/xesite