Skip to content

ci: Use GITHUB_OUTPUT envvar instead of set-output command (#529) #409

ci: Use GITHUB_OUTPUT envvar instead of set-output command (#529)

ci: Use GITHUB_OUTPUT envvar instead of set-output command (#529) #409

name: Publish Docker image
on:
push:
branches: [ main ]
env:
DISTRO: ubuntu
REGISTRY: ghcr.io
LOCAL_IMAGE_NAME: ${{ github.event.repository.name }}/ubuntu
FBPCS_LOCAL_IMAGE_NAME: fbpcs/onedocker
REGISTRY_IMAGE_NAME: ghcr.io/${{ github.repository }}/ubuntu
TEST_REGISTRY_IMAGE_NAME: ghcr.io/${{ github.repository }}/test/ubuntu
PL_CONTAINER_NAME: e2e_pl_container
PA_CONTAINER_NAME: e2e_pa_container
VERSION_TAG: latest-build
COORDINATOR_IMAGE_DEV: ghcr.io/facebookresearch/fbpcs/coordinator:dev
jobs:
test_and_push:
runs-on: [self-hosted, e2e_test_runner]
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Build fbpcf docker image
run: |
./build-docker.sh -u
- name: Sanity check fbpcf library (v1)
timeout-minutes: 3
run: |
./run-sanity_check.sh -u -v 1
working-directory: fbpcf/tests/github/
- name: Sanity check fbpcf library (v2)
timeout-minutes: 3
run: |
./run-sanity_check.sh -u -v 2
working-directory: fbpcf/tests/github/
- name: Run Edit Distance E2E Test
timeout-minutes: 10
run: |
./run-edit_distance_validation.sh -u
working-directory: fbpcf/tests/github/
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Clone latest stable fbpcs
run: |
git clone https://github.com/facebookresearch/fbpcs
cd fbpcs
git reset --hard $(curl \
--header 'content-type: application/json' \
"https://api.github.com/repos/facebookresearch/fbpcs/actions/workflows/12965519/runs?per_page=1&status=success&branch=main" | jq \
".workflow_runs[0] .head_sha" | tr -d '"')
- name: Build fbpcs image (this uses the locally built fbpcf image as a dependency)
run: |
cd fbpcs
./build-docker.sh onedocker -t ${{ env.VERSION_TAG }}
- name: Tag fbpcf docker image
run: |
docker tag ${{ env.LOCAL_IMAGE_NAME }} ${{ env.REGISTRY_IMAGE_NAME }}:${{ github.sha }}
- name: Push fbpcf image to registry
run: |
docker push --all-tags ${{ env.REGISTRY_IMAGE_NAME }}
- name: Create version string
id: create_version
uses: paulhatch/[email protected]
with:
tag_prefix: "v"
major_pattern: "((MAJOR))"
minor_pattern: "((MINOR))"
format: "${major}.${minor}.${patch}-pre${increment}"
- name: Add tag to commit
id: tag_version
uses: mathieudutour/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
custom_tag: ${{ steps.create_version.outputs.version_tag }}
tag_prefix: ""
- name: Set output
id: vars
run: echo "ref=${GITHUB_REF##*/}" >> $GITHUB_OUTPUT
- name: Pull image for this commit from registry
run: |
docker pull ${{ env.REGISTRY_IMAGE_NAME }}:${{ github.sha }}
- name: Tag Docker image
run: |
docker tag ${{ env.REGISTRY_IMAGE_NAME }}:${{ github.sha }} ${{ env.REGISTRY_IMAGE_NAME }}:${{ steps.vars.outputs.ref }}
docker tag ${{ env.REGISTRY_IMAGE_NAME }}:${{ github.sha }} ${{ env.REGISTRY_IMAGE_NAME }}:${{ steps.create_version.outputs.major }}
docker tag ${{ env.REGISTRY_IMAGE_NAME }}:${{ github.sha }} ${{ env.REGISTRY_IMAGE_NAME }}:${{ steps.create_version.outputs.major }}.${{ steps.create_version.outputs.minor }}
docker tag ${{ env.REGISTRY_IMAGE_NAME }}:${{ github.sha }} ${{ env.REGISTRY_IMAGE_NAME }}:${{ steps.create_version.outputs.major }}.${{ steps.create_version.outputs.minor }}.${{ steps.create_version.outputs.patch }}
docker tag ${{ env.REGISTRY_IMAGE_NAME }}:${{ github.sha }} ${{ env.REGISTRY_IMAGE_NAME }}:${{ steps.create_version.outputs.version_tag }}
docker tag ${{ env.REGISTRY_IMAGE_NAME }}:${{ github.sha }} ${{ env.REGISTRY_IMAGE_NAME }}:latest
- name: Push Docker image
run: |
docker push --all-tags ${{ env.REGISTRY_IMAGE_NAME }}
- name: Create release
uses: "actions/create-release@v1"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
release_name: ${{ steps.create_version.outputs.version_tag }}
tag_name: ${{ steps.create_version.outputs.version_tag }}
- name: Cleanup
run: |
# remove all images
docker image prune -af
# stop and remove all containers
docker kill $(docker ps -q) || echo "No running containers to stop."
docker rm $(docker ps -a -q) || echo "No containers to delete."