diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml new file mode 100644 index 0000000..daadf21 --- /dev/null +++ b/.github/workflows/pr-checks.yml @@ -0,0 +1,52 @@ +name: PR Checks +on: + pull_request: + types: + - synchronize + - opened + +jobs: + build: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: '1.3' + + - name: Install dependencies + run: bun ci + + - name: Build + run: bun build:binary + + lint: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: '1.3' + + - name: Install dependencies + run: bun ci + + - name: Lint + run: bun run lint + + test: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: '1.3' + + - name: Install dependencies + run: bun ci + + - name: Run Unit tests + run: bun test \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ab80835..28580c7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,64 +1,30 @@ name: Release ynab-connect on: - pull_request: - types: - - synchronize - - opened push: - branches: - - main - + tags: + - 'v*' jobs: - build: + validate: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 - with: - bun-version: '1.3' - name: Install dependencies - run: bun ci + run: bun install - - name: Build - run: bun build:binary + - name: Run type checks + run: bun types - lint: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 + - name: Run linting + run: bun lint - - uses: oven-sh/setup-bun@v2 - with: - bun-version: '1.3' - - - name: Install dependencies - run: bun ci - - - name: Lint - run: bun run lint - - test: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - - uses: oven-sh/setup-bun@v2 - with: - bun-version: '1.3' - - - name: Install dependencies - run: bun ci - - - name: Run Unit tests + - name: Run tests run: bun test release: - needs: - - build - - lint - - test + needs: validate runs-on: ubuntu-22.04 name: release-container permissions: @@ -70,15 +36,7 @@ jobs: - name: Generate tag id: tag run: | - if [ "${{ github.event_name }}" == "pull_request" ]; then - echo "PR detected, using pre-release tag" - TAG="pr-${{ github.event.pull_request.number }}-$(date +'%Y%m%d%H%M%S')" - else - echo "No PR detected, using latest" - TAG="latest" - fi - echo "TAG=$TAG" >> $GITHUB_ENV - echo "tag=$TAG" >> $GITHUB_OUTPUT + echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: Log in to GitHub Container Registry uses: docker/login-action@v3 @@ -97,6 +55,21 @@ jobs: uses: docker/build-push-action@v6 with: push: true - tags: ghcr.io/simse/ynab-connect:${{ env.TAG }} + tags: | + ghcr.io/simse/ynab-connect:${{ env.TAG }} + ghcr.io/simse/ynab-connect:latest file: ./Dockerfile - platforms: linux/amd64,linux/arm64 \ No newline at end of file + platforms: linux/amd64,linux/arm64 + + create-release: + needs: release + runs-on: ubuntu-22.04 + name: create-github-release + permissions: + contents: write + steps: + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + generate_release_notes: true + make_latest: true \ No newline at end of file