diff --git a/.github/workflows/publish-latest.yml b/.github/workflows/publish-latest.yml new file mode 100644 index 0000000..0f978d8 --- /dev/null +++ b/.github/workflows/publish-latest.yml @@ -0,0 +1,33 @@ +name: publish-latest +on: + push: + branches: [main] +concurrency: + group: ${{ github.event.workflow_run.head_repository.full_name }}::${{ github.event.workflow_run.head_branch }}::${{ github.workflow }} + cancel-in-progress: true +jobs: + publish-latest: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + timeout-minutes: 60 + steps: + - uses: actions/checkout@v4 + - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-buildx-action@v3 + - name: Get image repository + run: echo IMAGE_REPOSITORY=$(echo ghcr.io/${{ github.actor }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV + - name: Login to registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64 + pull: true + push: true + tags: ${{ env.IMAGE_REPOSITORY }}:latest diff --git a/.gitignore b/.gitignore index 915d6c8..95ea213 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .env bin +vendor +.idea diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8741a99 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM golang:alpine AS builder +RUN apk --update add ca-certificates +WORKDIR /app +COPY . ./ +RUN go mod tidy +ENV DISCORD_BOT_TOKEN="" +ENV GIT_COMMIT="" +ENV BUILD_DATE="" +RUN go build -ldflags="-s -w -X main.CommitHash=$GIT_COMMIT -X main.BuildDate=$BUILD_DATE" -o bin/swiftspiracybot cmd/bot/main.go +ENTRYPOINT ["bin/swiftspiracybot"] diff --git a/go.mod b/go.mod index f5cb850..5e741e2 100644 --- a/go.mod +++ b/go.mod @@ -3,9 +3,12 @@ module github.com/khinshankhan/swiftspiracy go 1.23.4 require ( - github.com/bwmarrin/discordgo v0.28.1 // indirect + github.com/bwmarrin/discordgo v0.28.1 + github.com/joho/godotenv v1.5.1 +) + +require ( github.com/gorilla/websocket v1.4.2 // indirect - github.com/joho/godotenv v1.5.1 // indirect golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b // indirect golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 // indirect )