name: ci on: [ push, pull_request ] jobs: test: name: ${{ matrix.config.display-name }} runs-on: ubuntu-latest strategy: matrix: config: - { display-name: 'test (cpu)', docker-file: 'Dockerfile.cpu', image-slug: 'facefusion/facefusion:3.6.1-cpu' } - { display-name: 'test (cuda)', docker-file: 'Dockerfile.cuda', image-slug: 'facefusion/facefusion:3.6.1-cuda' } - { display-name: 'test (tensorrt)', docker-file: 'Dockerfile.tensorrt', image-slug: 'facefusion/facefusion:3.6.1-tensorrt' } - { display-name: 'test (rocm)', docker-file: 'Dockerfile.rocm', image-slug: 'facefusion/facefusion:3.6.1-rocm' } steps: - name: Checkout uses: actions/checkout@v4 - name: Build run: docker build -f ${{ matrix.config.docker-file }} -t ${{ matrix.config.image-slug }} . - name: Run run: docker run -d ${{ matrix.config.image-slug }} - name: Validate run: docker ps | grep -q ${{ matrix.config.image-slug }} deploy: name: ${{ matrix.config.display-name }} if: github.ref == 'refs/heads/master' needs: test runs-on: ubuntu-latest strategy: matrix: config: - { display-name: 'deploy (cpu)', docker-file: 'Dockerfile.cpu', image-slug: 'facefusion/facefusion:3.6.1-cpu' } - { display-name: 'deploy (cuda)', docker-file: 'Dockerfile.cuda', image-slug: 'facefusion/facefusion:3.6.1-cuda' } - { display-name: 'deploy (tensorrt)', docker-file: 'Dockerfile.tensorrt', image-slug: 'facefusion/facefusion:3.6.1-tensorrt' } - { display-name: 'deploy (rocm)', docker-file: 'Dockerfile.rocm', image-slug: 'facefusion/facefusion:3.6.1-rocm' } steps: - name: Login uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Checkout uses: actions/checkout@v4 - name: Build run: docker build -f ${{ matrix.config.docker-file }} -t ${{ matrix.config.image-slug }} . - name: Deploy run: docker push ${{ matrix.config.image-slug }} - name: Logout run: docker logout