on: push: pull_request: types: - opened - synchronize - reopened env: GO_VERSION: "1.21" name: Commit jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - run: | go install golang.org/x/tools/cmd/goimports@latest go install honnef.co/go/tools/cmd/staticcheck@latest export PATH="$HOME/go/bin:$PATH" - uses: pre-commit/action@v3.0.0 build-windows: name: Build Windows runs-on: ubuntu-latest steps: - run: sudo apt-get install -y mingw-w64 - uses: actions/checkout@v4 - uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - run: | go build ./cmd/litestream/ file ./litestream.exe env: CGO_ENABLED: "1" GOOS: windows GOARCH: amd64 CC: x86_64-w64-mingw32-gcc build: name: Build & Unit Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - run: go env - run: go install ./cmd/litestream - run: go test -v ./... # - name: Build integration test # run: go test -c ./integration # # - uses: actions/upload-artifact@v2 # with: # name: integration.test # path: integration.test # if-no-files-found: error # long-running-test: # name: Run Long Running Unit Test # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v2 # - uses: actions/setup-go@v2 # with: # go-version: '1.20' # - uses: actions/cache@v2 # with: # path: ~/go/pkg/mod # key: ${{ inputs.os }}-go-${{ hashFiles('**/go.sum') }} # restore-keys: ${{ inputs.os }}-go- # # - run: go install ./cmd/litestream # - run: go test -v -run=TestCmd_Replicate_LongRunning ./integration -long-running-duration 1m s3-mock-test: name: Run S3 Mock Tests runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.12' # cache: 'pip' - run: pip install moto[s3,server] - uses: actions/setup-go@v4 with: go-version: ${{ env.GO_VERSION }} - run: go env - run: go install ./cmd/litestream - run: ./etc/s3_mock.py go test -v ./replica_client_test.go -integration s3 # s3-integration-test: # name: Run S3 Integration Tests # runs-on: ubuntu-latest # needs: build # steps: # - uses: actions/download-artifact@v2 # with: # name: integration.test # - run: chmod +x integration.test # # - run: ./integration.test -test.v -test.run=TestReplicaClient -replica-type s3 # env: # LITESTREAM_S3_ACCESS_KEY_ID: ${{ secrets.LITESTREAM_S3_ACCESS_KEY_ID }} # LITESTREAM_S3_SECRET_ACCESS_KEY: ${{ secrets.LITESTREAM_S3_SECRET_ACCESS_KEY }} # LITESTREAM_S3_REGION: us-east-1 # LITESTREAM_S3_BUCKET: integration.litestream.io # gcp-integration-test: # name: Run GCP Integration Tests # runs-on: ubuntu-latest # needs: build # steps: # - name: Extract GCP credentials # run: 'echo "$GOOGLE_APPLICATION_CREDENTIALS" > /opt/gcp.json' # shell: bash # env: # GOOGLE_APPLICATION_CREDENTIALS: ${{secrets.GOOGLE_APPLICATION_CREDENTIALS}} # # - uses: actions/download-artifact@v2 # with: # name: integration.test # - run: chmod +x integration.test # # - run: ./integration.test -test.v -test.run=TestReplicaClient -replica-type gcs # env: # GOOGLE_APPLICATION_CREDENTIALS: /opt/gcp.json # LITESTREAM_GCS_BUCKET: integration.litestream.io # abs-integration-test: # name: Run Azure Blob Store Integration Tests # runs-on: ubuntu-latest # needs: build # steps: # - uses: actions/download-artifact@v2 # with: # name: integration.test # - run: chmod +x integration.test # # - run: ./integration.test -test.v -test.run=TestReplicaClient -replica-type abs # env: # LITESTREAM_ABS_ACCOUNT_NAME: ${{ secrets.LITESTREAM_ABS_ACCOUNT_NAME }} # LITESTREAM_ABS_ACCOUNT_KEY: ${{ secrets.LITESTREAM_ABS_ACCOUNT_KEY }} # LITESTREAM_ABS_BUCKET: integration # sftp-integration-test: # name: Run SFTP Integration Tests # runs-on: ubuntu-latest # needs: build # steps: # - name: Extract SSH key # run: 'echo "$LITESTREAM_SFTP_KEY" > /opt/id_ed25519' # shell: bash # env: # LITESTREAM_SFTP_KEY: ${{secrets.LITESTREAM_SFTP_KEY}} # # - name: Run sftp tests # run: go test -v -run=TestReplicaClient ./integration -replica-type sftp # env: # LITESTREAM_SFTP_HOST: ${{ secrets.LITESTREAM_SFTP_HOST }} # LITESTREAM_SFTP_USER: ${{ secrets.LITESTREAM_SFTP_USER }} # LITESTREAM_SFTP_KEY_PATH: /opt/id_ed25519 # LITESTREAM_SFTP_PATH: ${{ secrets.LITESTREAM_SFTP_PATH }}