44 release :
55 types : [published]
66 workflow_dispatch :
7- description : " Manually publish release"
87
98jobs :
109 build-publish :
1110 name : Build and Publish
1211 runs-on : ubuntu-latest
12+ environment : pypi
13+ permissions :
14+ id-token : write
15+ contents : read
1316 steps :
14- - uses : actions/checkout@v3
15- - uses : actions/setup-python@v3
16- - uses : snok/install-poetry@v1
17- with :
18- virtualenvs-in-project : true
19- - name : " Build"
20- run : |
21- poetry build --no-interaction
22- - id : publish
23- name : " Publish"
24- run : |
25- poetry config pypi-token.pypi ${{ secrets.PYPI_API_TOKEN }}
26- poetry publish
27- export PYQUIL_TAG_VERSION=$(poetry version --short)
28- export PYQUIL_TAG_LATEST=$([[ "$PYQUIL_TAG_VERSION" =~ ^[0-9]+[.][0-9]+[.][0-9]+$ ]] && echo latest || echo)
29- export PYQUIL_TAG_RC=$([[ "$PYQUIL_TAG_VERSION" =~ ^[0-9]+[.][0-9]+[.][0-9]+-rc[.][0-9]+$ ]] && echo rc || echo)
30- echo "PYQUIL_TAG_VERSION=$PYQUIL_TAG_VERSION" >> "$GITHUB_OUTPUT"
31- echo "PYQUIL_TAG_LATEST=$PYQUIL_TAG_LATEST" >> "$GITHUB_OUTPUT"
32- echo "PYQUIL_TAG_RC=$PYQUIL_TAG_RC" >> "$GITHUB_OUTPUT"
17+ - uses : actions/checkout@v6
18+ - uses : actions/setup-python@v6
19+ with :
20+ python-version : ' 3.12'
21+ - uses : snok/install-poetry@v1
22+ with :
23+ virtualenvs-in-project : true
24+ - name : " Build"
25+ run : |
26+ poetry build --no-interaction
27+ - name : Publish to PyPI
28+ uses : pypa/gh-action-pypi-publish@release/v1
29+ - id : version
30+ name : " Get version info"
31+ run : |
32+ export PYQUIL_TAG_VERSION=$(poetry version --short)
33+ export PYQUIL_TAG_LATEST=$([[ "$PYQUIL_TAG_VERSION" =~ ^[0-9]+[.][0-9]+[.][0-9]+$ ]] && echo latest || echo)
34+ export PYQUIL_TAG_RC=$([[ "$PYQUIL_TAG_VERSION" =~ ^[0-9]+[.][0-9]+[.][0-9]+-rc[.][0-9]+$ ]] && echo rc || echo)
35+ echo "PYQUIL_TAG_VERSION=$PYQUIL_TAG_VERSION" >> "$GITHUB_OUTPUT"
36+ echo "PYQUIL_TAG_LATEST=$PYQUIL_TAG_LATEST" >> "$GITHUB_OUTPUT"
37+ echo "PYQUIL_TAG_RC=$PYQUIL_TAG_RC" >> "$GITHUB_OUTPUT"
3338 outputs :
34- PYQUIL_TAG_VERSION : ${{ steps.publish .outputs.PYQUIL_TAG_VERSION }}
35- PYQUIL_TAG_LATEST : ${{ steps.publish .outputs.PYQUIL_TAG_LATEST }}
36- PYQUIL_TAG_RC : ${{ steps.publish .outputs.PYQUIL_TAG_RC }}
39+ PYQUIL_TAG_VERSION : ${{ steps.version .outputs.PYQUIL_TAG_VERSION }}
40+ PYQUIL_TAG_LATEST : ${{ steps.version .outputs.PYQUIL_TAG_LATEST }}
41+ PYQUIL_TAG_RC : ${{ steps.version .outputs.PYQUIL_TAG_RC }}
3742
3843 build-publish-grpc-web :
3944 name : Build and Publish (pyquil-grpc-web)
4045 runs-on : ubuntu-latest
46+ environment : pypi
4147 permissions :
4248 id-token : write
4349 contents : read
4450 steps :
45- - uses : actions/checkout@v3
46- - uses : actions/setup-python@v3
47- - uses : snok/install-poetry@v1
48- with :
49- virtualenvs-in-project : true
50- - name : Patch package metadata for grpc-web
51- run : |
52- pip install toml
53- python scripts/ci_publish_grpc_web.py
54- - name : Poetry Build
55- run : |
56- poetry build --no-interaction
57- - name : Upload wheels as artifacts
58- uses : actions/upload-artifact@v2
59- with :
60- name : wheels
61- path : dist
62- - name : Mint token
63- id : mint
64- uses : tschm/token-mint-action@v1.0.3
65- - name : Publish the package with poetry
66- run : |
67- poetry publish -u __token__ -p '${{ steps.mint.outputs.api-token }}'
51+ - uses : actions/checkout@v6
52+ - uses : actions/setup-python@v6
53+ with :
54+ python-version : ' 3.12'
55+ - uses : snok/install-poetry@v1
56+ with :
57+ virtualenvs-in-project : true
58+ - name : Patch package metadata for grpc-web
59+ run : |
60+ pip install toml
61+ python scripts/ci_publish_grpc_web.py
62+ - name : Poetry Build
63+ run : |
64+ poetry build --no-interaction
65+ - name : Upload wheels as artifacts
66+ uses : actions/upload-artifact@v6
67+ with :
68+ name : wheels
69+ path : dist
70+ - name : Publish to PyPI
71+ uses : pypa/gh-action-pypi-publish@release/v1
6872
6973 docker-publish :
7074 name : Docker Publish
7882 # Determine the tags to publish based on the release tag
7983 - name : Docker Metadata
8084 id : meta
81- uses : docker/metadata-action@v4
85+ uses : docker/metadata-action@v5
8286 with :
8387 images : |
8488 ${{ vars.DOCKER_IMAGE_NAME }}
8892 type=raw,value=${{ env.PYQUIL_TAG_RC }},enable=${{ env.PYQUIL_TAG_RC != '' }}
8993 # Checkout is needed to use the path context: .
9094 - name : Checkout
91- uses : actions/checkout@v3
95+ uses : actions/checkout@v6
9296 - name : Build and Test
93- uses : docker/build-push-action@v4
97+ uses : docker/build-push-action@v6
9498 with :
9599 context : .
96100 load : true
@@ -102,12 +106,12 @@ jobs:
102106 docker run --rm "${{ vars.DOCKER_IMAGE_NAME }}:test" python -c "from pyquil import get_qc"
103107 # Build and publish the image
104108 - name : Login to Docker Hub
105- uses : docker/login-action@v2
109+ uses : docker/login-action@v3
106110 with :
107111 username : ${{ secrets.DOCKERHUB_USERNAME }}
108112 password : ${{ secrets.DOCKERHUB_PASSWORD }}
109113 - name : Build and Push
110- uses : docker/build-push-action@v4
114+ uses : docker/build-push-action@v6
111115 with :
112116 context : .
113117 push : true
0 commit comments