name: PyPI Release # https://help.github.com/en/actions/reference/events-that-trigger-workflows on: # Trigger the workflow on push or pull request, but only for the master branch push: branches: [master, "release/*"] release: types: [created] jobs: # based on https://github.com/pypa/gh-action-pypi-publish build-package: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.7 - name: Install dependencies run: >- python -m pip install --user --upgrade setuptools wheel - name: Build packages run: | python setup.py sdist bdist_wheel ls -lh dist/ - uses: actions/upload-artifact@v2 with: name: pypi-packages-${{ github.sha }} path: dist - name: Upload to release if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release' uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: dist/* tag: ${{ github.ref }} asset_name: packages overwrite: false file_glob: true publish-package: runs-on: ubuntu-20.04 needs: build-package steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 with: name: pypi-packages-${{ github.sha }} path: dist - name: Show packages run: | ls -lh dist/ - name: Delay releasing if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release' uses: juliangruber/sleep-action@v1 with: time: 10m # We do this, since failures on test.pypi aren't that bad - name: Publish to Test PyPI if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release' uses: pypa/gh-action-pypi-publish@v1.4.1 with: user: __token__ password: ${{ secrets.test_pypi_password }} repository_url: https://test.pypi.org/legacy/ verbose: true - name: Publish distribution 📦 to PyPI if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release' uses: pypa/gh-action-pypi-publish@v1.4.1 with: user: __token__ password: ${{ secrets.pypi_password }} create-legacy-ckpt: runs-on: ubuntu-20.04 needs: [build-package, publish-package] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.7 # Note: This uses an internal pip API and may not always work # https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow - name: Cache pip uses: actions/cache@v2 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} restore-keys: ${{ runner.os }}-pip- - name: Install dependencies run: | pip install -r requirements.txt --find-links https://download.pytorch.org/whl/cpu/torch_stable.html --quiet pip install awscli - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY_ID }} aws-region: us-east-1 - uses: actions/download-artifact@v2 with: name: pypi-packages-${{ github.sha }} path: dist - name: Pull files from S3 run: | aws s3 cp --recursive s3://pl-public-data/legacy/checkpoints/ legacy/checkpoints/ # --acl public-read ls -l legacy/checkpoints/ - name: Generate checkpoint # if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release' run: | ls -lh dist/ pip install dist/*.whl pl_ver=$(python -c "import pytorch_lightning as pl ; print(pl.__version__)" 2>&1) # generate checkpoint to this version bash legacy/generate_checkpoints.sh $pl_ver - name: Push files to S3 run: | aws s3 sync legacy/checkpoints/ s3://pl-public-data/legacy/checkpoints/ cd legacy zip -r checkpoints.zip checkpoints aws s3 cp checkpoints.zip s3://pl-public-data/legacy/ --acl public-read